diff --git a/.gitignore b/.gitignore
index 89457a88..18d2ca6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1,4 @@
-bin/
target/
-build/
-lib/
-jit/
-*.ser
-*.gz
-*.jar
-*.lua
-*.out
-*.tar
-*.txt
-*.zip
-docs
-*.0
.classpath
.project
.settings/
diff --git a/luaj-core/pom.xml b/luaj-core/pom.xml
new file mode 100644
index 00000000..da0aa4ad
--- /dev/null
+++ b/luaj-core/pom.xml
@@ -0,0 +1,60 @@
+
+ 4.0.0
+
+
+ org.luaj
+ luaj-parent
+ 3.0-SNAPSHOT
+
+
+ luaj-core
+
+ luaj-core
+ Core code for LuaJ
+
+
+
+
+ com.helger.maven
+ ph-javacc-maven-plugin
+
+
+ generate-grammar
+ generate-sources
+
+ javacc
+
+
+ 1.8
+ true
+ org.luaj.vm2.parser
+ src/main/javacc
+ ${project.build.directory}/generated-sources/javacc
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+ ${project.build.directory}/generated-sources/javacc
+
+
+
+
+
+
+
+
+
diff --git a/src/core/org/luaj/vm2/Buffer.java b/luaj-core/src/main/java/org/luaj/vm2/Buffer.java
similarity index 100%
rename from src/core/org/luaj/vm2/Buffer.java
rename to luaj-core/src/main/java/org/luaj/vm2/Buffer.java
diff --git a/src/core/org/luaj/vm2/Globals.java b/luaj-core/src/main/java/org/luaj/vm2/Globals.java
similarity index 100%
rename from src/core/org/luaj/vm2/Globals.java
rename to luaj-core/src/main/java/org/luaj/vm2/Globals.java
diff --git a/src/core/org/luaj/vm2/LoadState.java b/luaj-core/src/main/java/org/luaj/vm2/LoadState.java
similarity index 100%
rename from src/core/org/luaj/vm2/LoadState.java
rename to luaj-core/src/main/java/org/luaj/vm2/LoadState.java
diff --git a/src/core/org/luaj/vm2/LocVars.java b/luaj-core/src/main/java/org/luaj/vm2/LocVars.java
similarity index 100%
rename from src/core/org/luaj/vm2/LocVars.java
rename to luaj-core/src/main/java/org/luaj/vm2/LocVars.java
diff --git a/src/core/org/luaj/vm2/Lua.java b/luaj-core/src/main/java/org/luaj/vm2/Lua.java
similarity index 100%
rename from src/core/org/luaj/vm2/Lua.java
rename to luaj-core/src/main/java/org/luaj/vm2/Lua.java
diff --git a/src/core/org/luaj/vm2/LuaBoolean.java b/luaj-core/src/main/java/org/luaj/vm2/LuaBoolean.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaBoolean.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaBoolean.java
diff --git a/src/core/org/luaj/vm2/LuaClosure.java b/luaj-core/src/main/java/org/luaj/vm2/LuaClosure.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaClosure.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaClosure.java
diff --git a/src/core/org/luaj/vm2/LuaDouble.java b/luaj-core/src/main/java/org/luaj/vm2/LuaDouble.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaDouble.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaDouble.java
diff --git a/src/core/org/luaj/vm2/LuaError.java b/luaj-core/src/main/java/org/luaj/vm2/LuaError.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaError.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaError.java
diff --git a/src/core/org/luaj/vm2/LuaFunction.java b/luaj-core/src/main/java/org/luaj/vm2/LuaFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaFunction.java
diff --git a/src/core/org/luaj/vm2/LuaInteger.java b/luaj-core/src/main/java/org/luaj/vm2/LuaInteger.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaInteger.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaInteger.java
diff --git a/src/core/org/luaj/vm2/LuaNil.java b/luaj-core/src/main/java/org/luaj/vm2/LuaNil.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaNil.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaNil.java
diff --git a/src/core/org/luaj/vm2/LuaNumber.java b/luaj-core/src/main/java/org/luaj/vm2/LuaNumber.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaNumber.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaNumber.java
diff --git a/src/core/org/luaj/vm2/LuaString.java b/luaj-core/src/main/java/org/luaj/vm2/LuaString.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaString.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaString.java
diff --git a/src/core/org/luaj/vm2/LuaTable.java b/luaj-core/src/main/java/org/luaj/vm2/LuaTable.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaTable.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaTable.java
diff --git a/src/core/org/luaj/vm2/LuaThread.java b/luaj-core/src/main/java/org/luaj/vm2/LuaThread.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaThread.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaThread.java
diff --git a/src/core/org/luaj/vm2/LuaUserdata.java b/luaj-core/src/main/java/org/luaj/vm2/LuaUserdata.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaUserdata.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaUserdata.java
diff --git a/src/core/org/luaj/vm2/LuaValue.java b/luaj-core/src/main/java/org/luaj/vm2/LuaValue.java
similarity index 100%
rename from src/core/org/luaj/vm2/LuaValue.java
rename to luaj-core/src/main/java/org/luaj/vm2/LuaValue.java
diff --git a/src/core/org/luaj/vm2/Metatable.java b/luaj-core/src/main/java/org/luaj/vm2/Metatable.java
similarity index 100%
rename from src/core/org/luaj/vm2/Metatable.java
rename to luaj-core/src/main/java/org/luaj/vm2/Metatable.java
diff --git a/src/core/org/luaj/vm2/NonTableMetatable.java b/luaj-core/src/main/java/org/luaj/vm2/NonTableMetatable.java
similarity index 100%
rename from src/core/org/luaj/vm2/NonTableMetatable.java
rename to luaj-core/src/main/java/org/luaj/vm2/NonTableMetatable.java
diff --git a/src/core/org/luaj/vm2/OrphanedThread.java b/luaj-core/src/main/java/org/luaj/vm2/OrphanedThread.java
similarity index 100%
rename from src/core/org/luaj/vm2/OrphanedThread.java
rename to luaj-core/src/main/java/org/luaj/vm2/OrphanedThread.java
diff --git a/src/core/org/luaj/vm2/Print.java b/luaj-core/src/main/java/org/luaj/vm2/Print.java
similarity index 100%
rename from src/core/org/luaj/vm2/Print.java
rename to luaj-core/src/main/java/org/luaj/vm2/Print.java
diff --git a/src/core/org/luaj/vm2/Prototype.java b/luaj-core/src/main/java/org/luaj/vm2/Prototype.java
similarity index 100%
rename from src/core/org/luaj/vm2/Prototype.java
rename to luaj-core/src/main/java/org/luaj/vm2/Prototype.java
diff --git a/src/core/org/luaj/vm2/TailcallVarargs.java b/luaj-core/src/main/java/org/luaj/vm2/TailcallVarargs.java
similarity index 100%
rename from src/core/org/luaj/vm2/TailcallVarargs.java
rename to luaj-core/src/main/java/org/luaj/vm2/TailcallVarargs.java
diff --git a/src/core/org/luaj/vm2/UpValue.java b/luaj-core/src/main/java/org/luaj/vm2/UpValue.java
similarity index 100%
rename from src/core/org/luaj/vm2/UpValue.java
rename to luaj-core/src/main/java/org/luaj/vm2/UpValue.java
diff --git a/src/core/org/luaj/vm2/Upvaldesc.java b/luaj-core/src/main/java/org/luaj/vm2/Upvaldesc.java
similarity index 100%
rename from src/core/org/luaj/vm2/Upvaldesc.java
rename to luaj-core/src/main/java/org/luaj/vm2/Upvaldesc.java
diff --git a/src/core/org/luaj/vm2/Varargs.java b/luaj-core/src/main/java/org/luaj/vm2/Varargs.java
similarity index 100%
rename from src/core/org/luaj/vm2/Varargs.java
rename to luaj-core/src/main/java/org/luaj/vm2/Varargs.java
diff --git a/src/core/org/luaj/vm2/WeakTable.java b/luaj-core/src/main/java/org/luaj/vm2/WeakTable.java
similarity index 100%
rename from src/core/org/luaj/vm2/WeakTable.java
rename to luaj-core/src/main/java/org/luaj/vm2/WeakTable.java
diff --git a/src/core/org/luaj/vm2/compiler/Constants.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/Constants.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/Constants.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/Constants.java
diff --git a/src/core/org/luaj/vm2/compiler/DumpState.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/DumpState.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/DumpState.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/DumpState.java
diff --git a/src/core/org/luaj/vm2/compiler/FuncState.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/FuncState.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/FuncState.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/FuncState.java
diff --git a/src/core/org/luaj/vm2/compiler/InstructionPtr.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/InstructionPtr.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/InstructionPtr.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/InstructionPtr.java
diff --git a/src/core/org/luaj/vm2/compiler/IntPtr.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/IntPtr.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/IntPtr.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/IntPtr.java
diff --git a/src/core/org/luaj/vm2/compiler/LexState.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/LexState.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/LexState.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/LexState.java
diff --git a/src/core/org/luaj/vm2/compiler/LuaC.java b/luaj-core/src/main/java/org/luaj/vm2/compiler/LuaC.java
similarity index 100%
rename from src/core/org/luaj/vm2/compiler/LuaC.java
rename to luaj-core/src/main/java/org/luaj/vm2/compiler/LuaC.java
diff --git a/src/core/org/luaj/vm2/lib/BaseLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/BaseLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/BaseLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/BaseLib.java
diff --git a/src/core/org/luaj/vm2/lib/Bit32Lib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/Bit32Lib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/Bit32Lib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/Bit32Lib.java
diff --git a/src/core/org/luaj/vm2/lib/CoroutineLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/CoroutineLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/CoroutineLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/CoroutineLib.java
diff --git a/src/core/org/luaj/vm2/lib/DebugLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/DebugLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/DebugLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/DebugLib.java
diff --git a/src/core/org/luaj/vm2/lib/IoLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/IoLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/IoLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/IoLib.java
diff --git a/src/core/org/luaj/vm2/lib/LibFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/LibFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/LibFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/LibFunction.java
diff --git a/src/core/org/luaj/vm2/lib/MathLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/MathLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java
diff --git a/src/core/org/luaj/vm2/lib/OneArgFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/OneArgFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/OneArgFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/OneArgFunction.java
diff --git a/src/core/org/luaj/vm2/lib/OsLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/OsLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/OsLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/OsLib.java
diff --git a/src/core/org/luaj/vm2/lib/PackageLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/PackageLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/PackageLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/PackageLib.java
diff --git a/src/core/org/luaj/vm2/lib/ResourceFinder.java b/luaj-core/src/main/java/org/luaj/vm2/lib/ResourceFinder.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/ResourceFinder.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/ResourceFinder.java
diff --git a/src/core/org/luaj/vm2/lib/StringLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/StringLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/StringLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/StringLib.java
diff --git a/src/core/org/luaj/vm2/lib/TableLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/TableLib.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/TableLib.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/TableLib.java
diff --git a/src/core/org/luaj/vm2/lib/TableLibFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/TableLibFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/TableLibFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/TableLibFunction.java
diff --git a/src/core/org/luaj/vm2/lib/ThreeArgFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/ThreeArgFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/ThreeArgFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/ThreeArgFunction.java
diff --git a/src/core/org/luaj/vm2/lib/TwoArgFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/TwoArgFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/TwoArgFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/TwoArgFunction.java
diff --git a/src/core/org/luaj/vm2/lib/VarArgFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/VarArgFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/VarArgFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/VarArgFunction.java
diff --git a/src/core/org/luaj/vm2/lib/ZeroArgFunction.java b/luaj-core/src/main/java/org/luaj/vm2/lib/ZeroArgFunction.java
similarity index 100%
rename from src/core/org/luaj/vm2/lib/ZeroArgFunction.java
rename to luaj-core/src/main/java/org/luaj/vm2/lib/ZeroArgFunction.java
diff --git a/grammar/Lua51.jj b/luaj-core/src/main/javacc/Lua51.jj
similarity index 100%
rename from grammar/Lua51.jj
rename to luaj-core/src/main/javacc/Lua51.jj
diff --git a/grammar/Lua52.jj b/luaj-core/src/main/javacc/Lua52.jj
similarity index 100%
rename from grammar/Lua52.jj
rename to luaj-core/src/main/javacc/Lua52.jj
diff --git a/test/lua/errors/abc.txt b/luaj-core/src/main/resources/.keep
similarity index 100%
rename from test/lua/errors/abc.txt
rename to luaj-core/src/main/resources/.keep
diff --git a/test/lua/errors/seektest.txt b/luaj-core/src/test/java/.keep
similarity index 100%
rename from test/lua/errors/seektest.txt
rename to luaj-core/src/test/java/.keep
diff --git a/luaj-core/src/test/resources/.keep b/luaj-core/src/test/resources/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-jme/pom.xml b/luaj-jme/pom.xml
new file mode 100644
index 00000000..f2a6c4c9
--- /dev/null
+++ b/luaj-jme/pom.xml
@@ -0,0 +1,34 @@
+
+ 4.0.0
+
+
+ org.luaj
+ luaj-parent
+ 3.0-SNAPSHOT
+
+
+ luaj-jme
+
+ luaj-jme
+ LuaJ for Java ME
+
+
+
+ org.luaj
+ luaj-core
+ ${project.version}
+
+
+ org.apache.bcel
+ bcel
+
+
+ com.github.mcpat.apistubs
+ cldc-1.1-stub
+ provided
+
+
+
+
diff --git a/src/jme/org/luaj/vm2/lib/jme/JmeIoLib.java b/luaj-jme/src/main/java/org/luaj/vm2/lib/jme/JmeIoLib.java
similarity index 100%
rename from src/jme/org/luaj/vm2/lib/jme/JmeIoLib.java
rename to luaj-jme/src/main/java/org/luaj/vm2/lib/jme/JmeIoLib.java
diff --git a/src/jme/org/luaj/vm2/lib/jme/JmePlatform.java b/luaj-jme/src/main/java/org/luaj/vm2/lib/jme/JmePlatform.java
similarity index 100%
rename from src/jme/org/luaj/vm2/lib/jme/JmePlatform.java
rename to luaj-jme/src/main/java/org/luaj/vm2/lib/jme/JmePlatform.java
diff --git a/luaj-jme/src/main/resources/.keep b/luaj-jme/src/main/resources/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-jme/src/test/java/.keep b/luaj-jme/src/test/java/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-jme/src/test/resources/.keep b/luaj-jme/src/test/resources/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-jse/pom.xml b/luaj-jse/pom.xml
new file mode 100644
index 00000000..bce22309
--- /dev/null
+++ b/luaj-jse/pom.xml
@@ -0,0 +1,72 @@
+
+ 4.0.0
+
+
+ org.luaj
+ luaj-parent
+ 3.0-SNAPSHOT
+
+
+ luaj-jse
+
+ luaj-jse
+ LuaJ for Java SE
+
+
+
+ org.luaj
+ luaj-core
+ ${project.version}
+
+
+ org.apache.bcel
+ bcel
+
+
+
+
+
+
+ com.helger.maven
+ ph-javacc-maven-plugin
+
+
+ generate-grammar
+ generate-sources
+
+ javacc
+
+
+ 1.8
+ true
+ org.luaj.vm2.parser
+ src/main/javacc
+ ${project.build.directory}/generated-sources/javacc
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+ ${project.build.directory}/generated-sources/javacc
+
+
+
+
+
+
+
+
+
diff --git a/src/jse/lua.java b/luaj-jse/src/main/java/lua.java
similarity index 100%
rename from src/jse/lua.java
rename to luaj-jse/src/main/java/lua.java
diff --git a/src/jse/luac.java b/luaj-jse/src/main/java/luac.java
similarity index 100%
rename from src/jse/luac.java
rename to luaj-jse/src/main/java/luac.java
diff --git a/src/jse/luajc.java b/luaj-jse/src/main/java/luajc.java
similarity index 100%
rename from src/jse/luajc.java
rename to luaj-jse/src/main/java/luajc.java
diff --git a/src/jse/org/luaj/vm2/ast/Block.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Block.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Block.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Block.java
diff --git a/src/jse/org/luaj/vm2/ast/Chunk.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Chunk.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Chunk.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Chunk.java
diff --git a/src/jse/org/luaj/vm2/ast/Exp.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Exp.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Exp.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Exp.java
diff --git a/src/jse/org/luaj/vm2/ast/FuncArgs.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/FuncArgs.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/FuncArgs.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/FuncArgs.java
diff --git a/src/jse/org/luaj/vm2/ast/FuncBody.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/FuncBody.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/FuncBody.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/FuncBody.java
diff --git a/src/jse/org/luaj/vm2/ast/FuncName.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/FuncName.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/FuncName.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/FuncName.java
diff --git a/src/jse/org/luaj/vm2/ast/Name.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Name.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Name.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Name.java
diff --git a/src/jse/org/luaj/vm2/ast/NameResolver.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/NameResolver.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/NameResolver.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/NameResolver.java
diff --git a/src/jse/org/luaj/vm2/ast/NameScope.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/NameScope.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/NameScope.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/NameScope.java
diff --git a/src/jse/org/luaj/vm2/ast/ParList.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/ParList.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/ParList.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/ParList.java
diff --git a/src/jse/org/luaj/vm2/ast/Stat.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Stat.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Stat.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Stat.java
diff --git a/src/jse/org/luaj/vm2/ast/Str.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Str.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Str.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Str.java
diff --git a/src/jse/org/luaj/vm2/ast/SyntaxElement.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/SyntaxElement.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/SyntaxElement.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/SyntaxElement.java
diff --git a/src/jse/org/luaj/vm2/ast/TableConstructor.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/TableConstructor.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/TableConstructor.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/TableConstructor.java
diff --git a/src/jse/org/luaj/vm2/ast/TableField.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/TableField.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/TableField.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/TableField.java
diff --git a/src/jse/org/luaj/vm2/ast/Variable.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Variable.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Variable.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Variable.java
diff --git a/src/jse/org/luaj/vm2/ast/Visitor.java b/luaj-jse/src/main/java/org/luaj/vm2/ast/Visitor.java
similarity index 100%
rename from src/jse/org/luaj/vm2/ast/Visitor.java
rename to luaj-jse/src/main/java/org/luaj/vm2/ast/Visitor.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/CoerceJavaToLua.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/CoerceJavaToLua.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/CoerceJavaToLua.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/CoerceJavaToLua.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/CoerceLuaToJava.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/CoerceLuaToJava.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/CoerceLuaToJava.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/CoerceLuaToJava.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaArray.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaArray.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaArray.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaArray.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaClass.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaClass.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaClass.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaClass.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaConstructor.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaConstructor.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaConstructor.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaConstructor.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaInstance.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaInstance.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaInstance.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaInstance.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaMember.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaMember.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaMember.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaMember.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaMethod.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaMethod.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JavaMethod.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JavaMethod.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseBaseLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseBaseLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseBaseLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseBaseLib.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseIoLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseIoLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseIoLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseIoLib.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseMathLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseMathLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseOsLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseOsLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseOsLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseOsLib.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JsePlatform.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JsePlatform.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JsePlatform.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JsePlatform.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseProcess.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseProcess.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseProcess.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseProcess.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/JseStringLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseStringLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/JseStringLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseStringLib.java
diff --git a/src/jse/org/luaj/vm2/lib/jse/LuajavaLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/LuajavaLib.java
similarity index 100%
rename from src/jse/org/luaj/vm2/lib/jse/LuajavaLib.java
rename to luaj-jse/src/main/java/org/luaj/vm2/lib/jse/LuajavaLib.java
diff --git a/src/jse/org/luaj/vm2/luajc/BasicBlock.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/BasicBlock.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/BasicBlock.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/BasicBlock.java
diff --git a/src/jse/org/luaj/vm2/luajc/JavaBuilder.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaBuilder.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/JavaBuilder.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaBuilder.java
diff --git a/src/jse/org/luaj/vm2/luajc/JavaGen.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaGen.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/JavaGen.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaGen.java
diff --git a/src/jse/org/luaj/vm2/luajc/JavaLoader.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaLoader.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/JavaLoader.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/JavaLoader.java
diff --git a/src/jse/org/luaj/vm2/luajc/LuaJC.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/LuaJC.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/LuaJC.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/LuaJC.java
diff --git a/src/jse/org/luaj/vm2/luajc/ProtoInfo.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/ProtoInfo.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/ProtoInfo.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/ProtoInfo.java
diff --git a/src/jse/org/luaj/vm2/luajc/UpvalInfo.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/UpvalInfo.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/UpvalInfo.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/UpvalInfo.java
diff --git a/src/jse/org/luaj/vm2/luajc/VarInfo.java b/luaj-jse/src/main/java/org/luaj/vm2/luajc/VarInfo.java
similarity index 100%
rename from src/jse/org/luaj/vm2/luajc/VarInfo.java
rename to luaj-jse/src/main/java/org/luaj/vm2/luajc/VarInfo.java
diff --git a/src/jse/org/luaj/vm2/parser/LuaParser.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParser.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/LuaParser.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParser.java
diff --git a/src/jse/org/luaj/vm2/parser/LuaParserConstants.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParserConstants.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/LuaParserConstants.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParserConstants.java
diff --git a/src/jse/org/luaj/vm2/parser/LuaParserTokenManager.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParserTokenManager.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/LuaParserTokenManager.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/LuaParserTokenManager.java
diff --git a/src/jse/org/luaj/vm2/parser/ParseException.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/ParseException.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/ParseException.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/ParseException.java
diff --git a/src/jse/org/luaj/vm2/parser/SimpleCharStream.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/SimpleCharStream.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/SimpleCharStream.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/SimpleCharStream.java
diff --git a/src/jse/org/luaj/vm2/parser/Token.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/Token.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/Token.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/Token.java
diff --git a/src/jse/org/luaj/vm2/parser/TokenMgrError.java b/luaj-jse/src/main/java/org/luaj/vm2/parser/TokenMgrError.java
similarity index 100%
rename from src/jse/org/luaj/vm2/parser/TokenMgrError.java
rename to luaj-jse/src/main/java/org/luaj/vm2/parser/TokenMgrError.java
diff --git a/src/jse/org/luaj/vm2/script/LuaScriptEngine.java b/luaj-jse/src/main/java/org/luaj/vm2/script/LuaScriptEngine.java
similarity index 100%
rename from src/jse/org/luaj/vm2/script/LuaScriptEngine.java
rename to luaj-jse/src/main/java/org/luaj/vm2/script/LuaScriptEngine.java
diff --git a/src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java b/luaj-jse/src/main/java/org/luaj/vm2/script/LuaScriptEngineFactory.java
similarity index 100%
rename from src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java
rename to luaj-jse/src/main/java/org/luaj/vm2/script/LuaScriptEngineFactory.java
diff --git a/src/jse/org/luaj/vm2/script/LuajContext.java b/luaj-jse/src/main/java/org/luaj/vm2/script/LuajContext.java
similarity index 100%
rename from src/jse/org/luaj/vm2/script/LuajContext.java
rename to luaj-jse/src/main/java/org/luaj/vm2/script/LuajContext.java
diff --git a/src/jse/org/luaj/vm2/server/DefaultLauncher.java b/luaj-jse/src/main/java/org/luaj/vm2/server/DefaultLauncher.java
similarity index 100%
rename from src/jse/org/luaj/vm2/server/DefaultLauncher.java
rename to luaj-jse/src/main/java/org/luaj/vm2/server/DefaultLauncher.java
diff --git a/src/jse/org/luaj/vm2/server/Launcher.java b/luaj-jse/src/main/java/org/luaj/vm2/server/Launcher.java
similarity index 100%
rename from src/jse/org/luaj/vm2/server/Launcher.java
rename to luaj-jse/src/main/java/org/luaj/vm2/server/Launcher.java
diff --git a/src/jse/org/luaj/vm2/server/LuajClassLoader.java b/luaj-jse/src/main/java/org/luaj/vm2/server/LuajClassLoader.java
similarity index 100%
rename from src/jse/org/luaj/vm2/server/LuajClassLoader.java
rename to luaj-jse/src/main/java/org/luaj/vm2/server/LuajClassLoader.java
diff --git a/grammar/LuaParser.jj b/luaj-jse/src/main/javacc/LuaParser.jj
similarity index 100%
rename from grammar/LuaParser.jj
rename to luaj-jse/src/main/javacc/LuaParser.jj
diff --git a/src/jse/META-INF/services/javax.script.ScriptEngineFactory b/luaj-jse/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
similarity index 100%
rename from src/jse/META-INF/services/javax.script.ScriptEngineFactory
rename to luaj-jse/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
diff --git a/luaj-jse/src/test/java/.keep b/luaj-jse/src/test/java/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-jse/src/test/resources/.keep b/luaj-jse/src/test/resources/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-test/abc.txt b/luaj-test/abc.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-test/pom.xml b/luaj-test/pom.xml
new file mode 100644
index 00000000..b3a29f6c
--- /dev/null
+++ b/luaj-test/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+
+
+ org.luaj
+ luaj-parent
+ 3.0-SNAPSHOT
+
+
+ luaj-test
+
+ LuaJ-Tests
+ Testsuites for LuaJ
+
+
+
+ org.luaj
+ luaj-jme
+ ${project.version}
+
+
+ org.luaj
+ luaj-jse
+ ${project.version}
+
+
+ junit
+ junit
+ test
+
+
+
+
diff --git a/luaj-test/seektest.txt b/luaj-test/seektest.txt
new file mode 100644
index 00000000..04dda424
--- /dev/null
+++ b/luaj-test/seektest.txt
@@ -0,0 +1 @@
+abc1.25abcabc1.25abcabc1.251.251.25abc1.25abc1.25abc1.25abc1.25
\ No newline at end of file
diff --git a/luaj-test/src/main/java/.keep b/luaj-test/src/main/java/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/luaj-test/src/main/resources/.keep b/luaj-test/src/main/resources/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/test/java/org/luaj/luajc/SampleMainChunk.java b/luaj-test/src/test/java/org/luaj/luajc/SampleMainChunk.java
similarity index 100%
rename from test/java/org/luaj/luajc/SampleMainChunk.java
rename to luaj-test/src/test/java/org/luaj/luajc/SampleMainChunk.java
diff --git a/test/java/org/luaj/luajc/TestLuaJ.java b/luaj-test/src/test/java/org/luaj/luajc/TestLuaJ.java
similarity index 100%
rename from test/java/org/luaj/luajc/TestLuaJ.java
rename to luaj-test/src/test/java/org/luaj/luajc/TestLuaJ.java
diff --git a/test/java/org/luaj/luajc/TestLuaJC.java b/luaj-test/src/test/java/org/luaj/luajc/TestLuaJC.java
similarity index 100%
rename from test/java/org/luaj/luajc/TestLuaJC.java
rename to luaj-test/src/test/java/org/luaj/luajc/TestLuaJC.java
diff --git a/test/junit/org/luaj/vm2/AllTests.java b/luaj-test/src/test/java/org/luaj/vm2/AllTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/AllTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/AllTests.java
diff --git a/test/junit/org/luaj/vm2/BufferedStreamTest.java b/luaj-test/src/test/java/org/luaj/vm2/BufferedStreamTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/BufferedStreamTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/BufferedStreamTest.java
diff --git a/test/junit/org/luaj/vm2/CompatibiltyTest.java b/luaj-test/src/test/java/org/luaj/vm2/CompatibiltyTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/CompatibiltyTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/CompatibiltyTest.java
diff --git a/test/junit/org/luaj/vm2/ErrorsTest.java b/luaj-test/src/test/java/org/luaj/vm2/ErrorsTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/ErrorsTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/ErrorsTest.java
diff --git a/test/junit/org/luaj/vm2/FragmentsTest.java b/luaj-test/src/test/java/org/luaj/vm2/FragmentsTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/FragmentsTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/FragmentsTest.java
diff --git a/test/junit/org/luaj/vm2/LoadOrderTest.java b/luaj-test/src/test/java/org/luaj/vm2/LoadOrderTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/LoadOrderTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/LoadOrderTest.java
diff --git a/test/junit/org/luaj/vm2/LuaOperationsTest.java b/luaj-test/src/test/java/org/luaj/vm2/LuaOperationsTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/LuaOperationsTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/LuaOperationsTest.java
diff --git a/test/junit/org/luaj/vm2/MathLibTest.java b/luaj-test/src/test/java/org/luaj/vm2/MathLibTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/MathLibTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/MathLibTest.java
diff --git a/test/junit/org/luaj/vm2/MetatableTest.java b/luaj-test/src/test/java/org/luaj/vm2/MetatableTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/MetatableTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/MetatableTest.java
diff --git a/test/junit/org/luaj/vm2/OrphanedThreadTest.java b/luaj-test/src/test/java/org/luaj/vm2/OrphanedThreadTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/OrphanedThreadTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/OrphanedThreadTest.java
diff --git a/test/junit/org/luaj/vm2/RequireClassTest.java b/luaj-test/src/test/java/org/luaj/vm2/RequireClassTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/RequireClassTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/RequireClassTest.java
diff --git a/test/junit/org/luaj/vm2/ScriptDrivenTest.java b/luaj-test/src/test/java/org/luaj/vm2/ScriptDrivenTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/ScriptDrivenTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/ScriptDrivenTest.java
diff --git a/test/junit/org/luaj/vm2/StringTest.java b/luaj-test/src/test/java/org/luaj/vm2/StringTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/StringTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/StringTest.java
diff --git a/test/junit/org/luaj/vm2/TableHashTest.java b/luaj-test/src/test/java/org/luaj/vm2/TableHashTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/TableHashTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/TableHashTest.java
diff --git a/test/junit/org/luaj/vm2/TableTest.java b/luaj-test/src/test/java/org/luaj/vm2/TableTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/TableTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/TableTest.java
diff --git a/test/junit/org/luaj/vm2/TypeTest.java b/luaj-test/src/test/java/org/luaj/vm2/TypeTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/TypeTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/TypeTest.java
diff --git a/test/junit/org/luaj/vm2/UTF8StreamTest.java b/luaj-test/src/test/java/org/luaj/vm2/UTF8StreamTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/UTF8StreamTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/UTF8StreamTest.java
diff --git a/test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java b/luaj-test/src/test/java/org/luaj/vm2/UnaryBinaryOperatorsTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/UnaryBinaryOperatorsTest.java
diff --git a/test/junit/org/luaj/vm2/VarargsTest.java b/luaj-test/src/test/java/org/luaj/vm2/VarargsTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/VarargsTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/VarargsTest.java
diff --git a/test/junit/org/luaj/vm2/WeakTableTest.java b/luaj-test/src/test/java/org/luaj/vm2/WeakTableTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/WeakTableTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/WeakTableTest.java
diff --git a/test/junit/org/luaj/vm2/compiler/AbstractUnitTests.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/AbstractUnitTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/AbstractUnitTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/AbstractUnitTests.java
diff --git a/test/junit/org/luaj/vm2/compiler/CompilerUnitTests.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/CompilerUnitTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/CompilerUnitTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/CompilerUnitTests.java
diff --git a/test/junit/org/luaj/vm2/compiler/DumpLoadEndianIntTest.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/DumpLoadEndianIntTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/DumpLoadEndianIntTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/DumpLoadEndianIntTest.java
diff --git a/test/junit/org/luaj/vm2/compiler/LuaParserTests.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/LuaParserTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/LuaParserTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/LuaParserTests.java
diff --git a/test/junit/org/luaj/vm2/compiler/RegressionTests.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/RegressionTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/RegressionTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/RegressionTests.java
diff --git a/test/junit/org/luaj/vm2/compiler/SimpleTests.java b/luaj-test/src/test/java/org/luaj/vm2/compiler/SimpleTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/compiler/SimpleTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/compiler/SimpleTests.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/JsePlatformTest.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/JsePlatformTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/JsePlatformTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/JsePlatformTest.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/LuaJavaCoercionTest.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuaJavaCoercionTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/LuaJavaCoercionTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuaJavaCoercionTest.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/LuajavaAccessibleMembersTest.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuajavaAccessibleMembersTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/LuajavaAccessibleMembersTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuajavaAccessibleMembersTest.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/LuajavaClassMembersTest.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuajavaClassMembersTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/LuajavaClassMembersTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/LuajavaClassMembersTest.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/OsLibTest.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/OsLibTest.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/OsLibTest.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/OsLibTest.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/TestClass.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/TestClass.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/TestClass.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/TestClass.java
diff --git a/test/junit/org/luaj/vm2/lib/jse/TestInterface.java b/luaj-test/src/test/java/org/luaj/vm2/lib/jse/TestInterface.java
similarity index 100%
rename from test/junit/org/luaj/vm2/lib/jse/TestInterface.java
rename to luaj-test/src/test/java/org/luaj/vm2/lib/jse/TestInterface.java
diff --git a/test/junit/org/luaj/vm2/require/RequireSampleClassCastExcep.java b/luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleClassCastExcep.java
similarity index 100%
rename from test/junit/org/luaj/vm2/require/RequireSampleClassCastExcep.java
rename to luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleClassCastExcep.java
diff --git a/test/junit/org/luaj/vm2/require/RequireSampleLoadLuaError.java b/luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleLoadLuaError.java
similarity index 100%
rename from test/junit/org/luaj/vm2/require/RequireSampleLoadLuaError.java
rename to luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleLoadLuaError.java
diff --git a/test/junit/org/luaj/vm2/require/RequireSampleLoadRuntimeExcep.java b/luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleLoadRuntimeExcep.java
similarity index 100%
rename from test/junit/org/luaj/vm2/require/RequireSampleLoadRuntimeExcep.java
rename to luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleLoadRuntimeExcep.java
diff --git a/test/junit/org/luaj/vm2/require/RequireSampleSuccess.java b/luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleSuccess.java
similarity index 100%
rename from test/junit/org/luaj/vm2/require/RequireSampleSuccess.java
rename to luaj-test/src/test/java/org/luaj/vm2/require/RequireSampleSuccess.java
diff --git a/test/junit/org/luaj/vm2/script/ScriptEngineTests.java b/luaj-test/src/test/java/org/luaj/vm2/script/ScriptEngineTests.java
similarity index 100%
rename from test/junit/org/luaj/vm2/script/ScriptEngineTests.java
rename to luaj-test/src/test/java/org/luaj/vm2/script/ScriptEngineTests.java
diff --git a/test/lua/baselib.lua b/luaj-test/src/test/resources/baselib.lua
similarity index 100%
rename from test/lua/baselib.lua
rename to luaj-test/src/test/resources/baselib.lua
diff --git a/test/lua/coroutinelib.lua b/luaj-test/src/test/resources/coroutinelib.lua
similarity index 100%
rename from test/lua/coroutinelib.lua
rename to luaj-test/src/test/resources/coroutinelib.lua
diff --git a/test/lua/debuglib.lua b/luaj-test/src/test/resources/debuglib.lua
similarity index 100%
rename from test/lua/debuglib.lua
rename to luaj-test/src/test/resources/debuglib.lua
diff --git a/test/lua/errors.lua b/luaj-test/src/test/resources/errors.lua
similarity index 100%
rename from test/lua/errors.lua
rename to luaj-test/src/test/resources/errors.lua
diff --git a/luaj-test/src/test/resources/errors/abc.txt b/luaj-test/src/test/resources/errors/abc.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/test/lua/errors/args.lua b/luaj-test/src/test/resources/errors/args.lua
similarity index 100%
rename from test/lua/errors/args.lua
rename to luaj-test/src/test/resources/errors/args.lua
diff --git a/test/lua/errors/baselibargs.lua b/luaj-test/src/test/resources/errors/baselibargs.lua
similarity index 100%
rename from test/lua/errors/baselibargs.lua
rename to luaj-test/src/test/resources/errors/baselibargs.lua
diff --git a/test/lua/errors/coroutinelibargs.lua b/luaj-test/src/test/resources/errors/coroutinelibargs.lua
similarity index 100%
rename from test/lua/errors/coroutinelibargs.lua
rename to luaj-test/src/test/resources/errors/coroutinelibargs.lua
diff --git a/test/lua/errors/debuglibargs.lua b/luaj-test/src/test/resources/errors/debuglibargs.lua
similarity index 100%
rename from test/lua/errors/debuglibargs.lua
rename to luaj-test/src/test/resources/errors/debuglibargs.lua
diff --git a/test/lua/errors/iolibargs.lua b/luaj-test/src/test/resources/errors/iolibargs.lua
similarity index 100%
rename from test/lua/errors/iolibargs.lua
rename to luaj-test/src/test/resources/errors/iolibargs.lua
diff --git a/test/lua/errors/mathlibargs.lua b/luaj-test/src/test/resources/errors/mathlibargs.lua
similarity index 100%
rename from test/lua/errors/mathlibargs.lua
rename to luaj-test/src/test/resources/errors/mathlibargs.lua
diff --git a/test/lua/errors/modulelibargs.lua b/luaj-test/src/test/resources/errors/modulelibargs.lua
similarity index 100%
rename from test/lua/errors/modulelibargs.lua
rename to luaj-test/src/test/resources/errors/modulelibargs.lua
diff --git a/test/lua/errors/operators.lua b/luaj-test/src/test/resources/errors/operators.lua
similarity index 100%
rename from test/lua/errors/operators.lua
rename to luaj-test/src/test/resources/errors/operators.lua
diff --git a/luaj-test/src/test/resources/errors/seektest.txt b/luaj-test/src/test/resources/errors/seektest.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/test/lua/errors/stringlibargs.lua b/luaj-test/src/test/resources/errors/stringlibargs.lua
similarity index 100%
rename from test/lua/errors/stringlibargs.lua
rename to luaj-test/src/test/resources/errors/stringlibargs.lua
diff --git a/test/lua/errors/tablelibargs.lua b/luaj-test/src/test/resources/errors/tablelibargs.lua
similarity index 100%
rename from test/lua/errors/tablelibargs.lua
rename to luaj-test/src/test/resources/errors/tablelibargs.lua
diff --git a/test/lua/functions.lua b/luaj-test/src/test/resources/functions.lua
similarity index 100%
rename from test/lua/functions.lua
rename to luaj-test/src/test/resources/functions.lua
diff --git a/test/lua/iolib.lua b/luaj-test/src/test/resources/iolib.lua
similarity index 100%
rename from test/lua/iolib.lua
rename to luaj-test/src/test/resources/iolib.lua
diff --git a/test/lua/manyupvals.lua b/luaj-test/src/test/resources/manyupvals.lua
similarity index 100%
rename from test/lua/manyupvals.lua
rename to luaj-test/src/test/resources/manyupvals.lua
diff --git a/test/lua/mathlib.lua b/luaj-test/src/test/resources/mathlib.lua
similarity index 100%
rename from test/lua/mathlib.lua
rename to luaj-test/src/test/resources/mathlib.lua
diff --git a/test/lua/metatags.lua b/luaj-test/src/test/resources/metatags.lua
similarity index 100%
rename from test/lua/metatags.lua
rename to luaj-test/src/test/resources/metatags.lua
diff --git a/test/lua/oslib.lua b/luaj-test/src/test/resources/oslib.lua
similarity index 100%
rename from test/lua/oslib.lua
rename to luaj-test/src/test/resources/oslib.lua
diff --git a/test/lua/perf/binarytrees.lua b/luaj-test/src/test/resources/perf/binarytrees.lua
similarity index 100%
rename from test/lua/perf/binarytrees.lua
rename to luaj-test/src/test/resources/perf/binarytrees.lua
diff --git a/test/lua/perf/fannkuch.lua b/luaj-test/src/test/resources/perf/fannkuch.lua
similarity index 100%
rename from test/lua/perf/fannkuch.lua
rename to luaj-test/src/test/resources/perf/fannkuch.lua
diff --git a/test/lua/perf/nbody.lua b/luaj-test/src/test/resources/perf/nbody.lua
similarity index 100%
rename from test/lua/perf/nbody.lua
rename to luaj-test/src/test/resources/perf/nbody.lua
diff --git a/test/lua/perf/nsieve.lua b/luaj-test/src/test/resources/perf/nsieve.lua
similarity index 100%
rename from test/lua/perf/nsieve.lua
rename to luaj-test/src/test/resources/perf/nsieve.lua
diff --git a/test/lua/stringlib.lua b/luaj-test/src/test/resources/stringlib.lua
similarity index 100%
rename from test/lua/stringlib.lua
rename to luaj-test/src/test/resources/stringlib.lua
diff --git a/test/lua/tablelib.lua b/luaj-test/src/test/resources/tablelib.lua
similarity index 100%
rename from test/lua/tablelib.lua
rename to luaj-test/src/test/resources/tablelib.lua
diff --git a/test/lua/tailcalls.lua b/luaj-test/src/test/resources/tailcalls.lua
similarity index 100%
rename from test/lua/tailcalls.lua
rename to luaj-test/src/test/resources/tailcalls.lua
diff --git a/test/lua/upvalues.lua b/luaj-test/src/test/resources/upvalues.lua
similarity index 100%
rename from test/lua/upvalues.lua
rename to luaj-test/src/test/resources/upvalues.lua
diff --git a/test/lua/vm.lua b/luaj-test/src/test/resources/vm.lua
similarity index 100%
rename from test/lua/vm.lua
rename to luaj-test/src/test/resources/vm.lua
diff --git a/test/lua/luaj3.0-tests.zip b/luaj-test/test/lua/luaj3.0-tests.zip
similarity index 100%
rename from test/lua/luaj3.0-tests.zip
rename to luaj-test/test/lua/luaj3.0-tests.zip
diff --git a/test/lua/repack.sh b/luaj-test/test/lua/repack.sh
similarity index 100%
rename from test/lua/repack.sh
rename to luaj-test/test/lua/repack.sh
diff --git a/luaj-test/tmp1.out b/luaj-test/tmp1.out
new file mode 100644
index 00000000..8ec9e2d5
--- /dev/null
+++ b/luaj-test/tmp1.out
@@ -0,0 +1 @@
+aaaaaaaccccc
\ No newline at end of file
diff --git a/luaj-test/tmp2.out b/luaj-test/tmp2.out
new file mode 100644
index 00000000..bded5561
--- /dev/null
+++ b/luaj-test/tmp2.out
@@ -0,0 +1 @@
+bbbbbbbddddd
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 00000000..762f0d87
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,96 @@
+
+ 4.0.0
+
+ org.luaj
+ luaj-parent
+ 3.0-SNAPSHOT
+
+ pom
+
+ luaj-parent
+ Lua VM for Java
+ http://sourceforge.net/projects/luaj/
+
+
+
+ MIT License
+ http://luaj.sourceforge.net/license.txt
+ repo
+
+
+
+
+
+ jrosebor
+ James Roseborough
+ jim.roseborough@luaj.org
+ -8
+
+
+
+ ifarmer
+ Ian Farmer
+ ian.farmer@luaj.org
+ -8
+
+
+
+
+
+ http://luaj.cvs.sourceforge.net/viewvc/luaj/luaj-vm/
+
+
+
+ luaj-core
+ luaj-jse
+ luaj-jme
+ luaj-test
+
+
+
+ UTF-8
+ 8
+ 8
+
+
+
+
+
+ org.apache.bcel
+ bcel
+ 5.2
+
+
+ com.github.mcpat.apistubs
+ cldc-1.1-stub
+ 1.0
+ provided
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+
+
+
+
+
+ com.helger.maven
+ ph-javacc-maven-plugin
+ 4.1.4
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.2.0
+
+
+
+
+