Repository: antlr/grammars-v4 (language: python)

Issue:
Old Maven tester broken
People are still using `mvn clean test` for quick sanity checks, but it looks like the top-level testing of the repo using "mvn clean test" fails:
```
$ mvn clean test
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for org.antlr.grammars:vba:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
[FATAL] Non-resolvable parent POM for org.antlr.grammars:vba7_1:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
[FATAL] Non-resolvable parent POM for org.antlr.grammars:vba7_1:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
 @
[ERROR] The build could not read 3 projects -> [Help 1]
[ERROR]
[ERROR]   The project org.antlr.grammars:vba:1.0-SNAPSHOT (C:\msys64\home\Kenne\issues\g4-4172\vba\vba6\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for org.antlr.grammars:vba:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10 -> [Help 2]
[ERROR]
[ERROR]   The project org.antlr.grammars:vba7_1:1.0-SNAPSHOT (C:\msys64\home\Kenne\issues\g4-4172\vba\vba_cc\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for org.antlr.grammars:vba7_1:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10 -> [Help 2]
[ERROR]
[ERROR]   The project org.antlr.grammars:vba7_1:1.0-SNAPSHOT (C:\msys64\home\Kenne\issues\g4-4172\vba\vba_like\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for org.antlr.grammars:vba7_1:1.0-SNAPSHOT: Could not find artifact org.antlr.grammars:grammarsv4:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException
07/26-09:13:35 ~/issues/g4-4172
```

But, it's not just vba breaking things. Looks like something changed in the maven tester so that sourceDirectory does not work, and apparently should not be set.

In addition, some of the names of the test are wrong. Many are named `khubla.com foobar grammar` as teverett wrote these, or people just copied the pom.xml and kept the `khubla.com` in the title. But it's unnecessary to repeat ownership/copyright of those in the pom.xml since the copyrights are in the  g4's or the readme.md's..


Discussion / hints:

Fix patch:
diff --git a/bcpl/pom.xml b/bcpl/pom.xml
index 9c76ada363..8443baea0f 100644
--- a/bcpl/pom.xml
+++ b/bcpl/pom.xml
@@ -3,14 +3,13 @@
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>bcpl</artifactId>
 	<packaging>jar</packaging>
-	<name>khubla.com BCPL grammar</name>
+	<name>BCPL grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-      <sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/bencoding/pom.xml b/bencoding/pom.xml
index 441bd88fd5..1e5009570e 100644
--- a/bencoding/pom.xml
+++ b/bencoding/pom.xml
@@ -10,7 +10,6 @@
         <version>1.0-SNAPSHOT</version>
     </parent>
     <build>
-        <sourceDirectory>Java</sourceDirectory>
         <plugins>
             <plugin>
                 <groupId>org.antlr</groupId>
diff --git a/bnf/examples/harvard.edu/readme.md b/bnf/examples/harvard.edu/readme.md
deleted file mode 100644
index 3abe817029..0000000000
--- a/bnf/examples/harvard.edu/readme.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Examples from https://cs61.seas.harvard.edu/site/2020/BNFGrammars/
-on October 26, 2023
\ No newline at end of file
diff --git a/bnf/examples/ics/readme.md b/bnf/examples/ics/readme.md
deleted file mode 100644
index 27572c7a54..0000000000
--- a/bnf/examples/ics/readme.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Examples from https://isaaccomputerscience.org/concepts/dsa_toc_bnf?examBoard=all&stage=all
-on October 26, 2023
\ No newline at end of file
diff --git a/bnf/examples/readme.md b/bnf/examples/readme.md
deleted file mode 100644
index 1d5b911c03..0000000000
--- a/bnf/examples/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-BNF for Scheme
-* Revised 5: https://people.csail.mit.edu/jaffer/r5rs_9.html
-* Revised 6: https://www.r6rs.org/ https://www.r6rs.org/final/html/r6rs/r6rs-Z-H-7.html#node_chap_4
-
-The Wikipedia description of BNF is given in wiki-bnf.bnf
diff --git a/bnf/pom.xml b/bnf/pom.xml
index b635fc4b6f..6a8fadfba2 100644
--- a/bnf/pom.xml
+++ b/bnf/pom.xml
@@ -18,7 +18,8 @@
 				<configuration>
 					<sourceDirectory>${basedir}</sourceDirectory>
 					<includes>
-					   <include>bnf.g4</include>
+					   <include>bnfLexer.g4</include>
+					   <include>bnfParser.g4</include>
 					</includes>
 					<visitor>true</visitor>
 					<listener>true</listener>
diff --git a/cobol85/pom.xml b/cobol85/pom.xml
index 2b56303a4e..d4810c3148 100644
--- a/cobol85/pom.xml
+++ b/cobol85/pom.xml
@@ -16,10 +16,8 @@
 				<artifactId>antlr4-maven-plugin</artifactId>
 				<version>${antlr.version}</version>
 				<configuration>
-					<sourceDirectory>${basedir}</sourceDirectory>
 					<includes>
 						<include>Cobol85.g4</include>
