diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/pom.xml
new file mode 100644
index 00000000000..20ee11bf958
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/pom.xml
@@ -0,0 +1,86 @@
+
+
+
+ 4.0.0
+
+ org.jetbrains.kotlin.examples
+ test-enable-extensions-kapt-allopen
+ 1.0-SNAPSHOT
+
+
+ 4.13.1
+ coffee.CoffeeApp
+ UTF-8
+ 1.8.255-SNAPSHOT
+
+
+
+
+ com.google.dagger
+ dagger
+ 2.9
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+ ${kotlin.version}
+ true
+
+
+
+ all-open
+
+
+
+
+
+
+ com.google.dagger
+ dagger-compiler
+ 2.9
+
+
+
+ src/main/kotlin
+ src/main/java
+
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-allopen
+ ${kotlin.version}
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ none
+ 1.6
+ 1.6
+
+
+
+
+
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/AllOpenTest.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/AllOpenTest.kt
new file mode 100644
index 00000000000..1c924f086a8
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/AllOpenTest.kt
@@ -0,0 +1,8 @@
+package coffee
+
+annotation class AllOpen
+
+@AllOpen
+class MyClass
+
+class MyClass2 : MyClass()
\ No newline at end of file
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeApp.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeApp.kt
new file mode 100755
index 00000000000..9e1d910ef48
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeApp.kt
@@ -0,0 +1,18 @@
+package coffee
+
+import dagger.Component
+import javax.inject.Singleton
+
+object CoffeeApp {
+ @Singleton
+ @Component(modules = arrayOf(DripCoffeeModule::class))
+ interface Coffee {
+ fun maker(): CoffeeMaker
+ }
+
+ @JvmStatic
+ fun main(args: Array) {
+ val coffee = DaggerCoffeeApp_Coffee.builder().build()
+ coffee.maker().brew()
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeMaker.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeMaker.kt
new file mode 100755
index 00000000000..58e9de6e830
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/CoffeeMaker.kt
@@ -0,0 +1,17 @@
+package coffee
+
+import dagger.Lazy
+import javax.inject.Inject
+
+class CoffeeMaker @Inject constructor(
+ private val heater: Lazy,
+ private val pump: Pump
+) {
+
+ fun brew() {
+ heater.get().on()
+ pump.pump()
+ println(" [_]P coffee! [_]P ")
+ heater.get().off()
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/DripCoffeeModule.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/DripCoffeeModule.kt
new file mode 100755
index 00000000000..a8c1dae2071
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/DripCoffeeModule.kt
@@ -0,0 +1,13 @@
+package coffee
+
+import dagger.Module
+import dagger.Provides
+import javax.inject.Singleton
+
+@Module(includes = arrayOf(PumpModule::class))
+class DripCoffeeModule {
+ @Provides @Singleton
+ fun provideHeater(): Heater {
+ return ElectricHeater()
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/ElectricHeater.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/ElectricHeater.kt
new file mode 100755
index 00000000000..6c1f1586a40
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/ElectricHeater.kt
@@ -0,0 +1,14 @@
+package coffee
+
+open class ElectricHeater : Heater {
+ override var isHot: Boolean = false
+
+ override fun on() {
+ println("~ ~ ~ heating ~ ~ ~")
+ this.isHot = true
+ }
+
+ override fun off() {
+ this.isHot = false
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Heater.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Heater.kt
new file mode 100755
index 00000000000..f2ec5dabcc8
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Heater.kt
@@ -0,0 +1,7 @@
+package coffee
+
+interface Heater {
+ fun on()
+ fun off()
+ val isHot: Boolean
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Pump.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Pump.kt
new file mode 100755
index 00000000000..5c454538984
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Pump.kt
@@ -0,0 +1,5 @@
+package coffee
+
+interface Pump {
+ fun pump()
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/PumpModule.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/PumpModule.kt
new file mode 100755
index 00000000000..a892e2b7700
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/PumpModule.kt
@@ -0,0 +1,10 @@
+package coffee
+
+import dagger.Binds
+import dagger.Module
+
+@Module
+abstract class PumpModule {
+ @Binds
+ abstract fun providePump(pump: Thermosiphon): Pump
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Thermosiphon.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Thermosiphon.kt
new file mode 100755
index 00000000000..09c84cff056
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/main/kotlin/Thermosiphon.kt
@@ -0,0 +1,12 @@
+package coffee
+
+import javax.inject.Inject
+
+class Thermosiphon @Inject
+constructor(private val heater: Heater) : Pump {
+ override fun pump() {
+ if (heater.isHot) {
+ println("=> => pumping => =>")
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/test/kotlin/hello/tests/ExampleTest.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/test/kotlin/hello/tests/ExampleTest.kt
new file mode 100644
index 00000000000..9b3f523e866
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/src/test/kotlin/hello/tests/ExampleTest.kt
@@ -0,0 +1,39 @@
+package hello.tests
+
+import coffee.*
+import dagger.Component
+import dagger.Module
+import dagger.Provides
+import junit.framework.TestCase
+import javax.inject.Singleton
+
+private var executed = false
+
+class ExampleTest : TestCase() {
+ @Singleton
+ @Component(modules = arrayOf(TestCoffeeModule::class))
+ interface Coffee {
+ fun maker(): CoffeeMaker
+ }
+
+ @Module(includes = arrayOf(PumpModule::class))
+ class TestCoffeeModule {
+ @Provides @Singleton
+ fun provideHeater(): Heater {
+ return object: ElectricHeater() {
+ override fun on() {
+ println("~ psh ~ psh ~ psh ~")
+ println("(from tests)")
+ executed = true
+ super.on()
+ }
+ }
+ }
+ }
+
+ fun testAssert() {
+ val coffee = DaggerExampleTest_Coffee.builder().build()
+ coffee.maker().brew()
+ assert(executed)
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/verify.bsh
new file mode 100644
index 00000000000..c4962df0334
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions-kapt-allopen/verify.bsh
@@ -0,0 +1,11 @@
+import java.io.*;
+
+File file = new File(basedir, "target/test-enable-extensions-kapt-allopen-1.0-SNAPSHOT.jar");
+if (!file.exists() || !file.isFile()) {
+ throw new FileNotFoundException("Could not find generated JAR: " + file);
+}
+
+File generatedFile = new File(basedir, "target/generated-sources/kapt/compile/coffee/CoffeeMaker_Factory.java");
+if (!generatedFile.exists() || !generatedFile.isFile()) {
+ throw new FileNotFoundException("Kapt was not executed, file is absent: " + generatedFile);
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/pom.xml
new file mode 100644
index 00000000000..95b0d1c05d5
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+
+ org.jetbrains.kotlin
+ test-enable-extensions
+ 1.0-SNAPSHOT
+
+
+
+ junit
+ junit
+ 4.13.1
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+
+
+
+
+ src/main/kotlin
+ src/test/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/main/kotlin/org/jetbrains/HelloWorld.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/main/kotlin/org/jetbrains/HelloWorld.kt
new file mode 100644
index 00000000000..51fff4c4038
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/main/kotlin/org/jetbrains/HelloWorld.kt
@@ -0,0 +1,10 @@
+package org.jetbrains
+
+
+fun main(args : Array) {
+ System.out?.println(getGreeting())
+}
+
+fun getGreeting() : String {
+ return "Hello, World!"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/test/java/org/jetbrains/HelloWorldJavaTest.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/test/java/org/jetbrains/HelloWorldJavaTest.java
new file mode 100644
index 00000000000..312e9ae713d
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/src/test/java/org/jetbrains/HelloWorldJavaTest.java
@@ -0,0 +1,13 @@
+package org.jetbrains;
+
+import org.junit.Test;
+
+import static junit.framework.Assert.assertEquals;
+
+public class HelloWorldJavaTest {
+
+ @Test
+ public void greeting() {
+ assertEquals("Hello, World!", org.jetbrains.HelloWorldKt.getGreeting());
+ }
+}
diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/verify.bsh
new file mode 100644
index 00000000000..6124024aabf
--- /dev/null
+++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-enable-extensions/verify.bsh
@@ -0,0 +1,6 @@
+import java.io.*;
+
+File file = new File(basedir, "target/test-enable-extensions-1.0-SNAPSHOT.jar");
+if (!file.exists() || !file.isFile()) {
+ throw new FileNotFoundException("Could not find generated JAR: " + file);
+}