Really, compileInternal should always compile to an InMemoryJarfile, and those who care should then write it to the filesystem.