-						<include>Cobol85Preprocessor.g4</include>
 					</includes>
 					<visitor>true</visitor>
 					<listener>true</listener>
@@ -32,26 +30,6 @@
 					</execution>
 				</executions>
 			</plugin>
-			<plugin>
-				<groupId>com.khubla.antlr</groupId>
-				<artifactId>antlr4test-maven-plugin</artifactId>
-				<version>${antlr4test-maven-plugin.version}</version>
-				<configuration>
-					<verbose>false</verbose>
-					<showTree>false</showTree>
-					<entryPoint>startRule</entryPoint>
-					<grammarName>Cobol85</grammarName>
-					<packageName></packageName>
-					<exampleFiles>examples/</exampleFiles>
-				</configuration>
-				<executions>
-					<execution>
-						<goals>
-							<goal>test</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
 		</plugins>
 	</build>
 </project>
diff --git a/cpp/pom.xml b/cpp/pom.xml
index 6943d745ed..d9ae30adb2 100644
--- a/cpp/pom.xml
+++ b/cpp/pom.xml
@@ -9,7 +9,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/csharp/pom.xml b/csharp/pom.xml
index 473f067dd3..b3e488c864 100644
--- a/csharp/pom.xml
+++ b/csharp/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/databank/pom.xml b/databank/pom.xml
index be0fcfb98b..642dc8b8ac 100644
--- a/databank/pom.xml
+++ b/databank/pom.xml
@@ -3,14 +3,13 @@
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>databank</artifactId>
 	<packaging>jar</packaging>
-	<name>khubla.com databank grammar</name>
+	<name>databank grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/fortran/fortran77/desc.xml b/fortran/fortran77/desc.xml
index ca5b23321a..efc8e5495e 100644
--- a/fortran/fortran77/desc.xml
+++ b/fortran/fortran77/desc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <desc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../_scripts/desc.xsd">
    <antlr-version>^4.13.0</antlr-version>
-   <targets>Cpp;CSharp;Dart;Go;Java;JavaScript;PHP;Python3;TypeScript</targets>
+   <targets>Cpp;CSharp;Dart;Go;Java;JavaScript;PHP;Python3</targets>
 </desc>
diff --git a/fortran/fortran77/pom.xml b/fortran/fortran77/pom.xml
index 05b43352c4..a7195c8422 100644
--- a/fortran/fortran77/pom.xml
+++ b/fortran/fortran77/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/fortran/fortran90/pom.xml b/fortran/fortran90/pom.xml
index 8147ee4b39..5a5ae8a211 100644
--- a/fortran/fortran90/pom.xml
+++ b/fortran/fortran90/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/gdscript/pom.xml b/gdscript/pom.xml
index b56d30a812..0ab656f46e 100644
--- a/gdscript/pom.xml
+++ b/gdscript/pom.xml
@@ -3,7 +3,7 @@
     <modelVersion>4.0.0</modelVersion>
     <artifactId>gdscript</artifactId>
     <packaging>jar</packaging>
-    <name>Python3 grammar</name>
+    <name>GDScript grammar</name>
     <parent>
         <groupId>org.antlr.grammars</groupId>
         <artifactId>grammarsv4</artifactId>
@@ -14,7 +14,6 @@
         <src.dir>Java</src.dir>
     </properties>
     <build>
-        <sourceDirectory>${src.dir}</sourceDirectory>
         <plugins>
             <plugin>
                 <groupId>org.antlr</groupId>
diff --git a/haskell/pom.xml b/haskell/pom.xml
index 5fb040cae1..062900959b 100644
--- a/haskell/pom.xml
+++ b/haskell/pom.xml
@@ -9,11 +9,7 @@
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-		<sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/icon/pom.xml b/icon/pom.xml
index ef7047dc92..b469d226fc 100644
--- a/icon/pom.xml
+++ b/icon/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>icon</artifactId>
 	<packaging>jar</packaging>
-	<name>khubla.com icon grammar</name>
+	<name>icon grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
 		<artifactId>grammarsv4</artifactId>
@@ -38,7 +38,7 @@
 				<configuration>
 					<verbose>false</verbose>
 					<showTree>false</showTree>
-					<entryPoint>start</entryPoint>
+					<entryPoint>start_</entryPoint>
 					<grammarName>icon</grammarName>
 					<packageName></packageName>
 					<exampleFiles>examples/</exampleFiles>
diff --git a/javascript/javascript/pom.xml b/javascript/javascript/pom.xml
index 6ae257a1a8..8b493c0015 100644
--- a/javascript/javascript/pom.xml
+++ b/javascript/javascript/pom.xml
@@ -9,13 +9,8 @@
 		<artifactId>jsparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-    <properties>
-        <!-- location of java sources -->
-        <src.dir>Java</src.dir>
-    </properties>
 	<build>
-        <sourceDirectory>${src.dir}</sourceDirectory>
-        <plugins>
+	     <plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
 				<artifactId>antlr4-maven-plugin</artifactId>
diff --git a/javascript/jsx/pom.xml b/javascript/jsx/pom.xml
index 6968b24e39..02b1778cf9 100644
--- a/javascript/jsx/pom.xml
+++ b/javascript/jsx/pom.xml
@@ -9,13 +9,8 @@
 		<artifactId>jsparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-    <properties>
