I actually prefer that you move all of the logic of `getAppClasspathForKey` and `getDefaultMRApplicationClasspath` into this method. Right now you have to jump a few levels to understand what's going on, and I think it'll be clearer if it's in one isolated place. (Same in getYarnAppClasspath)