kotlin model changes
diff --git a/kotlin/builder/integrationtests/KotlinBuilderTestCase.java b/kotlin/builder/integrationtests/KotlinBuilderTestCase.java
index cf23da1..f21119d 100644
--- a/kotlin/builder/integrationtests/KotlinBuilderTestCase.java
+++ b/kotlin/builder/integrationtests/KotlinBuilderTestCase.java
@@ -87,7 +87,7 @@
     builder.clear();
     builder.getInfoBuilder()
             .setLabel("//some/bogus:" + label)
-            .setKotlinModuleName("some_bogus_module")
+            .setModuleName("some_bogus_module")
             .setRuleKind("kt_jvm_library")
             .setToolchainInfo(
                 KotlinModel.KotlinToolchainInfo.newBuilder()
diff --git a/kotlin/builder/proto/BUILD b/kotlin/builder/proto/BUILD
index b16e4b6..d8d7109 100644
--- a/kotlin/builder/proto/BUILD
+++ b/kotlin/builder/proto/BUILD
@@ -13,7 +13,7 @@
 # limitations under the License.
 package(default_visibility=["//visibility:public"])
 # commented out till 0.16 is released. We aren't  prebuilding the libraries at the moment so it's fine.
-# TODO constrain the visibility  when fixing  the comments below as well
+# TODO constrain the visibility when fixing  the comments below as well
 #proto_library(
 #    name = "kotlin_model_proto",
 #    srcs = [":kotlin_model.proto"],
@@ -51,4 +51,4 @@
 java_import(
     name = "kotlin_model",
     jars = ["jars/libkotlin_model_proto-speed.jar"],
-)
\ No newline at end of file
+)
diff --git a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
index 1a74d68..80467f0 100755
--- a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
+++ b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
Binary files differ
diff --git a/kotlin/builder/proto/kotlin_model.proto b/kotlin/builder/proto/kotlin_model.proto
index a66b7d3..7b5bb38 100644
--- a/kotlin/builder/proto/kotlin_model.proto
+++ b/kotlin/builder/proto/kotlin_model.proto
@@ -68,25 +68,18 @@
 message CompilationTask {
     message Info {
         string label = 1;
-        // derived from label
-        string package = 2;
-        // derived from label
-        string target = 3;
-
-        string rule_kind = 4;
-        string kotlin_module_name = 5;
-
-        string passthrough_flags = 6;
-        KotlinToolchainInfo toolchain_info = 7;
-
-        CompilerPlugins plugins = 8;
-
-        // All of the plugin descriptors in the format kotlinc understands.
-        // +derived
-        repeated string encoded_plugin_descriptors = 9;
-
-        // Jars that the kotlin compiler will allow package private access to.
-        repeated string friend_paths = 10;
+        // The rule kind requesting the build.
+        string rule_kind = 2;
+        // The name of the module being compiled.
+        string module_name = 3;
+        // Flags to be passed straight through to the compiler.
+        string passthrough_flags = 4;
+        // Toolchain info for this build.
+        KotlinToolchainInfo toolchain_info = 5;
+        // Compiler plugin descriptors.
+        CompilerPlugins plugins = 6;
+        // Paths to Jars that the kotlin compiler will allow package private access to.
+        repeated string friend_paths = 7;
     }
 
     // Directories used by the builder.
@@ -114,28 +107,18 @@
     message Inputs {
         // The full classpath
         repeated string classpath = 1;
-        // The full joined classpath
-        // +derived
-        string joined_classpath = 2;
-        // Direct dependencies of the target.
-        map<string, string> direct_dependencies = 3;
-        // Indirect dependencies of the target.
-        map<string, string> indirect_dependencies = 4;
 
+        // Direct dependencies of the target.
+        map<string, string> direct_dependencies = 2;
+        // Indirect dependencies of the target.
+        map<string, string> indirect_dependencies = 3;
+
+        // Partitioned from the builder flags, expanding the source_jars.
+        repeated string kotlin_sources = 4;
         // Partitioned from the builder flags and by expanding the source_jars.
-        // +derived
-        repeated string kotlin_sources = 5;
-        // Partitioned from the builder flags and by expanding the source_jars.
-        // +derived
-        repeated string java_sources = 6;
-        // Created during annotation processing and partitioned from the generated_sources directory.
-        // +dervived
-        repeated string generated_kotlin_sources = 7;
-        // Created during annotation processing and partitioned from the generated_sources directory.
-        // +derived
-        repeated string generated_java_sources = 8;
+        repeated string java_sources = 5;
         // Jars containing additional sources.
-        repeated string source_jars = 9;
+        repeated string source_jars = 6;
     }
 
     Info info = 1;
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/TaskBuilder.kt b/kotlin/builder/src/io/bazel/kotlin/builder/TaskBuilder.kt
index 1746a8e..84d24fc 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/TaskBuilder.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/TaskBuilder.kt
@@ -24,9 +24,7 @@
 import javax.inject.Singleton
 
 @Singleton
-class TaskBuilder @Inject internal constructor(
-    private val pluginEncoder: KotlinCompilerPluginArgsEncoder
-) {
+class TaskBuilder @Inject internal constructor() {
     companion object {
         @JvmStatic
         private val jsonTypeRegistry = JsonFormat.TypeRegistry.newBuilder()
@@ -101,15 +99,12 @@
                 argMap.optional(JavaBuilderFlags.SOURCE_JARS.flag)?.also {
                     addAllSourceJars(it)
                 }
-
-
-                joinedClasspath = classpathList.joinToString(":")
             }
 
             with(root.infoBuilder) {
                 label = argMap.mandatorySingle(JavaBuilderFlags.TARGET_LABEL.flag)
                 ruleKind = argMap.mandatorySingle(JavaBuilderFlags.RULE_KIND.flag)
-                kotlinModuleName = argMap.mandatorySingle("--kotlin_module_name").also {
+                moduleName = argMap.mandatorySingle("--kotlin_module_name").also {
                     check(it.isNotBlank()) { "--kotlin_module_name should not be blank" }
                 }
                 passthroughFlags = argMap.optionalSingle("--kotlin_passthrough_flags")
@@ -124,16 +119,6 @@
                         it.build()
                     }
                 }
-
-                if (plugins.annotationProcessorsList.isNotEmpty()) {
-                    addAllEncodedPluginDescriptors(pluginEncoder.encode(root))
-                }
-
-                label.split(":").also {
-                    check(it.size == 2) { "the label ${root.info.label} is invalid" }
-                    `package` = it[0]
-                    target = it[1]
-                }
             }
             root.build()
         }
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JDepsGenerator.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JDepsGenerator.kt
index e5053f4..ddbab12 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JDepsGenerator.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JDepsGenerator.kt
@@ -21,6 +21,7 @@
 import io.bazel.kotlin.builder.CompilationException
 import io.bazel.kotlin.builder.CompilationStatusException
 import io.bazel.kotlin.builder.KotlinToolchain
+import io.bazel.kotlin.builder.utils.joinedClasspath
 import io.bazel.kotlin.builder.utils.resolveVerified
 import io.bazel.kotlin.builder.utils.rootCause
 import io.bazel.kotlin.model.KotlinModel
@@ -51,9 +52,10 @@
             } else {
                 ByteArrayOutputStream().use { out ->
                     PrintWriter(out).use { writer ->
+                        val joinedClasspath = command.inputs.joinedClasspath
                         val res = invoker.run(
                             arrayOf(
-                                "-cp", command.inputs.joinedClasspath,
+                                "-cp", joinedClasspath,
                                 command.outputs.jdeps),
                             writer)
                         out.toByteArray().inputStream().bufferedReader().readLines().let {
@@ -64,7 +66,7 @@
                                 JdepsParser.parse(
                                     command.info.label,
                                     command.outputs.jdeps,
-                                    command.inputs.joinedClasspath,
+                                    joinedClasspath,
                                     it,
                                     isKotlinImplicit
                                 )
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JavaCompiler.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JavaCompiler.kt
index 5f29bec..1fa912e 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JavaCompiler.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/JavaCompiler.kt
@@ -20,6 +20,7 @@
 import io.bazel.kotlin.builder.CompilationStatusException
 import io.bazel.kotlin.builder.KotlinToolchain
 import io.bazel.kotlin.builder.utils.addAll
+import io.bazel.kotlin.builder.utils.joinedClasspath
 import io.bazel.kotlin.model.KotlinModel.CompilationTask
 
 @ImplementedBy(DefaultJavaCompiler::class)
@@ -33,7 +34,7 @@
     override fun compile(command: CompilationTask) {
         val i = command.inputs
         val d = command.directories
-        if (i.javaSourcesList.isNotEmpty() || i.generatedJavaSourcesList.isNotEmpty()) {
+        if (i.javaSourcesList.isNotEmpty()) {
             val args = mutableListOf(
                 "-cp", "${d.classes}/:${d.temp}/:${i.joinedClasspath}",
                 "-d", d.classes
@@ -47,7 +48,6 @@
                     "-target", command.info.toolchainInfo.jvm.jvmTarget
                 )
                 it.addAll(i.javaSourcesList)
-                it.addAll(i.generatedJavaSourcesList)
                 it.toTypedArray()
             }
             javacInvoker.compile(args).takeIf { it != 0 }?.also { throw CompilationStatusException("javac failed", it) }
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinCompiler.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinCompiler.kt
index 8721c73..0c7ec10 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinCompiler.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinCompiler.kt
@@ -18,11 +18,14 @@
 import com.google.inject.ImplementedBy
 import com.google.inject.Inject
 import io.bazel.kotlin.builder.CompilationStatusException
+import io.bazel.kotlin.builder.KotlinCompilerPluginArgsEncoder
 import io.bazel.kotlin.builder.KotlinToolchain
 import io.bazel.kotlin.builder.utils.addAll
+import io.bazel.kotlin.builder.utils.joinedClasspath
 import io.bazel.kotlin.model.KotlinModel
 import java.io.ByteArrayInputStream
 import java.io.ByteArrayOutputStream
+import java.io.File
 import java.io.PrintStream
 
 @ImplementedBy(DefaultKotlinCompiler::class)
@@ -38,14 +41,15 @@
 // 2 is an internal error
 // 3 is the script execution error
 private class DefaultKotlinCompiler @Inject constructor(
-    val compiler: KotlinToolchain.KotlincInvoker
+    val compiler: KotlinToolchain.KotlincInvoker,
+    val pluginArgsEncoder: KotlinCompilerPluginArgsEncoder
 ) : KotlinCompiler {
     override fun runAnnotationProcessor(command: KotlinModel.CompilationTask): List<String> {
         check(command.info.plugins.annotationProcessorsList.isNotEmpty()) {
             "method called without annotation processors"
         }
         return getCommonArgs(command).also {
-            it.addAll(command.info.encodedPluginDescriptorsList)
+            it.addAll(pluginArgsEncoder.encode(command))
             it.addAll(command.inputs.kotlinSourcesList)
             it.addAll(command.inputs.javaSourcesList)
         }.let { invokeCompilePhase(it) }
@@ -64,11 +68,11 @@
             "-language-version", command.info.toolchainInfo.common.languageVersion,
             "-jvm-target", command.info.toolchainInfo.jvm.jvmTarget,
             // https://github.com/bazelbuild/rules_kotlin/issues/69: remove once jetbrains adds a flag for it.
-            "--friend-paths", command.info.friendPathsList.joinToString(":")
+            "--friend-paths", command.info.friendPathsList.joinToString(File.pathSeparator)
         )
 
         args
-            .addAll("-module-name", command.info.kotlinModuleName)
+            .addAll("-module-name", command.info.moduleName)
             .addAll("-d", command.directories.classes)
 
         command.info.passthroughFlags?.takeIf { it.isNotBlank() }?.also { args.addAll(it.split(" ")) }
@@ -78,9 +82,7 @@
     override fun compile(command: KotlinModel.CompilationTask): List<String> =
         with(getCommonArgs(command)) {
             addAll(command.inputs.javaSourcesList)
-            addAll(command.inputs.generatedJavaSourcesList)
             addAll(command.inputs.kotlinSourcesList)
-            addAll(command.inputs.generatedKotlinSourcesList)
             invokeCompilePhase(this)
         }
 
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
index 505e77b..e152033 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt
@@ -19,7 +19,7 @@
 import com.google.inject.Inject
 import com.google.inject.Singleton
 import io.bazel.kotlin.builder.CompilationStatusException
-import io.bazel.kotlin.builder.utils.expandWithGeneratedSources
+import io.bazel.kotlin.builder.utils.expandWithSources
 import io.bazel.kotlin.model.KotlinModel.CompilationTask
 import java.io.File
 import java.util.concurrent.TimeUnit
@@ -58,7 +58,7 @@
                     .filter { it.isFile }
                     .map { it.path }
                     .iterator()
-                    .let { command.expandWithGeneratedSources(it) }
+                    .let { command.expandWithSources(it) }
             } else {
                 command
             }
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/utils/TaskUtils.kt b/kotlin/builder/src/io/bazel/kotlin/builder/utils/TaskUtils.kt
index 2eb749d..55cfc0e 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/utils/TaskUtils.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/utils/TaskUtils.kt
@@ -15,31 +15,23 @@
  */
 package io.bazel.kotlin.builder.utils
 
-import io.bazel.kotlin.model.KotlinModel
+import io.bazel.kotlin.model.KotlinModel.CompilationTask
+import java.io.File
 
-
-fun KotlinModel.CompilationTask.expandWithSources(
+fun CompilationTask.expandWithSources(
     sources: Iterator<String>
-): KotlinModel.CompilationTask =
+): CompilationTask =
     updateBuilder { builder ->
         sources.partitionSources(
             { builder.inputsBuilder.addKotlinSources(it) },
             { builder.inputsBuilder.addJavaSources(it) })
     }
 
+val CompilationTask.Inputs.joinedClasspath: String get() = this.classpathList.joinToString(File.pathSeparator)
 
-fun KotlinModel.CompilationTask.expandWithGeneratedSources(
-    sources: Iterator<String>
-): KotlinModel.CompilationTask =
-    updateBuilder { builder ->
-        sources.partitionSources(
-            { builder.inputsBuilder.addGeneratedKotlinSources(it) },
-            { builder.inputsBuilder.addGeneratedJavaSources(it) })
-    }
-
-private fun KotlinModel.CompilationTask.updateBuilder(
-    init: (KotlinModel.CompilationTask.Builder) -> Unit
-): KotlinModel.CompilationTask =
+private fun CompilationTask.updateBuilder(
+    init: (CompilationTask.Builder) -> Unit
+): CompilationTask =
     toBuilder().let {
         init(it)
         it.build()