-        <!-- location of java sources -->
-        <src.dir>Java</src.dir>
-    </properties>
 	<build>
-        <sourceDirectory>${src.dir}</sourceDirectory>
-        <plugins>
+                <plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
 				<artifactId>antlr4-maven-plugin</artifactId>
diff --git a/javascript/typescript/pom.xml b/javascript/typescript/pom.xml
index 8938bcd602..a9b357095c 100644
--- a/javascript/typescript/pom.xml
+++ b/javascript/typescript/pom.xml
@@ -14,7 +14,6 @@
         <src.dir>Java</src.dir>
     </properties>
 	<build>
-        <sourceDirectory>Java</sourceDirectory>
         <plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/kirikiri-tjs/pom.xml b/kirikiri-tjs/pom.xml
index 8464b5c44c..e5b4173ece 100644
--- a/kirikiri-tjs/pom.xml
+++ b/kirikiri-tjs/pom.xml
@@ -9,12 +9,7 @@
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>  
-		<!-- location of java sources -->      
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-        <sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/lark/pom.xml b/lark/pom.xml
index fd3e911ded..c1ea36989a 100644
--- a/lark/pom.xml
+++ b/lark/pom.xml
@@ -39,7 +39,7 @@
 				<configuration>
 					<verbose>false</verbose>
 					<showTree>false</showTree>
-					<entryPoint>start</entryPoint>
+					<entryPoint>start_</entryPoint>
 					<grammarName>Lark</grammarName>
 					<packageName></packageName>
 					<exampleFiles>examples/</exampleFiles>
diff --git a/lua/desc.xml b/lua/desc.xml
index eb46af1b78..c38053ad26 100644
--- a/lua/desc.xml
+++ b/lua/desc.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <desc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../_scripts/desc.xsd">
-   <targets>Cpp;CSharp;Dart;Go;Java;JavaScript;Python3;TypeScript</targets>
+   <targets>Cpp;CSharp;Dart;Go;Java;JavaScript;Python3</targets>
 </desc>
diff --git a/lua/pom.xml b/lua/pom.xml
index 1839c20ad4..1f6465fedb 100644
--- a/lua/pom.xml
+++ b/lua/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/pegen/pom.xml b/pegen/pom.xml
index c9d1b0a023..4be5718ccd 100644
--- a/pegen/pom.xml
+++ b/pegen/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/php/pom.xml b/php/pom.xml
index fdc5c9e99f..418a7ae64a 100644
--- a/php/pom.xml
+++ b/php/pom.xml
@@ -9,12 +9,7 @@
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>
-		<!-- location of java sources -->
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-		<sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/pom.xml b/pom.xml
index 843705201c..ade6751a3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -165,7 +165,6 @@
 				<module>clojure</module>
 				<module>clu</module>
 				<module>cmake</module>
-				<module>cobol85</module>
 				<module>codeql</module>
 				<module>cookie</module>
 				<module>cpp</module>
diff --git a/python/python/pom.xml b/python/python/pom.xml
index 6f55df379a..08d52a1f4c 100644
--- a/python/python/pom.xml
+++ b/python/python/pom.xml
@@ -9,12 +9,7 @@
 		<artifactId>pythonparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>
-		<!-- location of java sources -->
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-		<sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/python/python2_7_18/pom.xml b/python/python2_7_18/pom.xml
index 62f9afc8ff..5315c0ab77 100644
--- a/python/python2_7_18/pom.xml
+++ b/python/python2_7_18/pom.xml
@@ -9,7 +9,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/python/python3/pom.xml b/python/python3/pom.xml
index fbc8f834cf..4e41f9f39e 100644
--- a/python/python3/pom.xml
+++ b/python/python3/pom.xml
@@ -9,12 +9,7 @@
 		<artifactId>pythonparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>
-		<!-- location of java sources -->
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-		<sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/python/python3_12_1/pom.xml b/python/python3_12_1/pom.xml
index 3b71e8e7b8..08dd34f0cc 100644
--- a/python/python3_12_1/pom.xml
+++ b/python/python3_12_1/pom.xml
@@ -9,7 +9,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/rexx/pom.xml b/rexx/pom.xml
index 8042dd771d..05d6ca6564 100644
--- a/rexx/pom.xml
+++ b/rexx/pom.xml
@@ -9,12 +9,7 @@
 		<artifactId>grammarsv4</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
-	<properties>
-		<!-- location of java sources -->
-		<src.dir>Java</src.dir>
-	</properties>
 	<build>
-		<sourceDirectory>${src.dir}</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/rust/pom.xml b/rust/pom.xml
index 779bc346f0..9b49d43d9e 100644
--- a/rust/pom.xml
+++ b/rust/pom.xml
@@ -10,27 +10,7 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>build-helper-maven-plugin</artifactId>
-				<version>3.4.0</version>
-				<executions>
-					<execution>
-						<id>add-source</id>
-						<phase>generate-sources</phase>
-						<goals>
-							<goal>add-source</goal>
-						</goals>
-						<configuration>
-							<sources>
-								<source>.</source>
-							</sources>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
 			<plugin>
 				<groupId>org.antlr</groupId>
 				<artifactId>antlr4-maven-plugin</artifactId>
