diff --git a/access-modifier-checker/src/it/extend-override/api/pom.xml b/access-modifier-checker/src/it/extend-override/api/pom.xml
new file mode 100644
index 0000000..1f691c9
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/api/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ test
+ extend-override
+ 1.0-SNAPSHOT
+
+ api
+
+
+ org.kohsuke
+ access-modifier-annotation
+ @project.version@
+
+
+
\ No newline at end of file
diff --git a/access-modifier-checker/src/it/extend-override/api/src/main/java/api/Api.java b/access-modifier-checker/src/it/extend-override/api/src/main/java/api/Api.java
new file mode 100644
index 0000000..02fd399
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/api/src/main/java/api/Api.java
@@ -0,0 +1,11 @@
+package api;
+
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+
+public class Api {
+ @Restricted(NoExternalUse.class)
+ public void notReallyPublic() {
+
+ }
+}
diff --git a/access-modifier-checker/src/it/extend-override/caller/pom.xml b/access-modifier-checker/src/it/extend-override/caller/pom.xml
new file mode 100644
index 0000000..9112823
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/caller/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ test
+ extend-override
+ 1.0-SNAPSHOT
+
+ caller
+
+
+ ${project.groupId}
+ api
+ ${project.version}
+
+
+
+
+
+ org.kohsuke
+ access-modifier-checker
+ @project.version@
+
+
+
+ enforce
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/access-modifier-checker/src/it/extend-override/caller/src/main/java/caller/Extender.java b/access-modifier-checker/src/it/extend-override/caller/src/main/java/caller/Extender.java
new file mode 100644
index 0000000..4db7761
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/caller/src/main/java/caller/Extender.java
@@ -0,0 +1,13 @@
+package caller;
+
+import api.Api;
+// TODO this is actually two tests, separate them when fixing
+public class Extender extends Api {
+ public void foo() {
+ notReallyPublic();
+ }
+
+ @Override
+ public void notReallyPublic() {
+ }
+}
diff --git a/access-modifier-checker/src/it/extend-override/invoker.properties b/access-modifier-checker/src/it/extend-override/invoker.properties
new file mode 100644
index 0000000..8b87cc7
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/invoker.properties
@@ -0,0 +1,2 @@
+invoker.goals=clean package
+invoker.buildResult = failure
diff --git a/access-modifier-checker/src/it/extend-override/pom.xml b/access-modifier-checker/src/it/extend-override/pom.xml
new file mode 100644
index 0000000..88487c7
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+ test
+ extend-override
+ 1.0-SNAPSHOT
+ pom
+
+ UTF-8
+
+
+ api
+ caller
+
+
+
+
+
+ maven-compiler-plugin
+ 3.10.1
+
+ 11
+
+
+
+
+
+
diff --git a/access-modifier-checker/src/it/extend-override/postbuild.groovy b/access-modifier-checker/src/it/extend-override/postbuild.groovy
new file mode 100644
index 0000000..b3d0b20
--- /dev/null
+++ b/access-modifier-checker/src/it/extend-override/postbuild.groovy
@@ -0,0 +1 @@
+assert new File(basedir, 'build.log').text.contains('api/Api.notReallyPublic()V must not be used')
diff --git a/access-modifier-checker/src/it/extend/api/pom.xml b/access-modifier-checker/src/it/extend/api/pom.xml
new file mode 100644
index 0000000..2bd0f26
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/api/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ test
+ extend
+ 1.0-SNAPSHOT
+
+ api
+
+
+ org.kohsuke
+ access-modifier-annotation
+ @project.version@
+
+
+
\ No newline at end of file
diff --git a/access-modifier-checker/src/it/extend/api/src/main/java/api/Api.java b/access-modifier-checker/src/it/extend/api/src/main/java/api/Api.java
new file mode 100644
index 0000000..02fd399
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/api/src/main/java/api/Api.java
@@ -0,0 +1,11 @@
+package api;
+
+import org.kohsuke.accmod.Restricted;
+import org.kohsuke.accmod.restrictions.NoExternalUse;
+
+public class Api {
+ @Restricted(NoExternalUse.class)
+ public void notReallyPublic() {
+
+ }
+}
diff --git a/access-modifier-checker/src/it/extend/caller/pom.xml b/access-modifier-checker/src/it/extend/caller/pom.xml
new file mode 100644
index 0000000..1713fba
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/caller/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ test
+ extend
+ 1.0-SNAPSHOT
+
+ caller
+
+
+ ${project.groupId}
+ api
+ ${project.version}
+
+
+
+
+
+ org.kohsuke
+ access-modifier-checker
+ @project.version@
+
+
+
+ enforce
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Extender.java b/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Extender.java
new file mode 100644
index 0000000..33eb9f3
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Extender.java
@@ -0,0 +1,4 @@
+package src.main.java.caller;
+
+public class Extender extends api.Api {
+}
diff --git a/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Outsider.java b/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Outsider.java
new file mode 100644
index 0000000..0667924
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/caller/src/main/java/caller/Outsider.java
@@ -0,0 +1,9 @@
+package src.main.java.caller;
+
+public class Outsider {
+
+ public void foo() {
+ new Extender().notReallyPublic();
+ }
+
+}
diff --git a/access-modifier-checker/src/it/extend/invoker.properties b/access-modifier-checker/src/it/extend/invoker.properties
new file mode 100644
index 0000000..8b87cc7
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/invoker.properties
@@ -0,0 +1,2 @@
+invoker.goals=clean package
+invoker.buildResult = failure
diff --git a/access-modifier-checker/src/it/extend/pom.xml b/access-modifier-checker/src/it/extend/pom.xml
new file mode 100644
index 0000000..65f7ddd
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+ test
+ extend
+ 1.0-SNAPSHOT
+ pom
+
+ UTF-8
+
+
+ api
+ caller
+
+
+
+
+
+ maven-compiler-plugin
+ 3.10.1
+
+ 11
+
+
+
+
+
+
diff --git a/access-modifier-checker/src/it/extend/postbuild.groovy b/access-modifier-checker/src/it/extend/postbuild.groovy
new file mode 100644
index 0000000..b3d0b20
--- /dev/null
+++ b/access-modifier-checker/src/it/extend/postbuild.groovy
@@ -0,0 +1 @@
+assert new File(basedir, 'build.log').text.contains('api/Api.notReallyPublic()V must not be used')