diff --git a/sieve/pom.xml b/sieve/pom.xml
index 3dd9013c0a..9373126112 100644
--- a/sieve/pom.xml
+++ b/sieve/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>sieve</artifactId>
 	<packaging>jar</packaging>
-	<name>khubla.com Sieve grammar</name>
+	<name>Sieve grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
 		<artifactId>grammarsv4</artifactId>
@@ -38,7 +38,7 @@
 				<configuration>
 					<verbose>false</verbose>
 					<showTree>false</showTree>
-					<entryPoint>start</entryPoint>
+					<entryPoint>start_</entryPoint>
 					<grammarName>sieve</grammarName>
 					<packageName></packageName>
 					<exampleFiles>examples/</exampleFiles>
diff --git a/smtlibv2/pom.xml b/smtlibv2/pom.xml
index d44067857e..cd65f1c1ec 100644
--- a/smtlibv2/pom.xml
+++ b/smtlibv2/pom.xml
@@ -38,7 +38,7 @@
 				<configuration>
 					<verbose>false</verbose>
 					<showTree>false</showTree>
-					<entryPoint>start</entryPoint>
+					<entryPoint>start_</entryPoint>
 					<grammarName>SMTLIBv2</grammarName>
 					<packageName></packageName>
 					<exampleFiles>examples/</exampleFiles>
diff --git a/sql/postgresql/pom.xml b/sql/postgresql/pom.xml
index 46eadd7385..dadafbfa62 100644
--- a/sql/postgresql/pom.xml
+++ b/sql/postgresql/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-		<sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/vba/vba6/pom.xml b/vba/vba6/pom.xml
index 1755d56f1f..e7f1b42444 100644
--- a/vba/vba6/pom.xml
+++ b/vba/vba6/pom.xml
@@ -1,12 +1,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-	<artifactId>vba</artifactId>
+	<artifactId>vba6</artifactId>
 	<packaging>jar</packaging>
 	<name>VBA grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
-		<artifactId>grammarsv4</artifactId>
+		<artifactId>vbaparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
diff --git a/vba/vba_cc/pom.xml b/vba/vba_cc/pom.xml
index 54edefb931..00a688d0c9 100644
--- a/vba/vba_cc/pom.xml
+++ b/vba/vba_cc/pom.xml
@@ -1,12 +1,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-	<artifactId>vba7_1</artifactId>
+	<artifactId>vba_cc</artifactId>
 	<packaging>jar</packaging>
 	<name>VBA 7.1 grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
-		<artifactId>grammarsv4</artifactId>
+		<artifactId>vbaparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
@@ -18,8 +18,7 @@
 				<configuration>
 					<sourceDirectory>${basedir}</sourceDirectory>
 					<includes>
-					   <include>vbaLexer.g4</include>
-					   <include>vbaParser.g4</include>
+					   <include>vba_cc.g4</include>
 					</includes>
 					<visitor>true</visitor>
 					<listener>true</listener>
diff --git a/vba/vba_like/pom.xml b/vba/vba_like/pom.xml
index 96e449863b..f26d668aa5 100644
--- a/vba/vba_like/pom.xml
+++ b/vba/vba_like/pom.xml
@@ -1,12 +1,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-	<artifactId>vba7_1</artifactId>
+	<artifactId>vba_like</artifactId>
 	<packaging>jar</packaging>
 	<name>VBA 7.1 grammar</name>
 	<parent>
 		<groupId>org.antlr.grammars</groupId>
-		<artifactId>grammarsv4</artifactId>
+		<artifactId>vbaparent</artifactId>
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
diff --git a/wavefront/pom.xml b/wavefront/pom.xml
index 9a120d233d..0733f40024 100644
--- a/wavefront/pom.xml
+++ b/wavefront/pom.xml
@@ -38,7 +38,7 @@
 				<configuration>
 					<verbose>false</verbose>
 					<showTree>false</showTree>
-					<entryPoint>start</entryPoint>
+					<entryPoint>start_</entryPoint>
 					<grammarName>WavefrontOBJ</grammarName>
 					<packageName></packageName>
 					<exampleFiles>examples/</exampleFiles>
diff --git a/xpath/xpath20/pom.xml b/xpath/xpath20/pom.xml
index 4c1412c09f..17103b8bed 100644
--- a/xpath/xpath20/pom.xml
+++ b/xpath/xpath20/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-        <sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>
diff --git a/xpath/xpath31/pom.xml b/xpath/xpath31/pom.xml
index 00b963979f..9f75809fcf 100644
--- a/xpath/xpath31/pom.xml
+++ b/xpath/xpath31/pom.xml
@@ -10,7 +10,6 @@
 		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<build>
-        <sourceDirectory>Java</sourceDirectory>
 		<plugins>
 			<plugin>
 				<groupId>org.antlr</groupId>


Test patch:
diff --git a/less/Java/test/java/TestBase.java b/less/Java/test/java/TestBase.java
deleted file mode 100644
index 17f6e26cf9..0000000000
--- a/less/Java/test/java/TestBase.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-[The "MIT licence"]
-Copyright (c) 2014 Kyle Lee
-All rights reserved.
-*/
-
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.ATNConfigSet;
-import org.antlr.v4.runtime.atn.PredictionMode;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.NotNull;
-import org.antlr.v4.runtime.misc.Nullable;
-import org.antlr.v4.runtime.tree.ParseTree;
-import org.antlr.v4.runtime.tree.TerminalNode;
-import org.testng.Assert;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.List;
-
-public class TestBase
-{
-  protected void assertEqualsNoOrder(List actual, List expected)
-  {
-    Assert.assertEqualsNoOrder(actual.toArray(), expected.toArray(), "Not Equal Expected: " +  Arrays.toString(expected.toArray()) + " Actual: " + Arrays.toString(
-        actual.toArray()));
-  }
-
-  protected LessParser.StylesheetContext parse(String ... lines)
-  {
-    try
-    {
-      StringBuilder fileLines = new StringBuilder();
-      for (String line : lines)
-      {
-        fileLines.append(line);
-      }
-
-      ANTLRInputStream source = new ANTLRInputStream(new ByteArrayInputStream(fileLines.toString().getBytes()));
-
-      LessLexer lexer = new LessLexer(source);
-      TokenStream stream = new BufferedTokenStream(lexer);
-      LessParser par = new LessParser(stream);
-      par.getInterpreter().setPredictionMode(PredictionMode.LL_EXACT_AMBIG_DETECTION);
-
-      par.addErrorListener(new FailOnErrorListener());
-      return par.stylesheet();
-    }
-    catch (IOException e)
-    {
-      Assert.fail("Exception should not happen here", e);
-    }
-    return null;
-  }
-
-    private String getExpressionMap(ParseTree start, int tabs) {
-        if (start == null) {
-            return "";
-        }
-
-        StringBuilder bld = new StringBuilder();
-        if (TerminalNode.class.isAssignableFrom(start.getClass())) {
-            for (int t = 0; t < tabs; t++) {
-                bld.append("  ");
-            }
-            bld.append(start.getText());
-            bld.append("\n");
-
-        }
-        int count = start.getChildCount();
-        for (int i = 0; i < count; i++) {
-            ParseTree child = start.getChild(i);
-            for (int t = 0; t < tabs; t++) {
-                bld.append("  ");
-            }
-
-            bld.append(child.getClass().getSimpleName() + ":\n" + getExpressionMap(child, tabs + 1));
-        }
-        return bld.toString();
-    }
-
-  private class FailOnErrorListener implements ANTLRErrorListener
-  {
-    @Override
-    public void syntaxError(@NotNull Recognizer<?, ?> recognizer,
-                            @Nullable Object o,
-                            int i,
-                            int i2,
-                            @NotNull String s,
-                            @Nullable RecognitionException e)
-    {
-        Assert.fail("Syntax error in detection." + o);
-    }
-
-    @Override
-    public void reportAmbiguity(@NotNull Parser parser,
-                                @NotNull DFA dfa,
-                                int i,
-                                int i2,
-                                boolean b,
-                                @Nullable BitSet bitSet,
-                                @NotNull ATNConfigSet atnConfigs)
-    {
-      Assert.fail("Ambiguity error in detection.");
-
-    }
-
-    @Override
-    public void reportAttemptingFullContext(@NotNull Parser parser,
-                                            @NotNull DFA dfa,
-                                            int i,
-                                            int i2,
-                                            @Nullable BitSet bitSet,
-                                            @NotNull ATNConfigSet atnConfigs)
-    {
-      Assert.fail("Attempting full context error in detection.");
-
-    }
-
-    @Override
-    public void reportContextSensitivity(@NotNull Parser parser,
-                                         @NotNull DFA dfa,
-                                         int i,
-                                         int i2,
-                                         int i3,
-                                         @NotNull ATNConfigSet atnConfigs)
-    {
-      Assert.fail("Context sensitivity error in detection.");
-
-    }
-  }
-
-}
diff --git a/less/Java/test/java/TestBasicCss.java b/less/Java/test/java/TestBasicCss.java
deleted file mode 100644
index ef83c1109d..0000000000
--- a/less/Java/test/java/TestBasicCss.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- [The "MIT licence"]
- Copyright (c) 2014 Kyle Lee
- All rights reserved.
-*/
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-public class TestBasicCss extends TestBase
-{
-
-  @Test
-  public void testSimple()
-  {
-    String [] lines = {
-        "body {}",
-    };
-    Assert.assertEquals(getSelector(lines).selector(0).element(0).identifier().getText(), "body");
-  }
-
-  @Test
-  public void testIds()
-  {
-    String [] lines = {
-        "#id1 {}",
-    };
-    Assert.assertEquals(getSelector(lines).selector(0).element(0).identifier().getText(), "id1");
-  }
-
-  @Test
-  public void testClass()
-  {
-    String [] lines = {
-        ".cls {}",
-    };
-    Assert.assertEquals(getSelector(lines).selector(0).element(0).identifier().getText(), "cls");
-  }
-
-  @Test
-  public void testOneSelectorMultipleParts()
-  {
-    String [] lines = {
-        "body .cls {}",
-    };
-    LessParser.SelectorsContext context = getSelector(lines);
-    Assert.assertEquals(context.selector(0).element(0).getText(), "body");
-    Assert.assertEquals(context.selector(0).element(1).getText(), ".cls");
-  }
-
-  @Test
-  public void testMultipleSelectorsDifferentSelectors()
-  {
-    String [] lines = {
-        "body .cls, h1 {}",
-    };
-    LessParser.SelectorsContext context = getSelector(lines);
-    Assert.assertEquals(context.selector(0).element(0).identifier().getText(), "body");
-    Assert.assertEquals(context.selector(0).element(1).getText(), ".cls");
-
-    Assert.assertEquals(context.selector(1).element(0).getText(), "h1");
-  }
-
-  @Test
-  public void testMultipleSelectorsSameElement()
-  {
-    String [] lines = {
-        "body .cls, h1.cls1 {}",
-    };
-    LessParser.SelectorsContext context = getSelector(lines);
-    Assert.assertEquals(context.selector(0).element(0).identifier().getText(), "body");
-    Assert.assertEquals(context.selector(0).element(1).getText(), ".cls");
-
-    Assert.assertEquals(context.selector(1).element(0).getText(), "h1");
-    Assert.assertEquals(context.selector(1).element(1).getText(), ".cls1");
-
-  }
-
-  @Test
-  public void testMultipleSelectorsMix()
-  {
-    String [] lines = {
-        ".cls1 .cls2, .cls3, .cls4 > .cls5 {}",
-    };
-    LessParser.SelectorsContext context = getSelector(lines);
-    Assert.assertEquals(context.selector(0).element(0).getText(), ".cls1");
-    Assert.assertEquals(context.selector(0).element(1).getText(), ".cls2");
-
-    Assert.assertEquals(context.selector(1).element(0).getText(), ".cls3");
-
-    Assert.assertEquals(context.selector(2).element(0).getText(), ".cls4");
-
-    Assert.assertEquals(context.selector(2).selectorPrefix(0).getText(), ">");
-    Assert.assertEquals(context.selector(2).element(1).getText(), ".cls5");
-
-  }
-
-  @Test
-  public void testProperties()
-  {
-    String [] lines = {
-        "h1 {",
-        "  display: block",
-        "}",
-    };
-    LessParser.BlockContext context = parse(lines).statement(0).ruleset().block();
-    Assert.assertEquals(context.property(0).identifier().getText(), "display");
-    Assert.assertEquals(context.property(0).values().commandStatement(0).getText(), "block");
-  }
-
-  @Test
-  public void testPropertiesMultivalues()
-  {
-    String [] lines = {
-        "h1 {",
-        "  background: url('a'), 1px 2px",
-        "}",
-    };
-    LessParser.BlockContext context = parse(lines).statement(0).ruleset().block();
-    Assert.assertEquals(context.property(0).identifier().getText(), "background");
-
-    LessParser.ValuesContext val = context.property(0).values();
-    Assert.assertEquals(val.commandStatement(0).expression(0).url().Url().getText(), "'a'");
-    Assert.assertEquals(val.commandStatement(1).expression(0).measurement().Number().getText(), "1");
-    Assert.assertEquals(val.commandStatement(1).expression(0).measurement().Unit().getText(), "px");
-
-    Assert.assertEquals(val.commandStatement(1).expression(1).measurement().Number().getText(), "2");
-    Assert.assertEquals(val.commandStatement(1).expression(1).measurement().Unit().getText(), "px");
-
-  }
-
-  @Test
-  public void testPropertiesMultiLines()
-  {
-    String [] lines = {
-        "h1 {",
-        "  color: 1px;",
-        "  font-size: #fff",
-        "}",
-    };
-    LessParser.BlockContext context = parse(lines).statement(0).ruleset().block();
-
-    Assert.assertEquals(context.property(0).identifier().getText(), "color");
-    LessParser.ValuesContext val = context.property(0).values();
-    Assert.assertEquals(val.commandStatement(0).expression(0).measurement().Number().getText(), "1");
-    Assert.assertEquals(val.commandStatement(0).expression(0).measurement().Unit().getText(), "px");
-
-    Assert.assertEquals(context.property(1).identifier().getText(), "font-size");
-    val = context.property(1).values();
-    Assert.assertEquals(val.commandStatement(0).expression(0).Color().getText(), "#fff");
-
-  }
-
-  @Test
-  public void testPropertyMeasurement()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: 1;");
-    Assert.assertEquals(exp.measurement().Number().getText(), "1");
-    Assert.assertNull(exp.measurement().Unit());
-  }
-
-  @Test
-  public void testPropertyMeasurementAndUnit()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: 1px;");
-    Assert.assertEquals(exp.measurement().Number().getText(), "1");
-    Assert.assertEquals(exp.measurement().Unit().getText(), "px");
-  }
-
-  @Test
-  public void testPropertyShortColor()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: #fff;");
-    Assert.assertEquals(exp.Color().getText(), "#fff");
-  }
-
-  @Test
-  public void testPropertyLongColor()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: #ababab;");
-    Assert.assertEquals(exp.Color().getText(), "#ababab");
-  }
-
-  @Test
-  public void testPropertyIdentifier()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: solid;");
-    Assert.assertEquals(exp.identifier().getText(), "solid");
-  }
-
-  @Test
-  public void testPropertyUrlString()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: url(\"hello\");");
-    Assert.assertEquals(exp.url().Url().getText(), "\"hello\"");
-  }
-
-  @Test
-  public void testPropertyUrl()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: url(hello);");
-    Assert.assertEquals(exp.url().Url().getText(), "hello");
-  }
-
-  @Test
-  public void testPropertyString()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: \"hello\";");
-    Assert.assertEquals(exp.StringLiteral().getText(), "\"hello\"");
-  }
-
-  @Test
-  public void testPropertyVariable()
-  {
-    LessParser.ExpressionContext exp = createProperty("p1: @hello;");
-    Assert.assertEquals(exp.variableName().getText(), "@hello");
-  }
-
-  @Test
-  public void testVariableDeclaration()
-  {
-    String [] lines = {
-            "@name:body;"
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).variableDeclaration().variableName().Identifier().getText(), "name");
-    Assert.assertEquals(context.statement(0).variableDeclaration().values().commandStatement(0).getText(), "body");
-  }
-
-  @Test
-  public void testVariableReference()
-  {
-    String [] lines = {
-            "a{",
-            "  color:@linkColor;",
-            "}",
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).ruleset().block().property(0).values().commandStatement(0).expression(0).variableName().Identifier().getText(), "linkColor");
-  }
-
-  @Test
-  public void testVariableDualReference()
-  {
-    String [] lines = {
-            "a{color:@@linkColor;}"
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).ruleset().block().property(0).values().commandStatement(0).expression(0).variableName().variableName().Identifier().getText(), "linkColor");
-  }
-
-  @Test
-  public void testVariableInterpolation()
-  {
-    String [] lines = {
-        "p.@{name} > select2 {}"
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).ruleset().selectors().selector(0).element(0).identifier().getText(), "p");
-    Assert.assertEquals(context.statement(0).ruleset().selectors().selector(0).element(1).identifier().identifierVariableName()
-            .getText(), "name");
-
-    Assert.assertEquals(context.statement(0).ruleset().selectors().selector(0).element(2).getText(), "select2");
-  }
-
-  @Test
-  public void testInterpolationSpace()
-  {
-    String [] lines = {
-        "p #@{name} {}"
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).ruleset().selectors().selector(0).element(0).identifier().getText(), "p");
-    Assert.assertEquals(context.statement(0).ruleset().selectors().selector(0).element(1).identifier().identifierVariableName()
-                            .getText(), "name");
-  }
-
-  private LessParser.SelectorsContext getSelector( String ... lines)
-  {
-    LessParser.StylesheetContext context = parse(lines);
-    return context.statement(0).ruleset().selectors();
-  }
-
-  private LessParser.ExpressionContext createProperty(String ... lines)
-  {
-    String [] all = new String[lines.length + 2];
-    all[0] = "h1 {";
-    System.arraycopy(lines, 0, all, 1, lines.length);
-    all[all.length - 1] = "}";
-
-    LessParser.StylesheetContext styleContext = parse(all);
-    LessParser.BlockContext context = styleContext.statement(0).ruleset().block();
-    return context.property(0).values().commandStatement(0).expression(0);
-  }
-}
diff --git a/less/Java/test/java/TestImports.java b/less/Java/test/java/TestImports.java
deleted file mode 100644
index c1a103227a..0000000000
--- a/less/Java/test/java/TestImports.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- [The "MIT licence"]
- Copyright (c) 2014 Kyle Lee
- All rights reserved.
-*/
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-public class TestImports extends TestBase
-{
-  @Test
-  public void testImport()
-  {
-    LessParser.ReferenceUrlContext context = parseImport("@import \"hello\";");
-    Assert.assertEquals(context.StringLiteral().getText(), "\"hello\"");
-  }
-
-  @Test
-  public void testImportUrlString()
-  {
-    LessParser.ReferenceUrlContext context = parseImport("@import url(\"hello\");");
-    Assert.assertEquals(context.Url().getText(), "\"hello\"");
-  }
-
-  @Test
-  public void testImportUrlNonStrings()
-  {
-    LessParser.ReferenceUrlContext context = parseImport("@import url(hello);");
-    Assert.assertEquals(context.Url().getText(), "hello");
-  }
-
-  @Test
-  public void testImportUrlNonStringsSpace()
-  {
-    LessParser.ReferenceUrlContext context = parseImport("@import url(hello world);");
-    Assert.assertEquals(context.Url().getText(), "hello world");
-  }
-
-  @Test
-  public void testMultipleImports()
-  {
-    String [] lines = {
-        "@import url(hello world);",
-        "@import url(\"foobar\");",
-        "@import \"hi\";"
-
-    };
-    LessParser.StylesheetContext context = parse(lines);
-    Assert.assertEquals(context.statement(0).importDeclaration()
-                            .referenceUrl().Url().getText(), "hello world");
-    Assert.assertEquals(context.statement(1).importDeclaration()
-                            .referenceUrl().Url().getText(), "\"foobar\"");
-    Assert.assertEquals(context.statement(2).importDeclaration()
-                            .referenceUrl().StringLiteral().getText(), "\"hi\"");
-  }
-
-
-  private LessParser.ReferenceUrlContext parseImport(String ... lines)
-  {
-    LessParser.StylesheetContext context = parse(lines);
-    return context.statement(0).importDeclaration().referenceUrl();
-  }
-}
diff --git a/less/Java/test/java/TestMixins.java b/less/Java/test/java/TestMixins.java
deleted file mode 100644
index 0a2e660a80..0000000000
--- a/less/Java/test/java/TestMixins.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- [The "MIT licence"]
- Copyright (c) 2014 Kyle Lee
- All rights reserved.
-*/
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-public class TestMixins extends TestBase {
-
-    @Test
-    public void testMixinDef() {
-        String[] lines = {
-                "#name() {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().selectors().selector(0).getText(), "#name");
-    }
-
-    @Test
-    public void testMixinDefinitionWithParameters() {
-        String[] lines = {
-                "#name(@n1; @n2) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(0).variableName().Identifier().getText(), "n1");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(1).variableName().Identifier().getText(), "n2");
-    }
-
-    @Test
-    public void testMixinDefinitionWithParametersAndDefaultValue() {
-        String[] lines = {
-                "#name(@n1:blue; @n2:red) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(0).variableDeclaration().variableName().Identifier().getText(), "n1");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(0).variableDeclaration().values().getText(), "blue");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(1).variableDeclaration().variableName().Identifier().getText(), "n2");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(1).variableDeclaration().values().getText(), "red");
-    }
-
-    @Test
-    public void testMixinDefinitionWithEllipsis() {
-        String[] lines = {
-                "#name(...) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().Ellipsis().getText(), "...");
-    }
-
-    @Test
-    public void testMixinDefinitionWithParamAndEllipsis()
-    {
-        String [] lines = {
-                "#name(@param...) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinDefinitionParam(0).variableName().Identifier().getText(), "param");
-        Assert.assertEquals(context.statement(0).mixinDefinition().Ellipsis().getText(), "...");
-    }
-
-    @Test
-    public void testMixinDefinitionWithGuard() {
-        String[] lines = {
-                "#name(@a) when (lightness(@a) >= 50%) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(0).expression(0).identifier().getText(), "lightness");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(0).expression(0).values().commandStatement(0).expression(0).variableName().getText(), "@a");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().GTEQ().getText(), ">=");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(1).expression(0).measurement().Number().getText(), "50");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(1).expression(0).measurement().Unit().getText(), "%");
-    }
-
-    @Test
-    public void testMixinDefinitionWithGuardCondition1() {
-        String[] lines = {
-                "#name(@a) when (isnumber(@a)) and (@a > 0) {}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(0).expression(0).identifier().getText(), "isnumber");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(0).conditionStatement().commandStatement(0).expression(0).values().commandStatement(0).expression(0).variableName().getText(), "@a");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().AND(0).getText(), "and");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(1).conditionStatement().commandStatement(0).expression(0).variableName().getText(), "@a");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(1).conditionStatement().GT().getText(), ">");
-        Assert.assertEquals(context.statement(0).mixinDefinition().mixinGuard().conditions().condition(1).conditionStatement().commandStatement(1).expression(0).measurement().Number().getText(), "0");
-    }
-
-    @Test
-    public void testMixinRefererence() {
-        String[] lines = {
-                "#usemixin { .classmixin(); #idmixin(); #importantMixin()!important;}"
-        };
-        LessParser.StylesheetContext context = parse(lines);
-        Assert.assertEquals(context.statement(0).ruleset().block().mixinReference(0).selector().getText(), ".classmixin");
-        Assert.assertEquals(context.statement(0).ruleset().block().mixinReference(1).selector().getText(), "#idmixin");
-        Assert.assertEquals(context.statement(0).ruleset().block().mixinReference(2).IMPORTANT().getText(), "!important");
-    }
-
-    private LessParser.SelectorsContext getSelector(String... lines) {
-        LessParser.StylesheetContext context = parse(lines);
-        return context.statement(0).ruleset().selectors();
-    }
-
-    private LessParser.ExpressionContext createProperty(String... lines) {
-        String[] all = new String[lines.length + 2];
-        all[0] = "h1 {";
-        System.arraycopy(lines, 0, all, 1, lines.length);
-        all[all.length - 1] = "}";
-
-        LessParser.StylesheetContext styleContext = parse(all);
-        LessParser.BlockContext context = styleContext.statement(0).ruleset().block();
-        return context.property(0).values().commandStatement(0).expression(0);
-    }
-}