Repository cleanup (5/7): made stx:libjava/tests a full Smalltalk/X package.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 21 Jan 2015 13:19:06 +0100
changeset 3336 08a79331ec58
parent 3335 acdda45271f7
child 3337 fd5013aca049
Repository cleanup (5/7): made stx:libjava/tests a full Smalltalk/X package.
JavaRefsAndConstantPoolTestCase.st
JavaZipDeflater.st
abbrev.stc
experiments/experiments.rc
libjava.rc
libs/Make.proto
libs/Make.spec
libs/bc.mak
libs/libs.rc
libs/stx_libjava_libs.st
stx_libjava.st
tests/Make.proto
tests/Make.spec
tests/Makefile.init
tests/abbrev.stc
tests/bc.mak
tests/bmake.bat
tests/build.xml
tests/java/.classpath
tests/java/.project
tests/java/.settings/org.eclipse.jdt.groovy.core.prefs
tests/java/build.auto.xml
tests/java/build.xml
tests/java/classloader-tests-classes/README.txt
tests/java/classloader-tests-classes/src/.placeholder
tests/java/classloader-tests-classes/src/Bar.java
tests/java/classloader-tests-classes/src/Baz.java
tests/java/classloader-tests-classes/src/ClassWithNestedAnnotations.java
tests/java/classloader-tests-classes/src/Foo.java
tests/java/classloader-tests-classes/src/SqlSubclass.java
tests/java/src/.placeholder
tests/java/src/stx/libjava/tests/AsmTests.java
tests/java/src/stx/libjava/tests/GroovyShellTests.java
tests/java/src/stx/libjava/tests/JUnit3Tests.java
tests/java/src/stx/libjava/tests/JUnit4Tests.java
tests/java/src/stx/libjava/tests/Log4JTests.java
tests/java/src/stx/libjava/tests/RegexTests.java
tests/java/src/stx/libjava/tests/StringTests.java
tests/java/src/stx/libjava/tests/asm/AddFieldAdapter.java
tests/java/src/stx/libjava/tests/asm/ClassRenamer.java
tests/java/src/stx/libjava/tests/asm/HelloWorldGenerator.java
tests/java/src/stx/libjava/tests/asm/MethodRenamer.java
tests/java/src/stx/libjava/tests/lang/AnnotationTests.java
tests/java/src/stx/libjava/tests/lang/ArrayTests.java
tests/java/src/stx/libjava/tests/lang/ClassLoaderTests.java
tests/java/src/stx/libjava/tests/lang/ConstructorTests.java
tests/java/src/stx/libjava/tests/lang/ExceptionTests.java
tests/java/src/stx/libjava/tests/lang/FloatAndDoubleTests.java
tests/java/src/stx/libjava/tests/lang/MemberVisibilityTests.java
tests/java/src/stx/libjava/tests/lang/MonitorTests.java
tests/java/src/stx/libjava/tests/lang/MoreThan16ArgumentsTests.java
tests/java/src/stx/libjava/tests/lang/ReflectionTests.java
tests/java/src/stx/libjava/tests/lang/StaticVsInstanceResolvingAndLookupTests.java
tests/java/src/stx/libjava/tests/lang/ThreadJoinTests.java
tests/java/src/stx/libjava/tests/lang/ThreadOrderingTests.java
tests/java/src/stx/libjava/tests/lang/ThreadStopTests.java
tests/java/src/stx/libjava/tests/lib/java/net/InetAddressTests.java
tests/java/src/stx/libjava/tests/lib/java/util/jar/JarFileTests.java
tests/java/src/stx/libjava/tests/mocks/ArrayValueAnnotation.java
tests/java/src/stx/libjava/tests/mocks/ClassAnnotatedWithInvisibleAnnotation.java
tests/java/src/stx/libjava/tests/mocks/ClassValueAnnotation.java
tests/java/src/stx/libjava/tests/mocks/ClassWithInnerClasses.java
tests/java/src/stx/libjava/tests/mocks/Crate.java
tests/java/src/stx/libjava/tests/mocks/EnumValueAnnotation.java
tests/java/src/stx/libjava/tests/mocks/EyeOpeningClassLoader.java
tests/java/src/stx/libjava/tests/mocks/HeavilyAnnotatedClass.java
tests/java/src/stx/libjava/tests/mocks/ImplementorOfNonPublicInterface.java
tests/java/src/stx/libjava/tests/mocks/ImplementorOfPublicInterface.java
tests/java/src/stx/libjava/tests/mocks/NonPublicClass.java
tests/java/src/stx/libjava/tests/mocks/NonPublicInterface.java
tests/java/src/stx/libjava/tests/mocks/PrimitiveValueAnnotation.java
tests/java/src/stx/libjava/tests/mocks/PublicClass.java
tests/java/src/stx/libjava/tests/mocks/PublicInterface.java
tests/java/src/stx/libjava/tests/mocks/RuntimeInvisibleAnnotation.java
tests/java/src/stx/libjava/tests/mocks/SimpleAbstractClass.java
tests/java/src/stx/libjava/tests/mocks/SimpleClassWithManyReferences.java
tests/java/src/stx/libjava/tests/mocks/SimpleInheritingClass.java
tests/java/src/stx/libjava/tests/mocks/SimpleInterface.java
tests/java/src/stx/libjava/tests/mocks/SimpleMath.java
tests/java/src/stx/libjava/tests/mocks/SubclassOfNonPublicClass.java
tests/java/src/stx/libjava/tests/mocks/SubclassOfPublicClass.java
tests/java/src/stx/libjava/tests/mocks/SwitchExamples.java
tests/java/src/stx/libjava/tests/mocks/TranslucentObjectTestsHelper.java
tests/java/src/stx/libjava/tests/mocks/Weather.java
tests/java/src/stx/libjava/tests/mocks/a/A.java
tests/java/src/stx/libjava/tests/mocks/b/B.java
tests/java/src/stx/libjava/tests/mocks/instance_static/ImplementingIfaceWithStatic.java
tests/java/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuff.java
tests/java/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuffWithStatic.java
tests/java/src/stx/libjava/tests/mocks/instance_static/InterfaceWithStatic.java
tests/java/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuff.java
tests/java/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuffWithInterface.java
tests/java/src/stx/libjava/tests/mocks/instance_static/StaticInSuperVsInstInSuperSuper.java
tests/java/src/stx/libjava/tests/mocks/instance_static/SuperWithInstance.java
tests/java/src/stx/libjava/tests/mocks/instance_static/SuperWithStatic.java
tests/java/src/stx/libjava/tests/mocks/interop/Director.java
tests/java/src/stx/libjava/tests/mocks/interop/IPerson1.java
tests/java/src/stx/libjava/tests/mocks/interop/IPerson2.java
tests/java/src/stx/libjava/tests/mocks/interop/IPersonSuper.java
tests/java/src/stx/libjava/tests/mocks/interop/Object.java
tests/java/src/stx/libjava/tests/mocks/interop/Person.java
tests/java/src/stx/libjava/tests/mocks/interop/PersonManipulator.java
tests/java/src/stx/libjava/tests/mocks/interop/SetManipulator.java
tests/java/src/stx/libjava/tests/mocks/interop/TheOneAndOnlyBoss.java
tests/java/src/stx/libjava/tests/mocks/interop/TooGeneralInterface.java
tests/java/src/stx/libjava/tests/vm/CHECKCAST_and_INSTANCEOF.java
tests/java/src/stx/libjava/tests/vm/DREM.java
tests/java/src/stx/libjava/tests/vm/FREM.java
tests/java/src/stx/libjava/tests/vm/GETFIELD_and_PUTFIELD.java
tests/java/src/stx/libjava/tests/vm/INVOKEINTERFACEX.java
tests/java/src/stx/libjava/tests/vm/INVOKESPECIALX.java
tests/java/src/stx/libjava/tests/vm/INVOKESTATICX.java
tests/java/src/stx/libjava/tests/vm/INVOKEVIRTUALX.java
tests/java/src/stx/libjava/tests/vm/MULTIANEWARRAY.java
tests/java/src/stx/libjava/tests/vm/XAND_and_XOR.java
tests/java/src/stx/libjava/tests/vm/XSHX.java
tests/lccmake.bat
tests/libInit.cc
tests/libjava/.classpath
tests/libjava/.project
tests/libjava/.settings/org.eclipse.jdt.groovy.core.prefs
tests/libjava/build.auto.xml
tests/libjava/build.xml
tests/libjava/classloader-tests-classes/README.txt
tests/libjava/classloader-tests-classes/src/.placeholder
tests/libjava/classloader-tests-classes/src/Bar.java
tests/libjava/classloader-tests-classes/src/Baz.java
tests/libjava/classloader-tests-classes/src/ClassWithNestedAnnotations.java
tests/libjava/classloader-tests-classes/src/Foo.java
tests/libjava/classloader-tests-classes/src/SqlSubclass.java
tests/libjava/src/.placeholder
tests/libjava/src/stx/libjava/tests/AsmTests.java
tests/libjava/src/stx/libjava/tests/GroovyShellTests.java
tests/libjava/src/stx/libjava/tests/JUnit3Tests.java
tests/libjava/src/stx/libjava/tests/JUnit4Tests.java
tests/libjava/src/stx/libjava/tests/Log4JTests.java
tests/libjava/src/stx/libjava/tests/RegexTests.java
tests/libjava/src/stx/libjava/tests/StringTests.java
tests/libjava/src/stx/libjava/tests/asm/AddFieldAdapter.java
tests/libjava/src/stx/libjava/tests/asm/ClassRenamer.java
tests/libjava/src/stx/libjava/tests/asm/HelloWorldGenerator.java
tests/libjava/src/stx/libjava/tests/asm/MethodRenamer.java
tests/libjava/src/stx/libjava/tests/lang/AnnotationTests.java
tests/libjava/src/stx/libjava/tests/lang/ArrayTests.java
tests/libjava/src/stx/libjava/tests/lang/ClassLoaderTests.java
tests/libjava/src/stx/libjava/tests/lang/ConstructorTests.java
tests/libjava/src/stx/libjava/tests/lang/ExceptionTests.java
tests/libjava/src/stx/libjava/tests/lang/FloatAndDoubleTests.java
tests/libjava/src/stx/libjava/tests/lang/MemberVisibilityTests.java
tests/libjava/src/stx/libjava/tests/lang/MonitorTests.java
tests/libjava/src/stx/libjava/tests/lang/MoreThan16ArgumentsTests.java
tests/libjava/src/stx/libjava/tests/lang/ReflectionTests.java
tests/libjava/src/stx/libjava/tests/lang/StaticVsInstanceResolvingAndLookupTests.java
tests/libjava/src/stx/libjava/tests/lang/ThreadJoinTests.java
tests/libjava/src/stx/libjava/tests/lang/ThreadOrderingTests.java
tests/libjava/src/stx/libjava/tests/lang/ThreadStopTests.java
tests/libjava/src/stx/libjava/tests/lib/java/net/InetAddressTests.java
tests/libjava/src/stx/libjava/tests/lib/java/util/jar/JarFileTests.java
tests/libjava/src/stx/libjava/tests/mocks/ArrayValueAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/ClassAnnotatedWithInvisibleAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/ClassValueAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/ClassWithInnerClasses.java
tests/libjava/src/stx/libjava/tests/mocks/Crate.java
tests/libjava/src/stx/libjava/tests/mocks/EnumValueAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/EyeOpeningClassLoader.java
tests/libjava/src/stx/libjava/tests/mocks/HeavilyAnnotatedClass.java
tests/libjava/src/stx/libjava/tests/mocks/ImplementorOfNonPublicInterface.java
tests/libjava/src/stx/libjava/tests/mocks/ImplementorOfPublicInterface.java
tests/libjava/src/stx/libjava/tests/mocks/NonPublicClass.java
tests/libjava/src/stx/libjava/tests/mocks/NonPublicInterface.java
tests/libjava/src/stx/libjava/tests/mocks/PrimitiveValueAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/PublicClass.java
tests/libjava/src/stx/libjava/tests/mocks/PublicInterface.java
tests/libjava/src/stx/libjava/tests/mocks/RuntimeInvisibleAnnotation.java
tests/libjava/src/stx/libjava/tests/mocks/SimpleAbstractClass.java
tests/libjava/src/stx/libjava/tests/mocks/SimpleClassWithManyReferences.java
tests/libjava/src/stx/libjava/tests/mocks/SimpleInheritingClass.java
tests/libjava/src/stx/libjava/tests/mocks/SimpleInterface.java
tests/libjava/src/stx/libjava/tests/mocks/SimpleMath.java
tests/libjava/src/stx/libjava/tests/mocks/SubclassOfNonPublicClass.java
tests/libjava/src/stx/libjava/tests/mocks/SubclassOfPublicClass.java
tests/libjava/src/stx/libjava/tests/mocks/SwitchExamples.java
tests/libjava/src/stx/libjava/tests/mocks/TranslucentObjectTestsHelper.java
tests/libjava/src/stx/libjava/tests/mocks/Weather.java
tests/libjava/src/stx/libjava/tests/mocks/a/A.java
tests/libjava/src/stx/libjava/tests/mocks/b/B.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/ImplementingIfaceWithStatic.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuff.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuffWithStatic.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/InterfaceWithStatic.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuff.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuffWithInterface.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/StaticInSuperVsInstInSuperSuper.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/SuperWithInstance.java
tests/libjava/src/stx/libjava/tests/mocks/instance_static/SuperWithStatic.java
tests/libjava/src/stx/libjava/tests/mocks/interop/Director.java
tests/libjava/src/stx/libjava/tests/mocks/interop/IPerson1.java
tests/libjava/src/stx/libjava/tests/mocks/interop/IPerson2.java
tests/libjava/src/stx/libjava/tests/mocks/interop/IPersonSuper.java
tests/libjava/src/stx/libjava/tests/mocks/interop/Object.java
tests/libjava/src/stx/libjava/tests/mocks/interop/Person.java
tests/libjava/src/stx/libjava/tests/mocks/interop/PersonManipulator.java
tests/libjava/src/stx/libjava/tests/mocks/interop/SetManipulator.java
tests/libjava/src/stx/libjava/tests/mocks/interop/TheOneAndOnlyBoss.java
tests/libjava/src/stx/libjava/tests/mocks/interop/TooGeneralInterface.java
tests/libjava/src/stx/libjava/tests/vm/CHECKCAST_and_INSTANCEOF.java
tests/libjava/src/stx/libjava/tests/vm/DREM.java
tests/libjava/src/stx/libjava/tests/vm/FREM.java
tests/libjava/src/stx/libjava/tests/vm/GETFIELD_and_PUTFIELD.java
tests/libjava/src/stx/libjava/tests/vm/INVOKEINTERFACEX.java
tests/libjava/src/stx/libjava/tests/vm/INVOKESPECIALX.java
tests/libjava/src/stx/libjava/tests/vm/INVOKESTATICX.java
tests/libjava/src/stx/libjava/tests/vm/INVOKEVIRTUALX.java
tests/libjava/src/stx/libjava/tests/vm/MULTIANEWARRAY.java
tests/libjava/src/stx/libjava/tests/vm/XAND_and_XOR.java
tests/libjava/src/stx/libjava/tests/vm/XSHX.java
tests/mingwmake.bat
tests/stx_libjava_tests.st
tests/tests.rc
tests/vcmake.bat
tools/tools.rc
--- a/JavaRefsAndConstantPoolTestCase.st	Wed Jan 21 11:28:10 2015 +0100
+++ b/JavaRefsAndConstantPoolTestCase.st	Wed Jan 21 13:19:06 2015 +0100
@@ -187,7 +187,7 @@
 
 getCrateClassReadStream
     ^ ((stx_libjava packageDirectory / 'tests' ) 
-        / 'libjava' / 'bin' 
+        / 'java' / 'bin' 
         / 'stx' / 'libjava' 
         / 'tests' / 'mocks' 
         / 'Crate.class') readStream.
--- a/JavaZipDeflater.st	Wed Jan 21 11:28:10 2015 +0100
+++ b/JavaZipDeflater.st	Wed Jan 21 13:19:06 2015 +0100
@@ -20,6 +20,8 @@
 "
 "{ Package: 'stx:libjava' }"
 
+"{ NameSpace: Smalltalk }"
+
 Object subclass:#JavaZipDeflater
 	instanceVariableNames:'vm z_stream'
 	classVariableNames:''
@@ -488,3 +490,10 @@
     "Created: / 20-07-2012 / 21:50:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaZipDeflater class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/abbrev.stc	Wed Jan 21 11:28:10 2015 +0100
+++ b/abbrev.stc	Wed Jan 21 13:19:06 2015 +0100
@@ -37,6 +37,7 @@
 JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
 JavaFinalizationRegistry JavaFinalizationRegistry stx:libjava 'Languages-Java-Support' 0
 JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
+JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInnerClasses JavaInnerClasses stx:libjava 'Languages-Java-Support' 0
 JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
 JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
@@ -114,7 +115,6 @@
 JavaFieldDescriptor JavaFieldDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaFieldDescriptorWithUnionType JavaFieldDescriptorWithUnionType stx:libjava 'Languages-Java-Support' 0
 JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaInvalidRefError JavaInvalidRefError stx:libjava 'Languages-Java-Support' 1
 JavaInvokeDynamic2 JavaInvokeDynamic2 stx:libjava 'Languages-Java-Reader-Support-new' 0
--- a/experiments/experiments.rc	Wed Jan 21 11:28:10 2015 +0100
+++ b/experiments/experiments.rc	Wed Jan 21 13:19:06 2015 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2015\nCopyright eXept Software AG 1998-2015\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.5.0\0"
-      VALUE "ProductDate", "Wed, 21 Jan 2015 10:23:55 GMT\0"
+      VALUE "ProductDate", "Wed, 21 Jan 2015 12:14:07 GMT\0"
     END
 
   END
--- a/libjava.rc	Wed Jan 21 11:28:10 2015 +0100
+++ b/libjava.rc	Wed Jan 21 13:19:06 2015 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.5.0\0"
-      VALUE "ProductDate", "Wed, 21 Jan 2015 10:23:52 GMT\0"
+      VALUE "ProductDate", "Wed, 21 Jan 2015 12:13:48 GMT\0"
     END
 
   END
--- a/libs/Make.proto	Wed Jan 21 11:28:10 2015 +0100
+++ b/libs/Make.proto	Wed Jan 21 13:19:06 2015 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava
 
 
 # if you need any additional defines for embedded C code,
@@ -69,10 +69,10 @@
 java: ant
 
 ant:
-	ant -f java/build.xml 
+	ant -f java/build.xml dependencies build
 
 antIfPossible:
-	-ant -f java/build.xml 
+	-ant -f java/build.xml dependencies build
 
 full::  ant
 
@@ -114,7 +114,7 @@
 
 # run default testsuite for this package
 test: $(TOP)/goodies/builder/reports
-	$(MAKE) -C $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports -f Makefile.init
 	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
 
 
@@ -138,7 +138,7 @@
 
 
 # build all packages containing referenced classes for this package
-# they are nor needed to compile the package
+# they are not needed to compile the package (but later, to load it)
 references:
 
 
@@ -153,7 +153,7 @@
 
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)stx_libjava_libs.$(O) stx_libjava_libs.$(H): stx_libjava_libs.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libjava_libs.$(O) stx_libjava_libs.$(H): stx_libjava_libs.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/libs/Make.spec	Wed Jan 21 11:28:10 2015 +0100
+++ b/libs/Make.spec	Wed Jan 21 13:19:06 2015 +0100
@@ -42,6 +42,7 @@
 #  -warnNonStandard : no warnings about ST/X extensions
 #  -warnEOLComments : no warnings about EOL comment extension
 #  -warnPrivacy     : no warnings about privateClass extension
+#  -warnUnused      : no warnings about unused variables
 #
 # ********** OPTIONAL: MODIFY the next line(s) ***
 # STCWARNINGS=-warn
--- a/libs/bc.mak	Wed Jan 21 11:28:10 2015 +0100
+++ b/libs/bc.mak	Wed Jan 21 13:19:06 2015 +0100
@@ -30,11 +30,12 @@
 !INCLUDE Make.spec
 
 LIBNAME=libstx_libjava_libs
+MODULE_PATH=libjava\libs
 RESFILES=libs.$(RES)
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -58,10 +59,10 @@
 java: ant
 
 ant:
-	ant -f java\build.xml
+	ant -f java\build.xml dependencies build
 
 antIfPossible:
-	-ant -f java\build.xml
+	-ant -f java\build.xml dependencies build
 
 full::  ant
 
@@ -77,7 +78,7 @@
 
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)stx_libjava_libs.$(O) stx_libjava_libs.$(H): stx_libjava_libs.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libjava_libs.$(O) stx_libjava_libs.$(H): stx_libjava_libs.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/libs/libs.rc	Wed Jan 21 11:28:10 2015 +0100
+++ b/libs/libs.rc	Wed Jan 21 13:19:06 2015 +0100
@@ -4,7 +4,7 @@
 //
 VS_VERSION_INFO VERSIONINFO
   FILEVERSION     6,2,32767,32767
-  PRODUCTVERSION  6,2,3,0
+  PRODUCTVERSION  6,2,5,0
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
   FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
       VALUE "InternalName", "stx:libjava/libs\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
-      VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Thu, 06 Feb 2014 09:20:29 GMT\0"
+      VALUE "ProductVersion", "6.2.5.0\0"
+      VALUE "ProductDate", "Wed, 21 Jan 2015 12:14:17 GMT\0"
     END
 
   END
--- a/libs/stx_libjava_libs.st	Wed Jan 21 11:28:10 2015 +0100
+++ b/libs/stx_libjava_libs.st	Wed Jan 21 13:19:06 2015 +0100
@@ -1,5 +1,7 @@
 "{ Package: 'stx:libjava/libs' }"
 
+"{ NameSpace: Smalltalk }"
+
 LibraryDefinition subclass:#stx_libjava_libs
 	instanceVariableNames:''
 	classVariableNames:''
@@ -19,28 +21,27 @@
 !
 
 mandatoryPreRequisites
-    "list all required mandatory packages.
-     Packages are mandatory, if they contain superclasses of the package's classes
-     or classes which are extended by this package.
-     This list can be maintained manually or (better) generated and
-     updated by scanning the superclass hierarchies
-     (the browser has a menu function for that)"
+    "list packages which are mandatory as a prerequisite.
+     This are packages containing superclasses of my classes and classes which
+     are extended by myself.
+     They are mandatory, because we need these packages as a prerequisite for loading and compiling.
+     This method is generated automatically,
+     by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:libbasic'    "LibraryDefinition - superclass of stx_libjava_libs "
+        #'stx:libbasic'    "LibraryDefinition - superclass of stx_libjava_libs"
     )
 !
 
 referencedPreRequisites
-    "list all packages containing classes referenced by the packages's members.
-     This list can be maintained manually or (better) generated and
-     updated by looking for global variable accesses
-     (the browser has a menu function for that)
-     However, often too much is found, and you may want to explicitely
-     exclude individual packages in the #excludedFromPreRequisites method."
+    "list packages which are a prerequisite, because they contain
+     classes which are referenced by my classes.
+     We do not need these packages as a prerequisite for loading or compiling.
+     This method is generated automatically,
+     by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:libjava'    "JavaCodeBundle - referenced by stx_libjava_libs class>>javaBundle "
+        #'stx:libjava'    "JavaCodeBundle - referenced by stx_libjava_libs class>>javaBundle"
     )
 !
 
@@ -118,8 +119,8 @@
 !
 
 extensionMethodNames
-    "lists the extension methods which are to be included in the project.
-     Entries are 2-element array literals, consisting of class-name and selector."
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
 
     ^ #(
     )
--- a/stx_libjava.st	Wed Jan 21 11:28:10 2015 +0100
+++ b/stx_libjava.st	Wed Jan 21 13:19:06 2015 +0100
@@ -89,47 +89,19 @@
 
 testSuite
 
-    | suite javaTestCases stTests |
+    | suite  |     
     suite := super testSuite.
-    stTests := suite tests.
-    suite := TestSuite new.
-    suite name: self package.
-    JavaTestsLoader load.
-
-    javaTestCases := OrderedCollection new.
-
-    Java allClassesDo:
-        [:jclass|
-        (jclass binaryName ~~ #'stx/libjava/tests/JUnit3Tests'
-            and:[jclass binaryName ~~  #'stx/libjava/tests/JUnit4Tests'
-                and:[jclass isTestCaseLike]])
-                    ifTrue:
-                        [ | tc |
-                        tc := jclass asTestCase.
-                        tc isAbstract ifFalse:[javaTestCases add:tc ]]].
-
-    javaTestCases do:
-                [:each | 
-                suite addTests:each buildSuite tests ].
-
-
-    suite tests addAll: stTests.
-
-    suite tests withIndexDo:
-        [:t :i|
-        Stdout nextPutAll: i printString; space; nextPutAll: t printString; cr].
-
-    Java dumpConfigOn: Stdout.
-    ^suite
+    Smalltalk loadPackage: #'stx:libjava/tests'.
+    suite addTests: (Smalltalk at: #'stx_libjava_tests') testSuite tests.
+    ^ suite
 
     "
-        stx_libjava testSuite
-
+    stx_libjava testSuite
     "
 
     "Created: / 07-05-2011 / 19:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 04-06-2011 / 17:23:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-02-2013 / 10:24:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 21-01-2015 / 12:55:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 testSuiteWithoutJavaTests
@@ -344,6 +316,7 @@
         JavaField
         JavaFinalizationRegistry
         (JavaFreshlyInitializedResource autoload)
+        (JavaInitializedResource autoload)
         JavaInnerClasses
         (JavaJUnitTests autoload)
         JavaLanguage
@@ -421,7 +394,6 @@
         JavaFieldDescriptor
         JavaFieldDescriptorWithUnionType
         (JavaFieldRefTests autoload)
-        (JavaInitializedResource autoload)
         (JavaInterfaceMethodRefTests autoload)
         JavaInvalidRefError
         JavaInvokeDynamic2
@@ -693,16 +665,6 @@
 
     "Created: / 15-01-2013 / 17:35:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 11-11-2013 / 15:34:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-javaClassPath
-    <resource: #obsolete>
-
-    "Defines paths to Java .class files (for packages that
-     contains Java code"    
-    ^#()
-
-    "Created: / 15-01-2013 / 18:04:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !stx_libjava class methodsFor:'description - project information'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Make.proto	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,127 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libjava_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# The Makefile as generated by this Make.proto supports the following targets:
+#    make         - compile all st-files to a classLib
+#    make clean   - clean all temp files
+#    make clobber - clean all
+#
+# This file contains definitions for Unix based platforms.
+# It shares common definitions with the win32-make in Make.spec.
+
+#
+# position (of this package) in directory hierarchy:
+# (must point to ST/X top directory, for tools and includes)
+TOP=../..
+INCLUDE_TOP=$(TOP)/..
+
+# subdirectories where targets are to be made:
+SUBDIRS=
+
+
+# subdirectories where Makefiles are to be made:
+# (only define if different from SUBDIRS)
+# ALLSUBDIRS=
+
+REQUIRED_SUPPORT_DIRS=
+
+# if your embedded C code requires any system includes,
+# add the path(es) here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALINCLUDES=-Ifoo -Ibar
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava
+
+
+# if you need any additional defines for embedded C code,
+# add them here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALDEFINES=-Dfoo -Dbar -DDEBUG
+LOCALDEFINES=
+
+LIBNAME=libstx_libjava_tests
+STCLOCALOPT='-package=$(PACKAGE)' -I. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=.  -varPrefix=$(LIBNAME)
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C-libraries that should be pre-linked with the class-objects
+LD_OBJ_LIBS=
+LOCAL_SHARED_LIBS=
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C targets or libraries should be added below
+LOCAL_EXTRA_TARGETS=
+
+OBJS= $(COMMON_OBJS) $(UNIX_OBJS)
+
+
+
+all:: preMake classLibRule postMake
+
+pre_objs::  
+
+
+
+
+
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_libjava_tests.$(O): $(shell hg root)/.hg/dirstate
+endif
+
+
+
+
+# run default testsuite for this package
+test: $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports -f Makefile.init
+	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
+
+
+
+# add more install actions here
+install::
+
+# add more install actions for aux-files (resources) here
+installAux::
+
+# add more preMake actions here
+preMake::
+
+# add more postMake actions here
+postMake:: cleanjunk
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+
+
+# build all packages containing referenced classes for this package
+# they are not needed to compile the package (but later, to load it)
+references:
+
+
+cleanjunk::
+	-rm -f *.s *.s2
+
+clean::
+	-rm -f *.o *.H
+
+clobber:: clean
+	-rm -f *.so *.dll
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)stx_libjava_tests.$(O) stx_libjava_tests.$(H): stx_libjava_tests.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Make.spec	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,63 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libjava_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=stx
+MODULE_DIR=libjava/tests
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -headerDir=. : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=+optspace3
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#  -warnUnused      : no warnings about unused variables
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=-warnNonStandard
+
+COMMON_CLASSES= \
+	stx_libjava_tests \
+
+
+
+
+COMMON_OBJS= \
+    $(OUTDIR_SLASH)stx_libjava_tests.$(O) \
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/Makefile.init	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,27 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile: mf
+
+mf:
+	$(TOP)/rules/stmkmf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/abbrev.stc	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,4 @@
+# automagically generated by the project definition
+# this file is needed for stc to be able to compile modules independently.
+# it provides information about a classes filename, category and especially namespace.
+stx_libjava_tests stx_libjava_tests stx:libjava/tests '* Projects & Packages *' 3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/bc.mak	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,82 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libjava_tests.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# Notice, that the name bc.mak is historical (from times, when only borland c was supported).
+# This file contains make rules for the win32 platform using either borland-bcc or visual-c.
+# It shares common definitions with the unix-make in Make.spec.
+# The bc.mak supports the following targets:
+#    bmake         - compile all st-files to a classLib (dll)
+#    bmake clean   - clean all temp files
+#    bmake clobber - clean all
+#
+# Historic Note:
+#  this used to contain only rules to make with borland
+#    (called via bmake, by "make.exe -f bc.mak")
+#  this has changed; it is now also possible to build using microsoft visual c
+#    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
+#
+TOP=..\..
+INCLUDE_TOP=$(TOP)\..
+
+
+
+!INCLUDE $(TOP)\rules\stdHeader_bc
+
+!INCLUDE Make.spec
+
+LIBNAME=libstx_libjava_tests
+MODULE_PATH=libjava\tests
+RESFILES=tests.$(RES)
+
+
+
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava
+LOCALDEFINES=
+
+STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
+LOCALLIBS=
+
+OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
+
+ALL::  classLibRule
+
+classLibRule: $(OUTDIR) $(OUTDIR)$(LIBNAME).dll
+
+!INCLUDE $(TOP)\rules\stdRules_bc
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	pushd ..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
+
+
+
+
+
+
+test: $(TOP)\goodies\builder\reports\NUL
+	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
+	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
+        
+clean::
+	del *.$(CSUFFIX)
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)stx_libjava_tests.$(O) stx_libjava_tests.$(H): stx_libjava_tests.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_libjava_tests.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/bmake.bat	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,12 @@
+@REM -------
+@REM make using Borland bcc32
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak  %DEFINES% %*
+
+
--- a/tests/build.xml	Wed Jan 21 11:28:10 2015 +0100
+++ b/tests/build.xml	Wed Jan 21 13:19:06 2015 +0100
@@ -13,7 +13,7 @@
 </path>
 
   <target name="build">
-	<ant antfile="build.xml" target="build" inheritRefs="false" dir="libjava">
+	<ant antfile="build.xml" target="build" inheritRefs="false" dir="java">
 	  <reference refid="libjava-tests.classpath" torefid="libjava-tests.classpath"/>
 	</ant>
 
@@ -23,9 +23,14 @@
   </target>
 
   <target name="clean">
-	<subant target="clean">
-	  <fileset dir="." includes="*/build.xml"/>
-	</subant>
+	<ant antfile="build.xml" target="clean" inheritRefs="false" dir="java">
+          <reference refid="libjava-tests.classpath" torefid="libjava-tests.classpath"/>
+        </ant>
+
+        <ant antfile="build.xml" target="clean" inheritRefs="false" dir="../mauve/java">
+
+        </ant>
+
   </target>
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/.classpath	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" output="classloader-tests-classes/bin" path="classloader-tests-classes/src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/stx.libjava"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/stx.libjava.libs"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/.project	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>stx.libjava.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/.settings/org.eclipse.jdt.groovy.core.prefs	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+groovy.compiler.level=-1
+groovy.script.filters=**/*.dsld,y,scripts/**/*.groovy,y,src/main/resources/**/*.groovy,y,src/test/resources/**/*.groovy,y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/build.auto.xml	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- This file has been generated by STX:LIBJAVA. Do not edit! Edit build.xml instead -->
+<project>
+    <property name="TOP" value="../../.." />
+    <import file="${TOP}/libjava/java/build.common.xml"/>
+
+    <path id="build.classpath.prereqs">
+       <path refid="build.classpath.prereqs.stx.libjava"/>
+       <path refid="build.classpath.prereqs.stx.libjava.libs"/>
+    </path>
+
+    <path id="build.classpath.prereqs.stx.libjava">
+        <pathelement path="${TOP}/../stx/libjava/java/bin"/>
+        <fileset dir="${TOP}/../stx/libjava/java/libs" includes="*.jar"/>  
+    </path>
+
+
+    <target name="prereqs.stx.libjava" extensionOf="prereqs.main">
+        <ant antfile="${TOP}/../stx/libjava/java/build.xml" 
+             target="${ant.project.invoked-targets}"
+             inheritAll="false"
+             useNativeBasedir="true"/> 
+    </target>
+
+    <path id="build.classpath.prereqs.stx.libjava.libs">
+        <pathelement path="${TOP}/../stx/libjava/libs/java/bin"/>
+        <fileset dir="${TOP}/../stx/libjava/libs/java/libs" includes="*.jar"/>
+    </path>
+
+
+    <target name="prereqs.stx.libjava.libs" extensionOf="prereqs.main">
+        <ant antfile="${TOP}/../stx/libjava/libs/java/build.xml"
+             target="${ant.project.invoked-targets}"
+             inheritAll="false"
+             useNativeBasedir="true"/>
+    </target>
+
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/build.xml	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project name="stx.libjava.tools" default="compile" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
+    <import file="build.auto.xml"/>
+
+    <target name="compile.classloader-tests-classes" extensionOf="compile.post">
+        <mkdir dir="classloader-tests-classes/bin"/>
+        <javac srcdir="classloader-tests-classes/src"
+               destdir="classloader-tests-classes/bin"
+               classpathref="build.classpath"/>
+    </target>
+
+    <target name="clean.classloader-tests-classes" extensionOf="clean.post">
+        <delete dir="classloader-tests-classes/bin" />
+    </target>
+
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/README.txt	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,2 @@
+Do not delete this directory, classes here are required
+to test classloaders. See ClassLoaderTests.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/src/Bar.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Bar {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/src/Baz.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Baz {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/src/ClassWithNestedAnnotations.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,11 @@
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ClassWithNestedAnnotations {
+	@XmlElements(@XmlElement(name = "Text", namespace = "http://www.w3.org/2003/05/soap-envelope"))
+    private final List<Integer> field = null;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/src/Foo.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,6 @@
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Foo extends Bar {
+	
+	public Baz baz;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/classloader-tests-classes/src/SqlSubclass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,7 @@
+import javax.sql.rowset.BaseRowSet;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SqlSubclass extends BaseRowSet {
+	private static final long serialVersionUID = 4326121495672916752L;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/AsmTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,86 @@
+package stx.libjava.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.junit.Test;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.ClassVisitor;
+
+import org.objectweb.asm.Opcodes;
+
+import stx.libjava.tests.asm.AddFieldAdapter;
+import stx.libjava.tests.asm.HelloWorldGenerator;
+import stx.libjava.tests.mocks.Crate;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class AsmTests implements Opcodes {
+
+	@Test
+	public void testGeneratingHelloWorldClass() throws Exception {
+		byte[] generatedClass = HelloWorldGenerator.generate();
+		Class loadedClass = loadClass("HelloWorld", generatedClass);
+		Object instance = loadedClass.getConstructor(String.class).newInstance("MH");
+		Method m = loadedClass.getDeclaredMethod("getHello", null);
+		Object resultObj = m.invoke(instance, null);
+		String expectedResult = "Hello World from MH";
+		String result =(String) resultObj;
+		assertEquals(expectedResult, result);	
+	}
+	
+	@Test
+	public void testAddingFieldToCrate() throws Exception {
+		ClassReader cr = new ClassReader("stx.libjava.tests.mocks.Crate");
+		ClassWriter cw = new ClassWriter(0);
+		AddFieldAdapter added = new AddFieldAdapter(cw, ACC_PUBLIC, "addedField", "Ljava/lang/String;");
+		cr.accept((ClassVisitor)added, 0);
+		byte[] generatedClass = cw.toByteArray();
+		Class loadedClass = loadClass("stx.libjava.tests.mocks.Crate", generatedClass);
+		assertNotNull("testing updated class not null",loadedClass);
+		boolean addedFieldPresent = false;
+		for (Field f : loadedClass.getDeclaredFields()) {
+			if (f.getName().equals("addedField")) {
+				addedFieldPresent = true;
+			}
+		}
+		assertTrue("testing correct updated class creation",addedFieldPresent);
+		addedFieldPresent = false;
+		for (Field f : Crate.class.getDeclaredFields()) {
+			if (f.getName().equals("addedField")) {
+				addedFieldPresent = true;
+			}
+		}
+		assertTrue("testing hot redeploy of changed class",addedFieldPresent);
+	}
+
+	private Class loadClass(String name, byte[] b) {
+		// override classDefine (as it is protected) and define the class.
+		Class clazz = null;
+		try {
+			ClassLoader loader = ClassLoader.getSystemClassLoader();
+			Class cls = Class.forName("java.lang.ClassLoader");
+			Method method = cls.getDeclaredMethod("defineClass", new Class[] {
+					String.class, byte[].class, int.class, int.class });
+
+			// protected method invocaton
+			method.setAccessible(true);
+			try {
+				Object[] args = new Object[] { name, b, new Integer(0),
+						new Integer(b.length) };
+				clazz = (Class) method.invoke(loader, args);
+			} finally {
+				method.setAccessible(false);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.exit(1);
+		}
+		return clazz;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/GroovyShellTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,26 @@
+package stx.libjava.tests;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import stx.libjava.groovy.GroovyShell;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class GroovyShellTests {
+
+    @Test
+    public void test_imports_01() {
+        GroovyShell shell = new GroovyShell();
+        shell.evaluate("import stx.libjava.tests.mocks.b.*;");
+        shell.evaluate("new B()");        
+    }
+    
+    @Test
+    public void test_regression_01() {
+        GroovyShell shell = new GroovyShell();
+        assertEquals(shell.evaluate("System.getProperty(\"java.classpath\")"),
+                    System.getProperty("java.classpath"));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/JUnit3Tests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,53 @@
+package stx.libjava.tests;
+
+import junit.framework.TestCase;
+
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class JUnit3Tests extends TestCase {
+	
+	public final void testSayHi() {       
+        assertEquals("hi", sayHi());
+    }
+    
+    private String sayHi() {
+        return "hi";
+    }
+    
+    public void testPass() {
+    	assertEquals(10,10);
+    }
+    
+    public void testFailure() {
+    	/* Make it failing only when running on Smalltalk/X VM */
+    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
+    		assertEquals(10,0);
+    	}
+    }
+    
+    public void testError() {
+    	/* Make it error only when running on Smalltalk/X VM */
+    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
+    		float a = 10 / 0;
+    		assertEquals(a, 0.0);
+    	}
+    }
+	
+	public static void main(String [] args) {
+		System.out.println("Expected output: 4 run, 2 failed");
+		Result result = runAllTests();	
+		System.out.println("getRunCount() = " + result.getRunCount());
+		System.out.println("getFailureCount() = " + result.getFailureCount());
+		for (Failure f : result.getFailures()) {
+			System.out.println("Failure: " + f.toString());	
+		}
+	}
+
+	public static Result runAllTests() {		
+		return JUnitCore.runClasses(JUnit3Tests.class);			
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/JUnit4Tests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,44 @@
+package stx.libjava.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class JUnit4Tests {
+
+	@Test
+	public void helloWorld() {
+		assertEquals("Is zero equal 5-5 test",0, (5-5));
+	}
+	
+	@Test
+	public void stringEquality() {
+		assertEquals("String equality test", "hello", "hello");
+	}
+	
+	@Test
+	public void helloWorldWillNotPass() {
+		/* Make it failing only when running on Smalltalk/X VM */
+		if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
+			assertEquals("Is zero equal 5 test", 0, 5);
+		}
+	}
+	
+	public static void main(String [] args) {
+		System.out.println("Expected output: 3 run, 1 failed");
+		Result result = JUnitCore.runClasses(JUnit4Tests.class);
+		System.out.println("getRunCount() = " + result.getRunCount());
+		System.out.println("getFailureCount() = " + result.getFailureCount());
+		for (Failure f : result.getFailures()) {
+			System.out.println("Failure: " + f.toString());	
+		}
+	}
+	
+	public static Result runAllTests() {		
+		return JUnitCore.runClasses(JUnit4Tests.class);			
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/Log4JTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,41 @@
+package stx.libjava.tests;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Log4JTests extends TestCase {
+	
+	public void testLoadAndLogSomething() {
+		//assertTrue("Test disabled since it crashes the VM (#9 bug)", false);
+		/**/
+		BasicConfigurator.configure();
+		Logger logger = Logger.getRootLogger();
+		logger.debug("Sample debug message");
+		logger.error("Sample error message");
+		logger.fatal("Sample fatal message");
+		/**/
+		
+	}
+	
+	public static void main(String[] args) {
+		Result result = runAllTests();	
+		System.out.println("getRunCount() = " + result.getRunCount());
+		System.out.println("getFailureCount() = " + result.getFailureCount());
+		for (Failure f : result.getFailures()) {
+			System.out.println("Failure: " + f.toString());	
+		}
+		System.out.println("End of output");
+	}
+	
+	public static Result runAllTests() {		
+		return JUnitCore.runClasses(Log4JTests.class);			
+	}
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/RegexTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,40 @@
+package stx.libjava.tests;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class RegexTests extends TestCase {
+
+	public void testSimpleRegex() {
+		Assert.assertTrue("Simple text matching","foo@foo.org".matches("[a-z]*@[a-z]*.[a-z]*"));
+	}
+	
+	public void testNotSoSimpleRegex() {
+		Pattern p = Pattern.compile("[a-z]*@[a-z]*.[a-z]*");
+		Matcher m = p.matcher("foo@foo.org");
+		Assert.assertTrue("Not so simple text matching",m.matches());
+	}
+	
+	public static void main(String[] args) {
+		System.out.println("Expected output: 2 run, 0 failed");
+		Result result = runAllTests();		
+		System.out.println("getRunCount() = " + result.getRunCount());
+		System.out.println("getFailureCount() = " + result.getFailureCount());
+		for (Failure f : result.getFailures()) {
+			System.out.println("Failure: " + f.toString());	
+		}
+	}
+	
+	public static Result runAllTests() {		
+		return JUnitCore.runClasses(RegexTests.class);			
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/StringTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,20 @@
+package stx.libjava.tests;
+
+import org.junit.Test;
+
+import junit.framework.TestCase;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class StringTests extends TestCase {
+	
+	@Test
+	public void test_01() {
+	    String s = "\u1FFF";
+	    
+	    assertEquals(1, s.length());
+	    assertEquals(0x1FFF, (int)s.charAt(0));
+	    
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/asm/AddFieldAdapter.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,41 @@
+package stx.libjava.tests.asm;
+
+import org.objectweb.asm.ClassAdapter;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.FieldVisitor;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class AddFieldAdapter extends ClassAdapter {
+	private int fAcc;
+	private String fName;
+	private String fDesc;
+	private boolean isFieldPresent;
+
+	public AddFieldAdapter(ClassVisitor cv, int fAcc, String fName, String fDesc) {
+		super(cv);
+		this.fAcc = fAcc;
+		this.fName = fName;
+		this.fDesc = fDesc;
+	}
+
+	@Override
+	public FieldVisitor visitField(int access, String name, String desc,
+			String signature, Object value) {
+		if (name.equals(fName)) {
+			isFieldPresent = true;
+		}
+		return cv.visitField(access, name, desc, signature, value);
+	}
+
+	@Override
+	public void visitEnd() {
+		if (!isFieldPresent) {
+			FieldVisitor fv = cv.visitField(fAcc, fName, fDesc, null, null);
+			if (fv != null) {
+				fv.visitEnd();
+			}
+
+			cv.visitEnd();
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/asm/ClassRenamer.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,95 @@
+package stx.libjava.tests.asm;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.objectweb.asm.ClassAdapter;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodAdapter;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ClassRenamer extends ClassAdapter implements Opcodes {
+
+	// The old name of the class
+	private String oldName;
+	// The new name of the class
+	private String newName;
+
+	/****************************************************************************
+	 * A ClassRenamer is composed of a ClassVisitor and the different names
+	 * 
+	 * @param cv
+	 *            : a ClassVisitor which will visit the whole class.
+	 * @param oldNames
+	 *            : the old name
+	 * @param newName
+	 *            : the new one
+	 */
+	public ClassRenamer(ClassVisitor cv, String oldName, String newName) {
+		super(cv);
+		this.oldName = oldName;
+		this.newName = newName;
+	}
+
+	/****************************************************************************
+	 * the visit method which scans the class header.
+	 * <dl>
+	 * <dt>version</dt>
+	 * <dd>??? the version of the method?</dd>
+	 * <dt>access</dt>
+	 * <dd>public, private of protected. The constant ACC_PUBLIC is 1 when
+	 * ACC_PRIVATE is 2</dd>
+	 * <dt>name</dt>
+	 * <dd>the name of the class, so here is our first replacement</dd>
+	 * </dl>
+	 */
+	public void visit(int version, int access, String name, String signature,
+			String superName, String[] interfaces) {
+		cv.visit(version, ACC_PUBLIC, newName, signature, superName, interfaces);
+	}
+
+	/****************************************************************************
+	 * This method does the same work as the one before but, this time, in all
+	 * methods. <br />
+	 * I don't know the meaning of the if test yet.
+	 * <ul>
+	 * <li> <tt> desc </tt> - the method's descriptor, (public Class<?>
+	 * methodName(args[]))</li>
+	 * </ul>
+	 */
+	public MethodVisitor visitMethod(int access, String name, String desc,
+			String signature, String[] exceptions) {
+
+		MethodVisitor mv = cv.visitMethod(access, name, fix(desc),
+				fix(signature), exceptions);
+		// MethodVisitor mv = cv.visitMethod(access, name, (desc), (signature),
+		// exceptions);
+		// (access & ACC_ABSTRACT) is looking for whether the class is an
+		// abstract class or not.
+		// ACC_ABSTRACT = 1024 is the level of an abstract class.
+		if (mv != null && (access != ACC_ABSTRACT)) {
+			mv = (MethodVisitor)(new MethodRenamer(mv, oldName, newName));
+		}
+		return mv;
+
+	}
+
+	/****************************************************************************
+	 * The fix method which change all the occurences of <tt>oldName<tt> with 
+	 * <tt>newName</tt>. As the called method is <tt>String.replaceAll</tt> no
+	 * ones can assure that it works perfectly for sure. But the fail rate
+	 * should be less that 0.0001%...
+	 */
+	private String fix(String s) {
+
+		if (s != null) {
+			if (s.contains(oldName)) {
+				s = s.replaceAll(oldName, newName);
+			}
+		}
+
+		return s;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/asm/HelloWorldGenerator.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,88 @@
+package stx.libjava.tests.asm;
+
+import org.objectweb.asm.*;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class HelloWorldGenerator implements Opcodes {
+	
+	public static byte[] generate() throws Exception {
+
+		ClassWriter cw = new ClassWriter(0);
+		FieldVisitor fv;
+		MethodVisitor mv;
+
+		cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER, "HelloWorld", null,
+				"java/lang/Object", null);
+
+		{
+			fv = cw.visitField(ACC_PRIVATE, "name", "Ljava/lang/String;", null,
+					null);
+			fv.visitEnd();
+		}
+		{
+			mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;)V",
+					null, null);
+			mv.visitCode();
+			mv.visitVarInsn(ALOAD, 0);
+			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
+					"()V");
+			mv.visitVarInsn(ALOAD, 0);
+			mv.visitVarInsn(ALOAD, 1);
+			mv.visitFieldInsn(PUTFIELD, "HelloWorld", "name",
+					"Ljava/lang/String;");
+			mv.visitInsn(RETURN);
+			mv.visitMaxs(2, 2);
+			mv.visitEnd();
+		}
+		{
+			mv = cw.visitMethod(ACC_PUBLIC, "sayHello", "()V", null, null);
+			mv.visitCode();
+			mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out",
+					"Ljava/io/PrintStream;");
+			mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
+			mv.visitInsn(DUP);
+			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder",
+					"<init>", "()V");
+			mv.visitLdcInsn("Hello World from ");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+			mv.visitVarInsn(ALOAD, 0);
+			mv.visitFieldInsn(GETFIELD, "HelloWorld", "name",
+					"Ljava/lang/String;");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"toString", "()Ljava/lang/String;");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println",
+					"(Ljava/lang/String;)V");
+			mv.visitInsn(RETURN);
+			mv.visitMaxs(3, 1);
+			mv.visitEnd();
+		}
+		{
+			mv = cw.visitMethod(ACC_PUBLIC, "getHello", "()Ljava/lang/String;",
+					null, null);
+			mv.visitCode();
+			mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
+			mv.visitInsn(DUP);
+			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder",
+					"<init>", "()V");
+			mv.visitLdcInsn("Hello World from ");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+			mv.visitVarInsn(ALOAD, 0);
+			mv.visitFieldInsn(GETFIELD, "HelloWorld", "name",
+					"Ljava/lang/String;");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
+					"toString", "()Ljava/lang/String;");
+			mv.visitInsn(ARETURN);
+			mv.visitMaxs(2, 1);
+			mv.visitEnd();
+		}
+		cw.visitEnd();
+
+		return cw.toByteArray();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/asm/MethodRenamer.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,101 @@
+package stx.libjava.tests.asm;
+
+import org.objectweb.asm.MethodAdapter;
+import org.objectweb.asm.MethodVisitor;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MethodRenamer extends MethodAdapter {
+	  
+	/****************************************************************************
+	 * we only modify a name so two String attributes are enough
+	 */
+	private String oldName;
+	private String newName;
+	
+	/****************************************************************************
+	 * nothing to say...a super() constructor
+	 * @param mv
+	 */
+	public MethodRenamer(MethodVisitor mv,String oldName, String newName){
+		super(mv);
+		this.oldName = oldName;
+		this.newName = newName;
+	}
+		
+	
+	
+	/****************************************************************************
+	 * Visits a type instruction. 
+	 * A type instruction is an instruction that takes a type descriptor as parameter.
+	 * 
+	 * @param opcode - the opcode of the type instruction to be visited. 
+	 * This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF. 
+	 * 
+	 * @param desc - the operand of the instruction to be visited. 
+	 * This operand is must be a fully qualified class name in internal form, 
+	 * or the type descriptor of an array type (see Type).
+	 */
+	public void visitTypeInsn (int opcode, String desc) {
+		if (oldName.equals(desc)) {
+			desc = newName;
+		}
+		mv.visitTypeInsn(opcode, desc);
+	}
+	
+	
+	
+	/****************************************************************************
+	 * Visits a field instruction. 
+	 * A field instruction is an instruction that loads or stores the value of a field of an object.
+	 * 
+	 * @param opcode - the opcode of the type instruction to be visited. 
+	 * This opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD. 
+	 * @param owner - the internal name of the field's owner class (see getInternalName).
+	 * @param name - the field's name.
+	 * @param desc - the field's descriptor (see Type).
+	 */	
+	public void visitFieldInsn (int opcode, String owner, String name, String desc) {
+		if (oldName.equals(owner)) {
+			mv.visitFieldInsn(opcode, newName, name, fix(desc));
+		} else {
+			mv.visitFieldInsn(opcode, owner, name, fix(desc));
+		}
+	}
+		
+	
+	
+	/****************************************************************************
+	 * Visits a method instruction. 
+	 * A method instruction is an instruction that invokes a method.
+	 * @param opcode - the opcode of the type instruction to be visited. 
+	 * This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
+	 * @param owner - the internal name of the method's owner class (see getInternalName).
+	 * @param name - the method's name.
+	 * @param desc - the method's descriptor (see Type).
+	 */
+	public void visitMethodInsn (int opcode, String owner, String name, String desc) {
+		if (oldName.equals(owner)) {
+			mv.visitMethodInsn(opcode, newName, name, fix(desc));
+		} else {
+			mv.visitMethodInsn(opcode, owner, name, fix(desc));
+		}
+	 }
+	
+	/****************************************************************************
+	   * The fix method which change all the occurences of <tt>oldName<tt> with 
+	   * <tt>newName</tt>. As the called method is <tt>String.replaceAll</tt>
+	   * no ones can assure that it works perfectly for sure. But the fail rate 
+	   * should be less that 0.0001%...
+	   */
+	  private String fix (String s) {
+		  
+		if (s != null) {
+			if (s.contains(oldName)){
+				s = s.replaceAll(oldName, newName);
+			}
+		}
+		
+		return s;
+	  }
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/AnnotationTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,115 @@
+package stx.libjava.tests.lang;
+
+import org.junit.Test;
+import stx.libjava.tests.mocks.EnumValueAnnotation;
+import stx.libjava.tests.mocks.HeavilyAnnotatedClass;
+import stx.libjava.tests.mocks.Weather;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URLClassLoader;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement; // get some nice annotations
+import javax.xml.bind.annotation.XmlElements;// get some nice annotations
+
+import static org.junit.Assert.assertTrue;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class AnnotationTests {
+
+    @Test
+    public void testClassAnnotations() {
+        Annotation[] annotations = HeavilyAnnotatedClass.class.getAnnotations();
+        for (Annotation a : annotations) {
+            System.out.println(a.annotationType());
+        }
+        assertTrue(annotations.length == 5);
+    }
+
+    @Test
+    public void testFieldAnnotations() throws Exception {
+        Field field = new HeavilyAnnotatedClass().getClass().getDeclaredField("heavilyAnnotatedField");
+        Annotation[] annotations = field.getAnnotations();
+        for (Annotation a : annotations) {
+            System.out.println(a.annotationType());
+        }
+        assertTrue(annotations.length == 4);
+    }
+
+    @Test
+    public void testMethodAnnotations() throws Exception {
+        Method method = new HeavilyAnnotatedClass().getClass().getDeclaredMethod("heavilyAnnotatedMethod", String.class);
+        Annotation[] annotations = method.getAnnotations();
+        for (Annotation a : annotations) {
+            System.out.println(a.annotationType());
+        }
+        assertTrue(annotations.length == 4);
+    }
+
+    @Test
+    public void testConstructorAnnotations() throws Exception {
+        Constructor ctor = new HeavilyAnnotatedClass().getClass().getDeclaredConstructor(String.class);
+        Method method = ctor.getClass().getDeclaredMethod("getRawParameterAnnotations");
+        method.setAccessible(true);
+        byte[] rawParamAnnotations = (byte[]) method.invoke(ctor);
+        assertTrue(rawParamAnnotations.length == 14);
+    }
+
+    @Test
+    public void testConstructorParamAnnotations() throws Exception {
+        Constructor ctor = new HeavilyAnnotatedClass().getClass().getDeclaredConstructor(String.class);
+        Annotation[][] parameterAnnotations = ctor.getParameterAnnotations();
+        Class[] parameterTypes = ctor.getParameterTypes();
+
+        int i = 0;
+        for (Annotation[] annotations : parameterAnnotations) {
+            Class parameterType = parameterTypes[i++];
+            for (Annotation annotation : annotations) {
+                assertTrue(annotation instanceof EnumValueAnnotation);
+                EnumValueAnnotation myAnnotation = (EnumValueAnnotation) annotation;
+                assertTrue(myAnnotation.value().equals(Weather.SUNNY));
+            }
+        }
+    }
+
+    @Test
+    public void testMethodParamAnnotations() throws Exception {
+        Method method = new HeavilyAnnotatedClass().getClass().getDeclaredMethod("heavilyAnnotatedMethod", String.class);
+        Annotation[][] parameterAnnotations = method.getParameterAnnotations();
+        Class[] parameterTypes = method.getParameterTypes();
+
+        int i = 0;
+        for (Annotation[] annotations : parameterAnnotations) {
+            Class parameterType = parameterTypes[i++];
+
+            for (Annotation annotation : annotations) {
+                assertTrue(annotation instanceof EnumValueAnnotation);
+                EnumValueAnnotation myAnnotation = (EnumValueAnnotation) annotation;
+                assertTrue(myAnnotation.value().equals(Weather.SUNNY));
+            }
+        }
+    }
+
+    @Test
+    public void testNestedAnnotations() {
+    	/* Load the class from different directory - because if classreader
+    	 * broken, then the test suite will fail to load, which should be avoided
+    	 */
+    	try {
+    		ClassLoader cl = new URLClassLoader(ClassLoaderTests.getTestClassesDirectory());
+    		Class classWithNestedAnnotations = cl.loadClass("ClassWithNestedAnnotations");
+    		assertTrue(true); // at least, it reads
+    	} catch (Exception e) {
+    		e.printStackTrace();
+    		assertTrue("Got exception: " + e.getMessage(), false);
+    	}
+
+
+
+    }
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ArrayTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,77 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ArrayTests {
+
+    @Test
+    public void test_01() {        
+        String[] sa = new String[3];
+        Object[] oa = (Object[])sa;
+        boolean gotASE = false;
+        try {
+            oa[0] = new Integer(1);                
+        } catch (ArrayStoreException ase) {
+            gotASE = true;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            
+        }
+        assertTrue(gotASE);
+    }
+    
+    // ArrayIndexOutOfBoundsException - under
+    @Test
+    public void test_02a() {        
+        String[] sa = new String[3];        
+        boolean gotAIOB = false;
+        try {
+            sa[-1] = "XXX";                 
+        } catch (ArrayIndexOutOfBoundsException aiob) {
+            gotAIOB = true;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            
+        }
+        assertTrue(gotAIOB);
+    }
+
+    // ArrayIndexOutOfBoundsException - over
+    @Test
+    public void test_02b() {        
+        String[] sa = new String[3];        
+        boolean gotAIOB = false;
+        try {
+            sa[3] = "XXX";                 
+        } catch (ArrayIndexOutOfBoundsException aiob) {
+            gotAIOB = true;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            
+        }
+        assertTrue(gotAIOB);
+    }
+    
+ // ArrayIndexOutOfBoundsException - over
+    @Test
+    public void test_02c() {        
+        String[] sa = new String[3];        
+        boolean gotAIOB = false;
+        try {
+            sa[0] = "XXX";                 
+            sa[1] = "XXX";
+            sa[2] = "XXX";
+        } catch (ArrayStoreException ase) {
+            gotAIOB = true;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            
+        }
+        assertFalse(gotAIOB);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ClassLoaderTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,304 @@
+package stx.libjava.tests.lang;
+
+import org.junit.Test;
+import stx.libjava.tests.mocks.EyeOpeningClassLoader;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import static org.junit.Assert.*;
+
+@SuppressWarnings("rawtypes")
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ClassLoaderTests {
+
+    @Test
+    public void testBootstrapClassLoader() throws Exception {
+        Class clazz = Class.forName("java.lang.Object");
+        assertTrue(clazz.getClassLoader() == null);
+        System.out.println(System.getProperty("sun.boot.class.path"));
+        System.out.println(System.getProperty("java.ext.dirs"));
+    }
+
+    @Test
+    public void testSystemClassLoader() throws Exception {
+        ClassLoader cl = ClassLoader.getSystemClassLoader();
+        Class clazz = cl.loadClass("org.junit.Test");
+        assertNotNull(clazz);
+        
+        /* 
+         * On STX:LIBJAVA, junit4 & groovy are in ext dirs so they're loaded
+         * by "ext" classloader, unlike on real JVM where those classes are
+         * loaded by standard system class loader. Thus this conditional
+         * assert
+         */
+        /* Not any longer - caused problems because Groovy than
+         * could not load classes loadable by system classloader.
+         */
+        //if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
+        //	// STX:LIBJAVA
+        //	assertEquals(cl.getParent(), clazz.getClassLoader());
+        //} else {
+        	// Any other VM
+        	assertEquals(cl, clazz.getClassLoader());
+        //}  
+    }
+
+    @Test
+    public void testSystemClassLoader2() throws Exception {
+        Class clazz = Class.forName("org.hamcrest.Factory");
+        assertTrue(clazz.getClassLoader().equals(ClassLoader.getSystemClassLoader()));
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromRT() throws Exception {
+        Class clazz = Class.forName("javax.sql.DataSource");
+        assertTrue(clazz.getClassLoader() == null);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromRT2() throws Exception {
+        Class clazz = Class.forName("org.xml.sax.Parser");
+        assertTrue(clazz.getClassLoader() == null);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease() throws Exception {
+        Class clazz = Class.forName("sun.io.CharToByteDoubleByte");
+        assertTrue(clazz.getClassLoader() == null);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsNOTEverythingFromJavaRelease2() throws Exception {
+        Class clazz = Class.forName("sun.net.spi.nameservice.dns.DNSNameService");
+        ClassLoader expected = ClassLoader.getSystemClassLoader();
+        ClassLoader real = clazz.getClassLoader();
+        assertEquals(expected.getParent(), real);
+        //WEIRD..
+        assertNotSame(expected, real);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease3() throws Exception {
+        Class clazz = Class.forName("javax.net.SocketFactory");
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease4() throws Exception {
+        Class clazz = Class.forName("com.sun.net.ssl.TrustManager");
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease5() throws Exception {
+        Class clazz = Class.forName("javax.crypto.Cipher");
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease6() throws Exception {
+        Class clazz = Class.forName("sun.security.internal.spec.TlsKeyMaterialParameterSpec");
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+    @Test
+    public void testBootstrapCLLoadsEverythingFromJavaRelease7() throws Exception {
+        Class clazz = Class.forName("java.lang.Thread");
+        assertTrue(clazz.getClassLoader() == null);
+    }
+
+    @Test
+    public void testSystemClassLoaderClassLoader() throws Exception {
+        Class clazz = ClassLoader.getSystemClassLoader().getClass();
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+    @Test
+    public void testSystemClassLoaderParentClassLoader() throws Exception {
+        Class clazz = ClassLoader.getSystemClassLoader().getParent().getClass();
+        ClassLoader real = clazz.getClassLoader();
+        assertNull(real);
+    }
+
+
+    @Test
+    public void testWeirdDNSClassLoader() throws Exception {
+        Class clazz = Class.forName("sun.net.spi.nameservice.dns.DNSNameService");
+        ClassLoader real = clazz.getClassLoader().getParent();
+        assertNull(real);
+    }
+
+
+    @Test
+    public void testSystemClassLoaderLoadingRTClass() throws Exception {
+        ClassLoader cl = ClassLoader.getSystemClassLoader();
+        Class clazz = cl.loadClass("java.util.ArrayList");
+        assertNotNull(clazz);
+        assertNull(clazz.getClassLoader());
+    }
+
+    @Test
+    public void testNiceClassLoaderDelegation() throws Exception {
+        URL[] urls = new URL[1];
+        File file = new File("foos");
+        urls[0] = file.toURL();
+        URLClassLoader cl = new URLClassLoader(urls);
+        Class result = Class.forName("org.junit.Test", true, cl);
+        
+        /* 
+         * On STX:LIBJAVA, junit4 & groovy are in ext dirs so they're loaded
+         * by "ext" classloader, unlike on real JVM where those classes are
+         * loaded by standard system class loader. Thus this conditional
+         * assert
+         */
+        /* Not any longer - caused problems because Groovy than
+         * could not load classes loadable by system classloader.
+         */
+        //if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
+        //	// STX:LIBJAVA
+        //	assertEquals(result.getClassLoader(), ClassLoader.getSystemClassLoader().getParent());
+        //} else {
+        //	// Any other VM
+        	assertEquals(result.getClassLoader(), ClassLoader.getSystemClassLoader());
+        //}
+    }
+
+    @Test
+    public void testNiceClassLoaderSelfLoading() throws Exception {
+        URLClassLoader cl = new URLClassLoader(getTestClassesDirectory());
+        Class result = Class.forName("Foo", true, cl);
+        assertEquals(cl, result.getClassLoader());
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadObject() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadObject();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadRuntimeException()
+            throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadRuntimeException();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadMethod() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadMethod();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadString() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadString();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadDatasource() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadDatasource();
+            // no exception should be raised
+        } catch (NullPointerException e) {
+            // it will fail on internals, but we only care about security
+            // exception
+        }
+        assertTrue(true);
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadBits() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadBits();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testEyeOpeningClassLoaderLoadArray() throws Exception {
+        try {
+            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
+            cl.tryToLoadArray();
+            assertTrue(false);
+        } catch (SecurityException e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testParentOfSystemClassLoader() {
+        ClassLoader parent = ClassLoader.getSystemClassLoader().getParent();
+//		system->sun.misc.Launcher$AppClassLoader@16f0472
+//		parent->sun.misc.Launcher$ExtClassLoader@18d107f
+        assertNull(parent.getParent());
+    }
+
+    @Test
+    public void testNiceClassLoaderSelfLoading2() throws Exception {
+        URLClassLoader cl = new URLClassLoader(getTestClassesDirectory());
+        Class result = Class.forName("Foo", true, cl);
+        assertEquals(cl, result.getClassLoader());
+        assertEquals(cl, result.getSuperclass().getClassLoader());
+        assertNull(result.getDeclaredField("baz").getClass().getClassLoader());
+    }
+
+    @Test
+    public void testNiceClassLoaderSelfLoadingWithPreCaching() throws Exception {
+        URL[] urls = getTestClassesDirectory();
+        URLClassLoader cl = new URLClassLoader(urls);
+        Class result = Class.forName("Foo", true, cl);
+        assertNull(result.getDeclaredField("baz").getClass().getClassLoader());
+    }
+
+    @Test
+    public void testTwoSameClassesInDifferentCLsAreDifferent() throws Exception {
+        URL[] urls = getTestClassesDirectory();
+        URLClassLoader cl1 = new URLClassLoader(urls);
+        URLClassLoader cl2 = new URLClassLoader(urls);
+        Class result1 = Class.forName("Foo", true, cl1);
+        Class result2 = Class.forName("Foo", true, cl2);
+        assertNotSame(result1, result2);
+    }
+
+    public static URL[] getTestClassesDirectory() throws Exception {
+        String[] paths = {"classloader-tests-classes/bin",
+                System.getProperty("libjava.tests.dir") + "/java/classloader-tests-classes/bin"};
+        URL[] result = new URL[paths.length];
+        for (int i = 0; i < paths.length; i++) {
+            result[i] = new File(paths[i]).toURL();
+        }
+        return result;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ConstructorTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,100 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ConstructorTests {
+	
+	public static class A {
+		public int f;
+			
+		public A(int i, int j) {
+			f = i + j;
+		}
+		
+		public A(int i) {
+			this(i, 10);
+		}
+		
+		public A() {
+			this(10);
+		}
+		
+		public A(Integer i) {
+			this(i.intValue());
+		}
+	}
+	
+	public static class B extends A {
+		public B(int i, int j) {
+			f = i - j;
+		}
+		
+		public B(int i) {
+			super(i);
+		}
+		
+		public B() {
+			this(10);
+		}		
+	}
+	
+	public static class C extends B {
+		public C(Integer i) {
+			super(new Integer(i.intValue() + 1000));
+		}
+	}
+	
+	
+	public static class X {
+		public int f = -1;
+		public X() {
+			f = 1;
+		}
+	}
+	
+	public static class Y extends X {
+	}
+	
+	public static class Z extends Y {
+		public Z() {
+			super();
+		}
+	}
+	
+	public static class W extends X {
+	}
+
+	@Test
+	public void test_01() {
+		B b = new B();
+		assertEquals(20, b.f);
+	}
+
+	@Test
+	public void test_02() {
+		B b = new B(10, 10);
+		assertEquals(0, b.f);
+	}
+
+	@Test
+	public void test_03() {
+		C c = new C(new Integer(10));
+		assertEquals(1020, c.f);
+	}
+	
+	@Test
+	public void test_04() {
+		Z z = new Z();
+		assertEquals(1, z.f);
+		
+		Y y = new Y();
+		assertEquals(1, y.f);
+		
+		W w = new W();
+		assertEquals(1, w.f);
+
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ExceptionTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,49 @@
+package  stx.libjava.tests.lang;
+
+import  java.lang.IllegalArgumentException;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ExceptionTests {
+
+    public int token = 0;
+
+    public void throw_me(boolean flag) {
+	if (flag)
+	    throw new IllegalArgumentException();
+    }
+
+    public void call(boolean flag) {
+	this.call(new ThrowCaller(), flag);
+    }
+
+    public void test_03(boolean do_throw) {
+	try {
+	    token = 1;
+	    if (do_throw)
+		throw new IllegalArgumentException();
+	    token = 2;
+	} finally {
+	    token = 3;
+	}
+    }
+
+    public void test_04(ThrowCaller thrower, boolean do_throw) {
+	try {
+	    token = 1;
+	    thrower.call(this, do_throw);
+	    token = 2;
+	} finally {
+	    token = 3;
+	}
+    }
+
+    public void call(ThrowCaller caller, boolean flag) {
+	caller.call(this, flag);
+    }
+
+    class ThrowCaller {
+	public void call(ExceptionTests inst, boolean flag) {
+	    inst.throw_me(flag);
+	}
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/FloatAndDoubleTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,18 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class FloatAndDoubleTests {
+
+	@Test
+	public void test() {
+		double f1 = Double.MAX_VALUE;		
+		String s = Double.toString(f1);
+		double f2 = Double.valueOf(s);
+		assertTrue(f1 == f2);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/MemberVisibilityTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,38 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import stx.libjava.tests.mocks.a.A;
+import stx.libjava.tests.mocks.b.B;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MemberVisibilityTests {
+
+	// Package private methods are not yet correctly supported by stx:libjava
+	@Test @Ignore
+	public void testPackagePrivateNormal() {
+		String result;
+		result = A.callMethod1(new A());
+		assertEquals(result , "A.method1()");
+		
+		result = A.callMethod1(new B());
+		assertEquals(result , "A.method1()"); //!!!!!!!!		
+	}
+	
+	// Package private methods are not yet correctly supported by stx:libjava	
+	@Test @Ignore
+	public void testPackagePrivateReflection() {
+		String result;
+		result = A.callMethod1ViaReflection(new A());
+		assertEquals(result , "A.method1()");
+		
+		result = A.callMethod1ViaReflection(new B());
+		assertEquals(result , "A.method1()");				
+	}
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/MonitorTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,80 @@
+package stx.libjava.tests.lang;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MonitorTests {
+    /** An arbitrary token. Methods may assign
+     *  a value which may be asserted then
+     */
+    int token = 0;
+
+    public void syncAndAbort(Object obj) {
+	    synchronized (obj) {
+		    abort();
+	    }
+    }
+
+    @Test
+    public void test01() {
+    	/* Do not run this test on real JVM as there is no native
+    	 * abort()
+    	 */
+    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
+    		Object obj = new Object();	    
+    		syncAndAbort(obj);
+    		syncAndAbort(obj);
+    	}
+    }
+
+    public native void abort();
+
+
+    /** Not a test standalone, called by
+     *  JavaMonitorTests>>test_releasing_01
+     */
+    public void test_releasing_01 () {
+		try {
+			token = 1;
+			test_releasing_01_finally();
+			token += 10;
+		} catch (Exception e) {
+			token += 100;
+		}
+
+		try {
+			test_releasing_01_no_exception();
+			token += 1000000;
+		} catch (Exception e) {
+			token += 10000000;
+		}
+    }
+
+    public synchronized void test_releasing_01_finally_with_no_exception() {
+		try {
+			test_releasing_01_no_exception();
+		} finally {
+			token += 10000;
+		}
+    }
+
+    public void test_releasing_01_finally() {
+		try {
+			test_releasing_01_throw_indirect();
+		} finally {
+			token += 1000;
+		}
+    }
+
+    public synchronized void test_releasing_01_throw_indirect() {
+		test_releasing_01_throw();
+    }
+
+	public synchronized void test_releasing_01_no_exception() {
+		token += 100000;
+	}
+
+    public void test_releasing_01_throw() {
+		throw new RuntimeException("thrown in JavaMinitorTests#test_releasing_01_throw()");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/MoreThan16ArgumentsTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,92 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MoreThan16ArgumentsTests {
+
+	private int sumArgs(int a1, int a2, int a3, int a4, int a5, int a6, int a7,
+			int a8, int a9, int a10, int a11, int a12, int a13, int a14,
+			int a15, int a16, int a17, int a18, int a19, int a20) {
+		int result = a1 + a2 + a3+ a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20;
+		return result;
+	}
+	
+	private int[] arrayOfArgs (int a1, int a2, int a3, int a4, int a5, int a6, int a7,
+			int a8, int a9, int a10, int a11, int a12, int a13, int a14,
+			int a15, int a16, int a17, int a18, int a19, int a20) {
+		int [] result = new int[20];
+		result[0]=a1;
+		result[1]=a2;
+		result[2]=a3;
+		result[3]=a4;
+		result[4]=a5;
+		result[5]=a6;
+		result[6]=a7;
+		result[7]=a8;
+		result[8]=a9;
+		result[9]=a10;
+		result[10]=a11;
+		result[11]=a12;
+		result[12]=a13;
+		result[13]=a14;
+		result[14]=a15;
+		result[15]=a16;
+		result[16]=a17;
+		result[17]=a18;
+		result[18]=a19;
+		result[19]=a20;
+		
+		return result;
+	}
+	
+	private int[] varargs(int ... args) {
+		int[] result = new int[args.length];
+		for (int i = 0; i < args.length; i++) {
+			result[i] = args[i];
+		}
+		return result;
+	}
+
+	@Test
+	public void testSumArgs() {
+		int actual = sumArgs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
+		int expected = (1+20)*10;
+		assertEquals(expected, actual);
+	}
+	
+	@Test
+	public void testPositions() {
+		int [] result = arrayOfArgs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);		
+		assertEquals(result[0], 1);
+		assertEquals(result[1], 2);
+		assertEquals(result[2], 3);
+		assertEquals(result[3], 4);
+		assertEquals(result[4], 5);
+		assertEquals(result[5], 6);
+		assertEquals(result[6], 7);
+		assertEquals(result[7], 8);
+		assertEquals(result[8], 9);
+		assertEquals(result[9], 10);
+		assertEquals(result[10], 11);
+		assertEquals(result[11], 12);
+		assertEquals(result[12], 13);
+		assertEquals(result[13], 14);
+		assertEquals(result[14], 15);
+		assertEquals(result[15], 16);
+		assertEquals(result[16], 17);
+		assertEquals(result[17], 18);
+		assertEquals(result[18], 19);
+		assertEquals(result[19], 20);		
+	}
+	
+	@Test
+	public void testVarargs() {
+		int[] actual = varargs(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
+		for (int i = 0; i < 20; i++ ) {
+			assertEquals(actual[i], i+1);
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ReflectionTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,264 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import java.lang.reflect.Method;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ReflectionTests {
+
+    public Byte byte2Byte(byte b) {
+        return new Byte(b);
+    }
+
+    @Test
+    public void test_byte2Byte() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("byte2Byte", byte.class);
+            assertEquals(m.invoke(this, new Byte((byte) 10)), new Byte(
+                    (byte) 10));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Short short2Short(short b) {
+        return new Short(b);
+    }
+
+    @Test
+    public void test_short2Short() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("short2Short", short.class);
+            assertEquals(m.invoke(this, new Short((short) 10)), new Short(
+                    (short) 10));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Integer int2Integer(int i) {
+        return new Integer(i);
+    }
+
+    @Test
+    public void test_int2Integer() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("int2Integer", int.class);
+            assertEquals(m.invoke(this, new Integer(10)), new Integer(10));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Long long2Long(long i) {
+        return new Long(i);
+    }
+
+    @Test
+    public void test_int2Long() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("long2Long", long.class);
+            assertEquals(m.invoke(this, new Long(10)), new Long(10));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Float float2Float(float i) {
+        return new Float(i);
+    }
+
+    @Test
+    public void test_float2Float() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("float2Float", float.class);
+            assertEquals(m.invoke(this, new Float(10.1)), new Float(10.1));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Double double2double(double i) {
+        return new Double(i);
+    }
+
+    @Test
+    public void test_double2double() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("double2double", double.class);
+            assertEquals(m.invoke(this, new Double(10.1)), new Double(10.1));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Boolean boolean2Boolean(boolean i) {
+        return new Boolean(i);
+    }
+
+    @Test
+    public void test_boolean2Boolean() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("boolean2Boolean", boolean.class);
+            assertEquals(m.invoke(this, new Boolean(true)), new Boolean(true));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+
+    public Character char2Character(char i) {
+        return new Character(i);
+    }
+
+    @Test
+    public void test_char2Character() {
+        try {
+            Method m;
+            m = this.getClass().getMethod("char2Character", char.class);
+            assertEquals(m.invoke(this, new Character('a')), new Character('a'));
+        } catch (Exception t) {
+            t.printStackTrace(System.err);
+            assertTrue("Exception", false);
+        }
+    }
+    
+    @Test 
+    public void test_getCompomentClass_01() {
+        byte[]    ba = new byte[1];
+        short[]   sa = new short[1];
+        int[]     ia = new int[1];
+        long[]    la = new long[1];
+        float[]   fa = new float[1];
+        double[]  da = new double[1];
+        boolean[] ta = new boolean[1];
+        char[]    ca = new char[1];
+        Object[]  oa = new Object[1];
+        
+        assertEquals(ba.getClass().getComponentType(), Byte.TYPE);
+        assertEquals(sa.getClass().getComponentType(), Short.TYPE);
+        assertEquals(ia.getClass().getComponentType(), Integer.TYPE);
+        assertEquals(la.getClass().getComponentType(), Long.TYPE);
+        assertEquals(fa.getClass().getComponentType(), Float.TYPE);
+        assertEquals(da.getClass().getComponentType(), Double.TYPE);
+        assertEquals(ta.getClass().getComponentType(), Boolean.TYPE);
+        assertEquals(ca.getClass().getComponentType(), Character.TYPE);
+        assertEquals(oa.getClass().getComponentType(), Object.class);
+    }
+    
+    @Test 
+    public void test_getCompomentClass_02() {
+        byte[][]    ba = new byte[1][1];
+        short[][]   sa = new short[1][1];
+        int[][]     ia = new int[1][1];
+        long[][]    la = new long[1][1];
+        float[][]   fa = new float[1][1];
+        double[][]  da = new double[1][1];
+        boolean[][] ta = new boolean[1][1];
+        char[][]    ca = new char[1][1];
+        Object[][]  oa = new Object[1][1];
+        
+        assertEquals(ba[0].getClass().getComponentType(), Byte.TYPE);
+        assertEquals(sa[0].getClass().getComponentType(), Short.TYPE);
+        assertEquals(ia[0].getClass().getComponentType(), Integer.TYPE);
+        assertEquals(la[0].getClass().getComponentType(), Long.TYPE);
+        assertEquals(fa[0].getClass().getComponentType(), Float.TYPE);
+        assertEquals(da[0].getClass().getComponentType(), Double.TYPE);
+        assertEquals(ta[0].getClass().getComponentType(), Boolean.TYPE);
+        assertEquals(ca[0].getClass().getComponentType(), Character.TYPE);
+        assertEquals(oa[0].getClass().getComponentType(), Object.class);
+    }
+    
+    public static class NestedClassL1 {
+        protected Object o1;
+        
+        public static class NestedClassL2 {
+            
+        }
+        
+        public NestedClassL1() {
+            o1 = new Object() { public int hashCode() { return 10; } }; 
+        }
+        
+        public Object getO1() {
+            return o1;
+        }
+        
+        public Object getO2() {
+            return new Object() { public int hashCode() { return 20; } };
+        }
+        
+        
+    }
+    
+    @Test
+    public void test_getEnclosingClass_01() {
+        assertEquals(this.getClass(), NestedClassL1.class.getEnclosingClass() );
+        assertEquals(NestedClassL1.class, NestedClassL1.NestedClassL2.class.getEnclosingClass() );
+    }
+    
+    @Test
+    public void test_getEnclosingClass_02() {
+        Object o = new Object() { public int hashCode() { return 10; } };         
+        assertEquals(this.getClass(), o.getClass().getEnclosingClass() );        
+    }
+    
+    @Test 
+    public void test_getEnclosingMethod_01() {
+        Object o1 = (new NestedClassL1()).getO1();
+        Object o2 = (new NestedClassL1()).getO2();
+        
+        assertEquals(null, o1.getClass().getEnclosingMethod());
+        try {
+            assertEquals(NestedClassL1.class.getDeclaredMethod("getO2", new Class[0]), o2.getClass().getEnclosingMethod());
+        } catch (SecurityException e) {
+            fail();            
+        } catch (NoSuchMethodException e) {
+            fail();
+        }
+    }
+    
+    @Test 
+    public void test_getEnclosingConstructor_01() {
+        Object o1 = (new NestedClassL1()).getO1();
+        Object o2 = (new NestedClassL1()).getO2();
+                
+        try {
+            assertEquals(NestedClassL1.class.getDeclaredConstructor(new Class[0]), o1.getClass().getEnclosingConstructor());
+        } catch (SecurityException e) {
+            fail();            
+        } catch (NoSuchMethodException e) {
+            fail();
+        }
+        assertEquals(null, o2.getClass().getEnclosingConstructor());
+    }
+    
+    @Test
+    public void test_isAnonymous() {
+        Object o1 = (new NestedClassL1()).getO1();
+        Object o2 = (new NestedClassL1()).getO2();
+
+        assertTrue(o1.getClass().isAnonymousClass());
+        assertTrue(o2.getClass().isAnonymousClass());
+        assertFalse(this.getClass().isAnonymousClass());
+        assertFalse(NestedClassL1.class.isAnonymousClass());
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/StaticVsInstanceResolvingAndLookupTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,70 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+import stx.libjava.tests.mocks.instance_static.InheritInstanceStuff;
+import stx.libjava.tests.mocks.instance_static.InheritInstanceStuffWithStatic;
+import stx.libjava.tests.mocks.instance_static.MissingInstanceStuff;
+import stx.libjava.tests.mocks.instance_static.MissingInstanceStuffWithInterface;
+import stx.libjava.tests.mocks.instance_static.StaticInSuperVsInstInSuperSuper;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class StaticVsInstanceResolvingAndLookupTests {
+	//when no instance method or field is available
+	//but static is, it takes static
+	@Test
+	public void testMissingInstanceThingy() {
+		MissingInstanceStuff s = new MissingInstanceStuff();
+		assertTrue(s.staticField == 0);
+		assertTrue(s.staticMethod() == 0);
+		
+	}
+	
+	//when no instance method or field is available
+	//but static in super super and interface in super is, it takes super
+	@Test
+	public void testSuperVsIfaceFight() {
+		MissingInstanceStuffWithInterface s = new MissingInstanceStuffWithInterface();
+		assertTrue(s.staticField == 0);
+	}
+	
+	//when no instance method or field is available
+	//but there is one in super, it will take it #nosurprise :)
+	@Test
+	public void testBasicInstanceSuper() {
+		InheritInstanceStuff f = new InheritInstanceStuff();
+		assertTrue(f.instField == 0);
+		assertTrue(f.instMethod() == 0);
+	}
+	
+	//when no instance method or field is available
+	//but there is static one in super, and inst in super super
+	//it takes inst in super super
+	@Test
+	public void testStaticInSuperVsInstInSuperSuperFight() {
+		StaticInSuperVsInstInSuperSuper f = new StaticInSuperVsInstInSuperSuper();
+		assertTrue(f.instField == 1);	
+	}
+	
+	
+	
+	
+	
+	//when no instance method or field is available
+	//but static and interface is, it takes static
+	//will not compile :)
+//	@Test()
+//	public void testStaticVsInterfaceFight() {
+//		try {
+//		MissingInstanceStuffWithInterface s = new MissingInstanceStuffWithInterface();
+//		assertTrue(s.staticField == 0);
+//		fail(); 
+//		}
+//		catch (Throwable e) {
+//			assertTrue(true);
+//		}
+//	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ThreadJoinTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,50 @@
+package stx.libjava.tests.lang;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ThreadJoinTests {
+
+	@Test
+	public void testJoiningThreads() {
+		NewThread ob1 = new NewThread("One");
+		NewThread ob2 = new NewThread("Two");
+		NewThread ob3 = new NewThread("Three");
+		assertTrue(ob1.t.isAlive());
+		assertTrue(ob2.t.isAlive());
+		assertTrue(ob3.t.isAlive());
+		try {			
+			ob1.t.join();
+			ob2.t.join();
+			ob3.t.join();
+		} catch (InterruptedException e) {
+			System.out.println("Main thread Interrupted");
+		}
+		assertFalse(ob1.t.isAlive());
+		assertFalse(ob2.t.isAlive());
+		assertFalse(ob3.t.isAlive());		
+	}
+
+}
+
+class NewThread implements Runnable {
+	String name; // name of thread
+	Thread t;
+
+	NewThread(String threadname) {
+		name = threadname;
+		t = new Thread(this, name);		
+		t.start(); // Start the thread
+	}
+
+	public void run() {
+		try {
+			for (int i = 5; i > 0; i--) {
+				Thread.sleep(1000);
+			}
+		} catch (InterruptedException e) {
+			System.out.println(name + " interrupted.");
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ThreadOrderingTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,33 @@
+package stx.libjava.tests.lang;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ThreadOrderingTests extends Thread {
+
+	private String flag;
+	private final static String manager = "Manager was last to set the flag";
+	private final static String thread = "Thread was last to set the flag";
+
+	public void run() {
+		synchronized (this) {
+			setTheFlag(thread);
+		}
+	}
+
+	private synchronized void setTheFlag(String code) {
+		flag = code;
+	}
+
+	@Test
+	public void testOrdering() {
+		try {
+		ThreadOrderingTests t = new ThreadOrderingTests();
+		t.start();
+		setTheFlag(manager);
+		t.join();
+		assertTrue(manager.equals(flag));
+		} catch (InterruptedException ignored) {}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lang/ThreadStopTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,142 @@
+package stx.libjava.tests.lang;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ThreadStopTests {
+    
+    protected void giveUp() {
+        try {
+            Thread.sleep(100);
+        } catch (InterruptedException ie) {
+            // Lovely, really. Very Javaish.  
+        }
+    }
+    
+    @Test
+    public void test_kill_02() {
+        Worker worker = new Worker();
+        Thread workerT = new Thread(worker);
+        
+        workerT.start();
+        try {
+            Thread.sleep(100);
+        } catch (InterruptedException ie) {
+            // Do nothing. I love this Java idiom! 
+        }
+        workerT.interrupt();
+        workerT.stop();
+        giveUp();
+                
+        assertTrue(worker.started);
+        assertTrue(worker.killed);
+        assertFalse(worker.aborted);
+        assertFalse(worker.finished);
+    }
+
+    @Test
+    public void test_kill_01() {
+        Worker worker = new Worker();
+        Thread workerT = new Thread(worker);
+        
+        workerT.start();
+        try {
+            Thread.sleep(100);
+        } catch (InterruptedException ie) {
+            // Do nothing. I love this Java idiom! 
+        }
+        workerT.stop();
+        giveUp();
+                
+        assertTrue(worker.started);
+        assertTrue(worker.killed);
+        assertFalse(worker.aborted);
+        assertFalse(worker.finished);
+    }
+    
+    @Test
+    public void test_abort_02() {
+        Worker worker = new Worker();
+        Thread workerT = new Thread(worker);
+        
+        workerT.start();
+        try {
+            Thread.sleep(100);
+        } catch (InterruptedException ie) {
+            // Do nothing. I love this Java idiom! 
+        }
+        workerT.interrupt();
+        workerT.stop(new AbortSignal());
+        giveUp();
+                
+        assertTrue(worker.started);
+        assertFalse(worker.killed);
+        assertTrue(worker.aborted);
+        assertFalse(worker.finished);
+    }
+
+    @Test
+    public void test_abort_01() {
+        Worker worker = new Worker();
+        Thread workerT = new Thread(worker);
+        
+        workerT.start();
+        try {
+            Thread.sleep(100);
+        } catch (InterruptedException ie) {
+            // Do nothing. I love this Java idiom! 
+        }
+        workerT.stop(new AbortSignal());
+        giveUp();
+                
+        assertTrue(worker.started);
+        assertFalse(worker.killed);
+        assertTrue(worker.aborted);
+        assertFalse(worker.finished);
+    }
+    
+    
+    class AbortSignal extends Error {
+    }
+    
+    class Worker implements Runnable {
+        public boolean started = false;
+        public boolean killed = false;
+        public boolean aborted = false;
+        public boolean finished = false;
+
+        @Override
+        public void run() {
+            started = true;
+            try {
+                work();
+                finished = true;
+                return;
+            } catch (AbortSignal ae) {
+                aborted = true;
+                return;
+            } catch (ThreadDeath td) {
+                killed = true;
+                throw td;
+            }           
+        }
+        
+        public void work() {
+            // Just to keep thread busy for some time
+            for (int i = 1; i < 3; i++) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException ie) {
+                    // Simulate a bad guy
+                    i--;
+                } catch (Exception e) {
+                    // Simulate a really bad guy
+                    i--;
+                }
+            }
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lib/java/net/InetAddressTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,25 @@
+package stx.libjava.tests.lib.java.net;
+
+import static org.junit.Assert.*;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class InetAddressTests {
+
+    @Test
+    public void test() {
+        try {
+            InetAddress addr = InetAddress.getLocalHost();
+            addr.getAddress();
+        } catch (UnknownHostException e) {
+            // TODO Auto-generated catch block
+            assertTrue(false);
+        }
+        
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/lib/java/util/jar/JarFileTests.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,69 @@
+package stx.libjava.tests.lib.java.util.jar;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.cert.Certificate;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import org.junit.Test;
+
+/**
+ * Regression tests for JarFile 
+ * 
+ * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
+ *
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class JarFileTests {
+    
+    /**
+     * This test tests signed JAR files. As of 2013-09-06, it works
+     * in interpeted mode but fails when JIT is on. 
+     */     
+    @Test    
+    public void signed_jar_01() {
+        String jarfile = System.getProperty("libjava.tests.dir", "..") + "/../mauve/java/src/gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar";
+        try {
+            JarFile jar = new JarFile(jarfile);
+            for (Enumeration<JarEntry> entries = jar.entries(); entries.hasMoreElements();) {
+                JarEntry entry = entries.nextElement();
+                if (entry.isDirectory()) {
+                    continue;
+                }
+                InputStream stream = null;
+                try {
+                    stream = jar.getInputStream(entry);
+                    byte[] ba = new byte[8192];
+                    int n;
+                    while ((n = stream.read(ba)) >= 0)
+                  /* keep reading */;
+                } finally {
+                    if (stream != null) {
+                        try {
+                            stream.close();
+                        } catch (IOException ignored) {
+                        }
+                    }
+                }
+                Certificate[] certs = entry.getCertificates();
+                if (certs == null || certs.length == 0) // No certificate
+                {
+                    if (!entry.getName().startsWith("META-INF")) {
+                        assertTrue("Entry " + entry.getName() + " in jar file "
+                              + jarfile + " does not have a certificate", false);                        
+                    }
+                }
+            }
+            
+        } catch (IOException e) {            
+            e.printStackTrace();
+            assertTrue(e.getMessage(), false);
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ArrayValueAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,10 @@
+package stx.libjava.tests.mocks;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ArrayValueAnnotation {
+String[] whatILikeInSTX();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ClassAnnotatedWithInvisibleAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,10 @@
+package stx.libjava.tests.mocks;
+
+
+@RuntimeInvisibleAnnotation
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ClassAnnotatedWithInvisibleAnnotation {
+
+	
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ClassValueAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,9 @@
+package stx.libjava.tests.mocks;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ClassValueAnnotation {
+	Class myFavouriteJavaLangClass();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ClassWithInnerClasses.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,25 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ClassWithInnerClasses {
+
+	class Inner {
+		public String helloWorldFromInner() {
+			return "hello world from inner";
+		}
+	};
+	
+	static class InnerStatic {
+		public String helloWorldFromInnerStatic() {
+			return "hello world from inner static";
+		}
+	};
+	
+	public static InnerStatic getInnerStatic() {
+		return new InnerStatic();
+	}
+	
+	public Inner getInner() {
+		return new Inner();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/Crate.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,46 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Crate {
+
+	private int intVar;
+	private double doubleVar;
+	private long longVar;
+	private String stringVar;
+
+
+
+	public int getIntVar() {
+
+		return intVar;
+	}
+	public void setIntVar(int intVar) {
+		this.intVar = intVar;
+	}
+	public double getDoubleVar() {
+		return doubleVar;
+	}
+	public void setDoubleVar(double doubleVar) {
+		this.doubleVar = doubleVar;
+	}
+	public long getLongVar() {
+		return longVar;
+	}
+	public void setLongVar(long longVar) {
+		this.longVar = longVar;
+	}
+	public String getStringVar() {
+		return stringVar;
+	}
+	public void setStringVar(String stringVar) {
+		this.stringVar = stringVar;
+	}
+
+	public void throwSomeException(int i) throws InterruptedException, IllegalArgumentException {
+	    if (i < 0) {
+		throw new InterruptedException();
+	    } else {
+		throw new IllegalArgumentException();
+	    }
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/EnumValueAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,10 @@
+package stx.libjava.tests.mocks;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EnumValueAnnotation {
+	Weather value() default Weather.TORNADO;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/EyeOpeningClassLoader.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,80 @@
+package stx.libjava.tests.mocks;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class EyeOpeningClassLoader extends ClassLoader {
+	private static final int BUFFER_SIZE = 8192;
+
+	protected synchronized Class loadClass(String className, boolean resolve)
+			throws ClassNotFoundException {
+		Class cls = findLoadedClass(className);
+		if (cls != null) {
+			return cls;
+		}
+		String clsFile = className.replace('.', '/') + ".class";
+
+		byte[] classBytes = null;
+		try {
+			InputStream in = getResourceAsStream(clsFile);
+			byte[] buffer = new byte[BUFFER_SIZE];
+			ByteArrayOutputStream out = new ByteArrayOutputStream();
+			int n = -1;
+			while ((n = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
+				out.write(buffer, 0, n);
+			}
+			classBytes = out.toByteArray();
+		} catch (IOException e) {
+			throw new ClassNotFoundException("Cannot load class: " + className);
+		}
+
+		if (classBytes == null) {
+			throw new ClassNotFoundException("Cannot load class: " + className);
+		}
+
+		try {
+			cls = defineClass(className, classBytes, 0, classBytes.length);
+			if (resolve) {
+				resolveClass(cls);
+			}
+		} catch (SecurityException e) {
+			// loading core java classes such as java.lang.String
+			// is prohibited, throws java.lang.SecurityException.
+			// delegate to parent if not allowed to load class
+			//throw new ClassNotFoundException("Cannot load class: " + className + " because of security restrictions");
+			throw new ClassNotFoundException("security restriction");
+		}
+
+		return cls;
+	}
+	
+	public void tryToLoadString() {
+		defineClass("java.lang.String", null, 0, 0);
+	}
+	
+	public void tryToLoadObject() {
+		defineClass("java.lang.Object", null, 0, 0);
+	}
+	
+	public void tryToLoadRuntimeException() {
+		defineClass("java.lang.RuntimeException", null, 0, 0);
+	}
+	
+	public void tryToLoadMethod() {
+		defineClass("java.lang.reflect.Method", null, 0, 0);
+	}
+	
+	public void tryToLoadDatasource() {
+		defineClass("javax.sql.DataSource", null, 0, 0);
+	}
+	
+	public void tryToLoadBits() {
+		defineClass("java.io.Bits", null, 0, 0);
+	}
+	
+	public void tryToLoadArray() {
+		defineClass("java.lang.Array", null, 0, 0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/HeavilyAnnotatedClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,38 @@
+package stx.libjava.tests.mocks;
+
+
+@EnumValueAnnotation(Weather.SUNNY)
+@ArrayValueAnnotation(whatILikeInSTX = {"SVN", "SVN.. Really :)"})
+@PrimitiveValueAnnotation(ratio = 5.5, size = 5, value = "Hello world")
+@ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.ArrayIndexOutOfBoundsException.class)
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class HeavilyAnnotatedClass {
+
+    @EnumValueAnnotation()
+    @ArrayValueAnnotation(whatILikeInSTX = {})
+    @PrimitiveValueAnnotation(ratio = 0, size = 0, value = "")
+    public HeavilyAnnotatedClass(@EnumValueAnnotation(Weather.SUNNY) String heavilyAnnotatedField) {
+        this.heavilyAnnotatedField = heavilyAnnotatedField;
+    }
+
+    public HeavilyAnnotatedClass() {
+    }
+
+    @EnumValueAnnotation(Weather.CLOUDY)
+    @ArrayValueAnnotation(whatILikeInSTX = "Changeset")
+    @PrimitiveValueAnnotation(ratio = 5.5, size = 5, value = "Hello world")
+    @ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.String.class)
+    public String heavilyAnnotatedField;
+
+
+    @EnumValueAnnotation()
+    @ArrayValueAnnotation(whatILikeInSTX = {})
+    @PrimitiveValueAnnotation(ratio = 0, size = 0, value = "")
+    @ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.instrument.Instrumentation.class)
+    public void heavilyAnnotatedMethod(@EnumValueAnnotation(Weather.SUNNY) String howAboutWeather) {
+        heavilyAnnotatedField = "Annotation madness spreading..";
+        heavilyAnnotatedField += "And that weather.. " + howAboutWeather;
+        System.out.println(heavilyAnnotatedField);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ImplementorOfNonPublicInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,28 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ImplementorOfNonPublicInterface implements NonPublicInterface{
+	@Override
+	public String publicMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String abstractMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String publicAbstractMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String packagePrivateMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/ImplementorOfPublicInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,30 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ImplementorOfPublicInterface implements PublicInterface {
+
+	@Override
+	public String publicMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String abstractMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String publicAbstractMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String packagePrivateMethod() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/NonPublicClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,37 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+class NonPublicClass {
+	
+	private String privateField;
+	protected String protectedField;
+	public String publicField;
+	
+	private static String privateStaticField;
+	protected static String protectedStaticField;
+	public static String publicStaticField;
+	
+	private static String privateStaticMethod() {
+		return "privateStatic";
+	}
+	
+	protected static String protectedStaticMethod() {
+		return "protectedStatic";
+	}
+	
+	public static String publicStaticMethod() {
+		return "publicStatic";
+	}
+	
+	private String privateMethod() {
+		return "private";
+	}
+	
+	protected String protectedMethod() {
+		return "protected";
+	}
+	
+	public String publicMethod() {
+		return "public";
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/NonPublicInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,13 @@
+package stx.libjava.tests.mocks;
+
+interface NonPublicInterface {
+
+
+		public String publicMethod();
+
+		abstract String abstractMethod();
+		
+		public abstract String publicAbstractMethod();	
+		
+		String packagePrivateMethod();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/PrimitiveValueAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,11 @@
+package stx.libjava.tests.mocks;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PrimitiveValueAnnotation {
+String value();
+int size();
+double ratio();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/PublicClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,48 @@
+package stx.libjava.tests.mocks;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class PublicClass {
+	
+	private String privateField;
+	protected String protectedField;
+	public String publicField;
+	String packagePrivateField;
+	
+	private static String privateStaticField;
+	protected static String protectedStaticField;
+	public static String publicStaticField;
+	static String packagePrivateStaticField;
+	
+	private static String privateStaticMethod() {
+		return "privateStatic";
+	}
+	
+	protected static String protectedStaticMethod() {
+		return "protectedStatic";
+	}
+	
+	public static String publicStaticMethod() {
+		return "publicStatic";
+	}
+	
+	static String packagePrivateStaticMethod() {
+		return "packagePrivateStatic";
+	}
+	
+	private String privateMethod() {
+		return "private";
+	}
+	
+	protected String protectedMethod() {
+		return "protected";
+	}
+	
+	public String publicMethod() {
+		return "public";
+	}
+	
+	String packagePrivateMethod() {
+		return "packagePrivate";
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/PublicInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,12 @@
+package stx.libjava.tests.mocks;
+
+public interface PublicInterface {
+	
+	public String publicMethod();
+
+	abstract String abstractMethod();
+	
+	public abstract String publicAbstractMethod();	
+	
+	String packagePrivateMethod();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/RuntimeInvisibleAnnotation.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,9 @@
+package stx.libjava.tests.mocks;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+public @interface RuntimeInvisibleAnnotation {
+	String value() default "hidden";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SimpleAbstractClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,14 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public abstract class SimpleAbstractClass {
+
+	public final static String name ="SimpleAbstractClass";
+	
+	public String foo() {
+		return "foo";
+	}
+	
+	public abstract String bar();
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SimpleClassWithManyReferences.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,106 @@
+package stx.libjava.tests.mocks;
+
+import java.util.Date;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SimpleClassWithManyReferences {
+
+	private Object[] values;
+
+	public SimpleClassWithManyReferences() {
+		values = new Object[10];
+		values[0] = "hello";
+		values[1] = 1;
+		values[2] = 1.1;
+		values[3] = 'a';
+		values[4] = 10l;
+		values[5] = new Integer[5];
+		values[6] = new Short("1");
+		values[7] = new Byte("11");
+		values[8] = new Date[3];
+		values[9] = Boolean.TRUE;
+	}
+
+	public String getString() {
+		return (String) values[0];
+	}
+
+	public int getInt() {
+		return (Integer) values[1];
+	}
+
+	public Double getDouble() {
+		return (Double) values[2];
+	}
+
+	public char getChar() {
+		return (Character) values[3];
+	}
+
+	public long getLong() {
+		return (Long) values[4];
+	}
+
+	public int[] getIntArray() {
+		return (int[]) values[5];
+	}
+
+	public short getShort() {
+		return (Short) values[6];
+	}
+
+	public byte getByte() {
+		return (Byte) values[7];
+	}
+
+	public Date[] getDateArray() {
+		return (Date[]) values[8];
+	}
+
+	public boolean getBoolean() {
+		return (Boolean) values[9];
+	}
+
+	public void setBoolean(int i) {
+		if (i % 2 == 0) {
+			values[9] = Boolean.TRUE;
+		} else {
+			values[9] = false;
+		}
+	}
+	
+	public void setDate(long milis) {
+		((Date[]) values[8])[0] = new Date(milis);
+	}
+	
+	public void setByte(byte b) {
+		values[7] = b;
+	}
+	
+	public void setIntArray(int[] array) {
+		values[5] = array;
+	}
+	
+	public void setDouble(double d) {
+		values[2] = d;
+	}
+
+	public void setShort(short s) {
+		values[6] = s;
+	}
+	
+	public void setChar(char c) {
+		values[3] = c;
+	}
+
+	public void setLong(long l) {
+		 values[4] = l;
+	}
+	public void setString(String s) {
+		values[0] = s;
+	}
+
+	public void setInt(int i) {
+		values[1] = i;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SimpleInheritingClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,10 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SimpleInheritingClass extends SimpleAbstractClass implements SimpleInterface {
+
+	@Override
+	public String bar() {
+		return "bar";
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SimpleInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,8 @@
+package stx.libjava.tests.mocks;
+
+public interface SimpleInterface {
+
+	public String foo();
+	public String bar();
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SimpleMath.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,146 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SimpleMath {
+
+	public static int add2To2000Expect2002() {
+		int a = 2;
+		int b = 2000;
+		int result = a + b;
+		return result;
+	}
+	
+	public static int addMinus5ToArg(int arg) {
+		return arg + (-5);
+	}
+	
+	public static int multiply(int a, int b) {
+		return a * b;
+	}
+	
+	public static int power(int base, int exp) {
+		return powerAcc(base, exp, 1);
+	}
+	
+	public static int powerAcc(int base, int exp, int accumulator) {
+		if (exp == 0) {
+			return accumulator;
+		}
+		return powerAcc(base, exp - 1, accumulator * base);
+	}
+	
+	public static int div(int num, int mod) {
+		return num % mod;
+	}
+	
+	public static int negateInt(int num) {
+		return ~num;
+	}
+	
+	public static int bitShiftLeft(int num, int degree) {
+		return num << degree;
+	}
+	
+	public static int bitShiftRight(int num, int degree) {
+		return num >> degree;
+	}
+	
+	public static int division(int nom, int denom) {
+		return nom/denom;
+	}
+	
+	public static int inc2(int num) {
+		num++;
+		++num;
+		return num;
+	}
+	
+	public static int dec2(int num) {
+		num--;
+		--num;
+		return num;
+	}
+	
+	public static int unsignedBitShiftRight(int num, int degree) {
+		return num >>> degree;
+	}
+	
+	public static int and(int first, int second) {
+		return first & second;
+	}
+	
+	public static int or(int first, int second) {
+		return first | second;
+	}
+	
+	public static int xor(int first, int second) {
+		return first ^ second;
+	}
+	
+	public static void justUseConstants() {
+		long l0 = 0l;
+		long l1 = 1l;
+		float f0 = 0;
+		float f1 = 1;
+		float f2 = 2;
+		double d0 = 0;
+		double d1 = 1;
+	}
+	
+	public static int isYourStackCreatedCorrectly() {
+		int a = 0;
+		int b = 1;
+		a = 2;
+		b = 3;
+		a = 4;
+		a = 5;
+		b = 6;
+		a = 7;
+		b = 8;
+		b = 9;
+		return a;
+	}
+	
+	public static double isYourStackCreatedCorrectlyEvenWithDoublesAndLongs() {
+		double a = 0;
+		long b = 1;
+		a = 2;
+		b = 3;
+		a = 4;
+		a = 5;
+		b = 6;
+		a = 7;
+		b = 8;
+		b = 9;
+		return a;
+	}
+	
+	public static int sumArray(int[] array) {
+		int result = 0;
+		for (int i = 0; i < array.length; i++) {
+			result += array[i];
+		}
+		return result;
+	}
+	
+	public static double sumArrayOfDoubles(double[] array) {
+		double result = 0;
+		for (int i = 0; i < array.length; i++) {
+			result += array[i];
+		}
+		return result;
+	}
+	
+	public static long[] giveMeArrayOfLongs() {
+		
+		return new long[100];
+	}
+	
+	public static void main(String[] args) {
+		System.out.println("add2To2000Expect2002 returned: " + add2To2000Expect2002());
+		System.out.println("addMinus5ToArg with 10 returned: " + addMinus5ToArg(10));
+		System.out.println("multiply with 10 and 20 returned: " + multiply(10, 20));
+		System.out.println("power with 2 and 10 returned: " + power(2, 10));
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SubclassOfNonPublicClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,7 @@
+package stx.libjava.tests.mocks;
+
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SubclassOfNonPublicClass extends NonPublicClass {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SubclassOfPublicClass.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,6 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SubclassOfPublicClass extends PublicClass {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/SwitchExamples.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,32 @@
+package stx.libjava.tests.mocks;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SwitchExamples {
+
+	public int switchChar(char c) {
+		switch (c) {
+		case 'a':
+			return 0;
+		case 'b':
+			return 1;
+		case 'c':
+			return 2;
+		default:
+			return 3;
+		}
+	}
+	
+	public int switchInt(int c) {
+		switch (c) {
+		case 0:
+			return 0;
+		case 1000:
+			return 1;
+		case -1000:
+			return -1;
+		default:
+			return 2;
+		}
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/TranslucentObjectTestsHelper.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,15 @@
+package stx.libjava.tests.mocks;
+
+import java.util.ArrayList;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class TranslucentObjectTestsHelper {
+	public ArrayList<Object> createArrayList() {
+		return new ArrayList<Object>();
+	}
+	
+	public boolean isEmpty(String s) {
+		return s.isEmpty();
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/Weather.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+package stx.libjava.tests.mocks;
+
+public enum Weather {
+	SUNNY, CLOUDY, RAINING, TORNADO
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/a/A.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,33 @@
+package stx.libjava.tests.mocks.a;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class A {
+	String method1() {
+		return "A.method1()";
+	}
+	
+	public static String callMethod1(A obj) {
+		return obj.method1();
+	}
+	
+	public static String callMethod1ViaReflection(A obj) {
+		Method m = null;
+		try {
+			m = A.class.getDeclaredMethod("method1", null);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		try {
+			return (String)m.invoke(obj, null);
+		} catch (IllegalArgumentException e) {
+			throw new RuntimeException(e);
+		} catch (IllegalAccessException e) {
+			throw new RuntimeException(e);
+		} catch (InvocationTargetException e) {
+			throw new RuntimeException(e);
+		}		
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/b/B.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,11 @@
+package stx.libjava.tests.mocks.b;
+
+import stx.libjava.tests.mocks.a.A;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class B extends A {
+    public String method1() {
+        return "B.method1()";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/ImplementingIfaceWithStatic.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,6 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class ImplementingIfaceWithStatic extends SuperWithStatic {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuff.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,6 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class InheritInstanceStuff extends SuperWithInstance {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuffWithStatic.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,12 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class InheritInstanceStuffWithStatic extends SuperWithInstance{
+
+	public static int instField = 1;
+	//cannot override method with the same name+selector
+	//nobody cares about static :)
+//	public static int instMethod() {
+//		return 1;
+//	}	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/InterfaceWithStatic.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,7 @@
+package stx.libjava.tests.mocks.instance_static;
+
+public interface InterfaceWithStatic {
+
+	public static int staticField = 1;	
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuff.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,9 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MissingInstanceStuff extends SuperWithStatic {
+	
+	
+	
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuffWithInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,7 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MissingInstanceStuffWithInterface extends ImplementingIfaceWithStatic
+		 {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/StaticInSuperVsInstInSuperSuper.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,7 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class StaticInSuperVsInstInSuperSuper extends
+		InheritInstanceStuffWithStatic {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/SuperWithInstance.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,11 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SuperWithInstance {
+
+	public int instField = 0;
+	public int instMethod() {
+		return 0;
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/instance_static/SuperWithStatic.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,12 @@
+package stx.libjava.tests.mocks.instance_static;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SuperWithStatic {
+	
+	public static int staticMethod() {
+		return 0;
+	}
+	
+	public static int staticField = 0;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/Director.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,8 @@
+package stx.libjava.tests.mocks.interop;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Director extends Person {
+    public void setTag1(int i) {
+        tag1 = new Integer(i + 10);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/IPerson1.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+package stx.libjava.tests.mocks.interop;
+
+public interface IPerson1 extends IPersonSuper {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/IPerson2.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+package stx.libjava.tests.mocks.interop;
+
+public interface IPerson2 extends IPersonSuper {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/IPersonSuper.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,5 @@
+package stx.libjava.tests.mocks.interop;
+
+public interface IPersonSuper {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/Object.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,167 @@
+package stx.libjava.tests.mocks.interop;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Object implements TooGeneralInterface
+{
+    public char[][] events = new char[100][];
+    public int      eventsTally = 0;
+
+    public Object()
+    {
+        events[eventsTally++] = "Default Constructor".toCharArray();
+    }
+
+    public Object(String s)
+    {
+        s.compareTo("XX"); // Just to invoke some String method...
+        events[eventsTally++] = "String Constructor".toCharArray();
+    }
+
+    public Object(Integer i)
+    {
+        i.doubleValue(); // Just to invoke some Integer method
+        events[eventsTally++] = "Integer Constructor".toCharArray();
+    }
+    
+    public Object(stx.libjava.tests.mocks.interop.Object o)
+    {
+        events[eventsTally++] = "cz.cvut.fit.swing.methodLookup.Object".toCharArray();
+    }
+
+    public String sayHello()
+    {
+        return "hello";
+    }
+
+    public static String staticSayHello()
+    {
+        return "static hello";
+    }
+
+    public String sayHello(String name)
+    {
+        return "hello " + name;
+    }
+
+    public String sayHello(Integer age)
+    {
+        return "hello in age [Integer] " + age;
+    }
+
+    public String sayHello(int age)
+    {
+        return "hello in age [int] " + age;
+    }
+
+    public String sayHello(String name, Integer age)
+    {
+        return "hello " + name + " in age [Integer]" + age;
+    }
+
+    public String sayHello(String name, int age)
+    {
+        return "hello " + name + " in age [int] " + age;
+    }
+
+    public String sayHello(int i, int age)
+    {
+        return "hello " + i + " in age [int] " + age;
+    }
+
+    public int returnAge(int i)
+    {
+        return i;
+    }
+
+    public int returnPrimTypeInt()
+    {
+        return 2048;
+    }
+
+    // no param foo
+    public int foo()
+    {
+        return 0;
+    }
+
+    public int foo(int i)
+    {
+        return 1;
+    }
+
+    public int foo(Object o, int i)
+    {
+        return 2;
+    }
+    
+    public Boolean getTrue()
+    {
+        return Boolean.TRUE;
+    }
+    public Boolean getFalse()
+    {
+        return Boolean.FALSE;
+    }
+    
+    public boolean getTruePrim()
+    {
+        return true;
+    }
+    
+    public boolean getFalsePrim()
+    {
+        return false;
+    }
+    
+    public Boolean getFalseWithConversion()
+    {
+        return false;
+    }
+
+    public Boolean getTrueWithConversion()
+    {
+        return true;
+    }
+    
+    public Boolean getFalseFromBooleanValueOf()
+    {
+        boolean b = getFalsePrim();
+        return Boolean.valueOf(b);
+    }
+    
+    
+    public int getInt()
+    {
+        return 1;
+    }
+    
+    public Integer getInteger()
+    {
+        return 12345;
+    }
+    
+    public int overloadedMethodInt(int i) 
+    {
+        return 1;
+    }
+    
+    public int overloadedMethodInt(Integer i)
+    {
+        return 2;
+    }
+    
+    public int overloadedMethod(String s) 
+    {
+        return 3;
+    }
+    
+    public int overloadedMethod(Integer i)
+    {
+        return 4;
+    }
+
+    @Override
+    public java.lang.String getMethodReturningObject() {
+        return "working";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/Person.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,40 @@
+package stx.libjava.tests.mocks.interop;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class Person implements IPerson1, IPerson2
+{
+    private String name;
+    private Integer age;
+    
+    public java.lang.Object tag1;
+    protected java.lang.Object tag2;
+    protected java.lang.Object tag3;
+    
+    public void setAge(Integer age)
+    {
+        this.age = age;
+    }
+    
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+    
+    public String getName()
+    {
+        return name;
+    }
+    
+    public Integer getAge()
+    {
+        return age;
+    }
+    
+    public void setTag1(java.lang.Object o) {
+        tag1 = o;
+    }
+    
+    public java.lang.Object getTag1() {
+        return tag1;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/PersonManipulator.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,16 @@
+package stx.libjava.tests.mocks.interop;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class PersonManipulator
+{
+    public Integer getPersonAge(Person p)
+    {
+        return p.getAge();
+    }
+    
+    public String getPersonName(Person p)
+    {
+        return p.getName();
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/SetManipulator.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,68 @@
+package stx.libjava.tests.mocks.interop;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.lang.Object;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class SetManipulator
+{
+    public void addElement(Set<Object> s, Object o)
+    {
+        s.add(o);
+    }
+
+    public Integer getSize(Set<Object> s)
+    {
+        return s.size();
+    }
+
+    public Boolean contains(Set<Object> s, Object o)
+    {
+        return s.contains(o);
+    }
+    
+    public Boolean isEmpty(Set<Object> s)
+    {
+        return s.isEmpty();
+    }
+    
+    public void remove(Set<Object> s, Object o)
+    {
+        s.remove(o);
+    }
+
+    public Integer iterateCountSize(Set<Object> s)
+    {
+        Integer i = 0;
+        for (Iterator<Object> it = s.iterator(); it.hasNext(); )
+        {
+            i++;
+        }
+        return i;
+    }
+    
+    
+    public List<Object> iterate(Set<Object> s)
+    {
+        List<Object> l = new ArrayList<Object>();
+        for (Iterator<Object> it = s.iterator(); it.hasNext(); )
+        {
+            l.add(it.next());
+        }
+        return l;
+    }
+
+    public List<Object> iterateWithSyntaxSugar(Set<Object> s)
+    {
+        List<Object> l = new ArrayList<Object>();
+        for (Object o : s)
+        {
+            l.add(o);
+        }
+        return l;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/TheOneAndOnlyBoss.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,8 @@
+package stx.libjava.tests.mocks.interop;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class TheOneAndOnlyBoss extends Person {
+    public void setTag1(int i) {
+        tag1 = new Integer(i + 1000);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/mocks/interop/TooGeneralInterface.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,6 @@
+package stx.libjava.tests.mocks.interop;
+
+public interface TooGeneralInterface {
+
+    public java.lang.Object getMethodReturningObject();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/CHECKCAST_and_INSTANCEOF.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,39 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class CHECKCAST_and_INSTANCEOF {
+    
+    public static interface Aable {
+        public void foo();
+    }
+    
+    public static class A implements Aable {
+        public void foo() {}
+    }
+    
+    public Object test_01_get_array_of_A() {
+        return new A[10];
+    }
+
+    /*
+     * Regression, there used to be a bug in VM that
+     * passed element type to the JavaVM>>_CHECKCAST:_: instead
+     * of the array type.
+     */
+    @Test
+    public void test_regression_01_c() {
+        Aable[] a = (Aable[])test_01_get_array_of_A();
+        a[1] = new A();
+    }
+    
+    @Test
+    public void test_regression_01_i() {
+        assertTrue(test_01_get_array_of_A() instanceof Aable[]);        
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/DREM.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,19 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class DREM {
+    public double one = 1.0d;
+
+    @Test
+    public void test_01() { 
+        // Have to do it this way because compiler folds constant
+        // arithmetic expressions
+        double a = 1.2d * one;
+        double b = 3.4d * one;
+        assertEquals(a % b, 1.2d, 0.001d);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/FREM.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,20 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class FREM {
+    public double one = 1.0f;
+    
+    @Test
+    public void test_01() { 
+        // Have to do it this way because compiler folds constant
+        // arithmetic expressions
+        double a = 1.2f * one;
+        double b = 3.4f * one;
+        assertEquals(a % b, 1.2f, 0.001f);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/GETFIELD_and_PUTFIELD.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,76 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class GETFIELD_and_PUTFIELD {
+
+    @Test
+    public void test_getfield_01a() {
+        Fields f = new Fields();
+        int field1 = Fields.getField1Of(f);        
+        assertEquals(-1, field1);
+    }
+    
+    public void test_getfield_01b() {
+        test_getfield_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_getfield_02() {
+        Fields f = null;
+        try {
+            int field1 = Fields.getField1Of(f);
+            assertTrue(false);            
+        } catch (NullPointerException npe) {
+            // OK, NPE should be thrown
+        }
+    }
+
+    
+    @Test
+    public void test_putfield_01a() {
+        Fields f = new Fields();
+        Fields.setField1Of(f, 100);
+        int field1 = f.getField1();        
+        assertEquals(100, field1);
+    }
+    
+    public void test_putfield_01b() {
+        test_putfield_01a();
+    }
+    
+    @Test
+    public void test_putfield_02() {
+        Fields f = null;
+        try {
+            Fields.setField1Of(f, 1);
+            assertTrue(false);            
+        } catch (NullPointerException npe) {
+            // OK, NPE should be thrown
+        }
+    }
+    
+    
+
+    public static class Fields {
+        public int field1 = -1;
+        
+        public int getField1() {
+            return field1;
+        }
+        
+        public static int getField1Of(Fields f) {
+            return f.field1;
+        }
+        
+        public static void setField1Of(Fields f, int v ) {
+            f.field1 = v;
+        }
+
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/INVOKEINTERFACEX.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,646 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import stx.libjava.tests.vm.INVOKEVIRTUALX.Virtual;
+
+/** 
+ * Tests for INVOKEVIRTUAL instructions. 
+ * 
+ * Note: for JIT-compiled code there are two code-paths:
+ * (i) method reference is already resolved, then the 
+ * method is directly dispatched
+ * (ii) method references is not yet resolved and JIT code
+ * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
+ * 
+ * To test both code patch, each test has 2 variants ('a' and
+ * 'b') where the latter one executes the first one. This ensures
+ * that the first method is executed once with reference unresolved
+ * and second time with all references resolved.
+ *
+ * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class INVOKEINTERFACEX {
+    
+    @Test 
+    public void test_invoke_int_a() {
+        IVirtual v = new Virtual();
+        int r;
+        
+        r = v.virtualInt01(1);
+        assertEquals(1, r);
+        
+        r = v.virtualInt02(1,1);
+        assertEquals(2, r);
+        
+        r = v.virtualInt03(1,1,1);
+        assertEquals(3, r);
+
+        r = v.virtualInt04(1,1,1,1);
+        assertEquals(4, r);
+        
+        r = v.virtualInt05(1,1,1,1,1);
+        assertEquals(5, r);
+        
+        r = v.virtualInt06(1,1,1,1,1,1);
+        assertEquals(6, r);
+        
+        r = v.virtualInt07(1,1,1,1,1,1,1);
+        assertEquals(7, r);
+        
+        r = v.virtualInt08(1,1,1,1,1,1,1,1);
+        assertEquals(8, r);
+        
+        r = v.virtualInt09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9, r);
+        
+        r = v.virtualInt10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10, r);
+        
+        r = v.virtualInt11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11, r);
+        
+        r = v.virtualInt12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12, r);
+        
+        r = v.virtualInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13, r);
+        
+        r = v.virtualInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14, r);
+        
+        r = v.virtualInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15, r);
+        
+        r = v.virtualInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16, r);
+        
+        r = v.virtualInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17, r);                
+    }
+
+    @Test 
+    public void test_invoke_int_b() {
+        test_invoke_int_a();
+    }
+    
+    @Test 
+    public void test_invoke_double_a() {
+        IVirtual v = new Virtual();
+        double r;
+        
+        r = v.virtualDouble01(1);
+        assertEquals(1.0, r, 0.001);
+        
+        r = v.virtualDouble02(1,1);
+        assertEquals(2.0, r, 0.001);
+        
+        r = v.virtualDouble03(1,1,1);
+        assertEquals(3.0, r, 0.001);
+
+        r = v.virtualDouble04(1,1,1,1);
+        assertEquals(4.0, r, 0.001);
+        
+        r = v.virtualDouble05(1,1,1,1,1);
+        assertEquals(5.0, r, 0.001);
+        
+        r = v.virtualDouble06(1,1,1,1,1,1);
+        assertEquals(6.0, r, 0.001);
+        
+        r = v.virtualDouble07(1,1,1,1,1,1,1);
+        assertEquals(7.0, r, 0.001);
+        
+        r = v.virtualDouble08(1,1,1,1,1,1,1,1);
+        assertEquals(8.0, r, 0.001);
+        
+        r = v.virtualDouble09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9.0, r, 0.001);
+        
+        r = v.virtualDouble10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10.0, r, 0.001);
+        
+        r = v.virtualDouble11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11.0, r, 0.001);
+        
+        r = v.virtualDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12.0, r, 0.001);
+        
+        r = v.virtualDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13.0, r, 0.001);
+        
+        r = v.virtualDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14.0, r, 0.001);
+        
+        r = v.virtualDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15.0, r, 0.001);
+        
+        r = v.virtualDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16.0, r, 0.001);
+        
+        r = v.virtualDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17.0, r, 0.001);                
+    }
+
+    @Test 
+    public void test_invoke_double_b() {
+        test_invoke_double_a();
+    }
+    
+    @Test 
+    public void test_invoke_Object_a() {
+        IVirtual v = new Virtual();
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Object[] r;
+        
+        r = v.virtualObject01(o1);
+        assertTrue(o1 == r[0]);
+        
+                
+        r = v.virtualObject02(o1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[1]);
+        
+        r = v.virtualObject03(o1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[2]);
+        
+        r = v.virtualObject04(o1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[3]);
+                
+        r = v.virtualObject05(o1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[4]);
+                
+        r = v.virtualObject06(o1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[5]);
+                
+        r = v.virtualObject07(o1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[6]);
+             
+        r = v.virtualObject08(o1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[7]);
+                
+        r = v.virtualObject09(o1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[8]);
+                
+        r = v.virtualObject10(o1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[9]);
+        
+        r = v.virtualObject11(o1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[10]);
+        
+        r = v.virtualObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[11]);
+        
+        r = v.virtualObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[12]);
+        
+        r = v.virtualObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[13]);
+        
+        r = v.virtualObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[14]);
+        
+        r = v.virtualObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[15]);
+        
+        r = v.virtualObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[16]);
+
+                        
+    }
+
+    @Test 
+    public void test_invoke_Object_b() {
+        test_invoke_Object_a();
+    }
+        
+    // Tests for NULL receives
+    
+    
+    public void invokeVirtualIn01(IVirtual v, int i1) {
+        v.virtualInt01(i1);
+    }
+    
+    @Test    
+    public void test_int_01a_NULL() {
+        try {
+            Virtual v = null;
+            invokeVirtualIn01(v, 1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_int_01b_NULL() {
+        test_int_01a_NULL();
+    }
+    
+
+    public void invokeVirtualDouble05(IVirtual v, double i1, double i2,double i3,double i4,double i5) {
+        v.virtualDouble05(i1, i2, i3, i4, i5);
+    }
+    @Test    
+    public void test_double_05a_NULL() {
+        try {
+            Virtual v = null;
+            invokeVirtualDouble05(v, 1,1,1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_double_05b_NULL() {
+        test_int_01a_NULL();
+    }
+
+    
+    public void invokeVirtualDouble10(IVirtual v, double i1, double i2,double i3,double i4,double i5, double i6, double i7, double i8, double i9, double i10) {
+        v.virtualDouble10(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
+    }    
+    @Test
+    public void test_double_10a_NULL() {
+        try {
+            Virtual v = null; 
+            invokeVirtualDouble10(v, 1,1,1,1,1,1,1,1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_double_10b_NULL() {
+        test_double_10a_NULL();
+    }
+    
+    
+    public void invokeVirtualObject03(IVirtual v, Object i1, Object i2, Object i3) {
+        v.virtualObject03(i1, i2, i3);
+    }    
+    @Test
+    public void test_Object_03a_NULL() {
+        try {
+            Virtual v = null;  
+            invokeVirtualObject03(v, 1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_Objecte_03b_NULL() {
+        test_Object_03a_NULL();
+    }
+    
+    
+    public static interface IVirtual {        
+        public  int virtual00();
+       
+        public  int virtualInt01(int i1);
+        public  int virtualInt02(int i1, int i2);
+            
+        
+        public  int virtualInt03(int i1, int i2, int i3);
+            
+        
+        public  int virtualInt04(int i1, int i2, int i3, int i4);
+            
+        
+        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5);
+            
+        
+        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6);
+            
+        
+        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7);
+            
+        
+        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8);
+            
+        
+        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9);
+            
+        
+        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10);
+            
+        
+        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11);
+            
+        
+        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12);
+            
+        
+        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13);
+            
+        
+        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14);
+            
+        
+        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15);
+            
+         
+        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16);
+            
+        
+        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17);
+            
+        
+
+
+        public  double virtualDouble01(int i1);
+             
+        
+        public  double virtualDouble02(double i1, double i2);
+            
+        
+        public  double virtualDouble03(double i1, double i2, double i3);
+            
+        
+        public  double virtualDouble04(double i1, double i2, double i3, double i4);
+            
+        
+        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5);
+            
+        
+        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6);
+            
+        
+        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7);
+            
+        
+        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8);
+            
+        
+        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9);
+            
+        
+        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10);
+            
+        
+        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11);
+            
+        
+        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12);
+            
+        
+        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13);
+            
+        
+        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14);
+            
+        
+        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15);
+            
+        
+        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16);
+            
+        
+        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17);
+            
+        
+        
+        public  Object[] virtualObject01(Object i1);
+             
+        
+        public  Object[] virtualObject02(Object i1, Object i2);
+            
+        
+        public  Object[] virtualObject03(Object i1, Object i2, Object i3);
+            
+        
+        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4);
+            
+        
+        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5);
+            
+        
+        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6);
+            
+        
+        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7);
+            
+        
+        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8);
+            
+        
+        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9);
+            
+        
+        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10);
+            
+        
+        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11);
+            
+        
+        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12);
+            
+        
+        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13);
+            
+        
+        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14);
+            
+        
+        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15);
+            
+        
+        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16);
+            
+        
+        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17);
+            
+        
+        
+    }
+    
+    
+    
+    public static class Virtual implements IVirtual {
+        public static final int initialized = 12345;
+        
+        public  int virtual00() {
+            return 0;
+        }
+       
+        public  int virtualInt01(int i1) {
+            return i1; 
+        }
+        public  int virtualInt02(int i1, int i2) {
+            return i1 + i2;
+        }
+        public  int virtualInt03(int i1, int i2, int i3) {
+            return i1 + i2 + i3;
+        }
+        public  int virtualInt04(int i1, int i2, int i3, int i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        } 
+        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+
+
+        public  double virtualDouble01(int i1) {
+            return i1; 
+        }
+        public  double virtualDouble02(double i1, double i2) {
+            return i1 + i2;
+        }
+        public  double virtualDouble03(double i1, double i2, double i3) {
+            return i1 + i2 + i3;
+        }
+        public  double virtualDouble04(double i1, double i2, double i3, double i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        }
+        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+        
+        public  Object[] virtualObject01(Object i1) {
+            return new Object[] { i1 }; 
+        }
+        public  Object[] virtualObject02(Object i1, Object i2) {
+            return new Object[] { i1 , i2 };
+        }
+        public  Object[] virtualObject03(Object i1, Object i2, Object i3) {
+            return new Object[] { i1 , i2 , i3 };
+        }
+        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4) {
+            return new Object[] { i1 , i2 , i3 , i4 };
+        }
+        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 };
+        }
+        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
+        }
+        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
+        }
+        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
+        }
+        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
+        }
+        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
+        }
+        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
+        }
+        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
+        }
+        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
+        }
+        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
+        }
+        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
+        }
+        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
+        }
+        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
+        }
+        
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/INVOKESPECIALX.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,406 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/** 
+ * Tests for INVOKESPECIAL instructions. 
+ * 
+ * Note: for JIT-compiled code there are two code-paths:
+ * (i) method reference is already resolved, then the 
+ * method is directly dispatched
+ * (ii) method references is not yet resolved and JIT code
+ * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
+ * 
+ * To test both code patch, each test has 2 variants ('a' and
+ * 'b') where the latter one executes the first one. This ensures
+ * that the first method is executed once with reference unresolved
+ * and second time with all references resolved.
+ *
+ * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class INVOKESPECIALX {
+    
+    @Test 
+    public void test_invoke_int_a() {   
+        SpecialInt s;
+        int r;
+        
+        s = new SpecialInt(1); r = s.r;;
+        assertEquals(1, r);
+        
+        s = new SpecialInt(1,1); r = s.r;
+        assertEquals(2, r);
+        
+        s = new SpecialInt(1,1,1); r = s.r;
+        assertEquals(3, r);
+
+        s = new SpecialInt(1,1,1,1); r = s.r;
+        assertEquals(4, r);
+        
+        s = new SpecialInt(1,1,1,1,1); r = s.r;
+        assertEquals(5, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1); r = s.r;
+        assertEquals(6, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1); r = s.r;
+        assertEquals(7, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(8, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(9, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(10, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(11, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(12, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(13, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(14, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(15, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(16, r);
+        
+        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(17, r);                
+    }
+
+    @Test 
+    public void test_invoke_int_b() {
+        test_invoke_int_a();
+    }
+    
+    @Test 
+    public void test_invoke_double_a() {
+        SpecialDouble s;
+        double r;
+        
+        s = new SpecialDouble(1); r = s.r;
+        assertEquals(1.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1); r = s.r;
+        assertEquals(2.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1); r = s.r;
+        assertEquals(3.0, r, 0.001);
+
+        s = new SpecialDouble(1,1,1,1); r = s.r;
+        assertEquals(4.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1); r = s.r;
+        assertEquals(5.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1); r = s.r;
+        assertEquals(6.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1); r = s.r;
+        assertEquals(7.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(8.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(9.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(10.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(11.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(12.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(13.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(14.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(15.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(16.0, r, 0.001);
+        
+        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
+        assertEquals(17.0, r, 0.001);                
+    }
+
+    @Test 
+    public void test_invoke_double_b() {
+        test_invoke_double_a();
+    }
+    
+    @Test 
+    public void test_invoke_Object_a() {
+        SpecialObject s;
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Object[] r;
+        
+        s = new SpecialObject(o1); r = s.r;
+        assertTrue(o1 == r[0]);
+        
+                
+        s = new SpecialObject(o1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[1]);
+        
+        s = new SpecialObject(o1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[2]);
+        
+        s = new SpecialObject(o1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[3]);
+                
+        s = new SpecialObject(o1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[4]);
+                
+        s = new SpecialObject(o1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[5]);
+                
+        s = new SpecialObject(o1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[6]);
+             
+        s = new SpecialObject(o1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[7]);
+                
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[8]);
+                
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[9]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[10]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[11]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[12]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[13]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[14]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[15]);
+        
+        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[16]);
+
+                        
+    }
+
+    @Test 
+    public void test_invoke_Object_b() {
+        test_invoke_Object_a();
+    }
+      
+    public static class SpecialInt {
+        public int r = -1;
+        
+        public SpecialInt(int i1) {
+            r = 1; 
+        }
+        public SpecialInt(int i1, int i2) {
+            r = 1 + i2;
+        }
+        public SpecialInt(int i1, int i2, int i3) {
+            r = 1 + i2 + i3;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4) {
+            r = 1 + i2 + i3 + i4;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5) {
+            r = 1 + i2 + i3 + i4 + i5;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6) {
+            r = 1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        } 
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+    }
+
+        
+    public static class SpecialDouble {    
+        public double r = -1;
+
+        public SpecialDouble(double i1) {
+            r = 1; 
+        }
+        public SpecialDouble(double i1, double i2) {
+            r = 1 + i2;
+        }
+        public SpecialDouble(double i1, double i2, double i3) {
+            r = 1 + i2 + i3;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4) {
+            r = 1 + i2 + i3 + i4;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5) {
+            r = 1 + i2 + i3 + i4 + i5;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6) {
+            r = 1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
+            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+        
+    }
+    
+    public static class SpecialObject {
+        public Object[] r;
+        
+        public SpecialObject(Object i1) {
+            r = new Object[] { i1 }; 
+        }
+        public SpecialObject(Object i1, Object i2) {
+            r = new Object[] { i1 , i2 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3) {
+            r = new Object[] { i1 , i2 , i3 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4) {
+            r = new Object[] { i1 , i2 , i3 , i4 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
+        }
+        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
+            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
+        }        
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/INVOKESTATICX.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,400 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/** 
+ * Tests for INVOKESTATIC instructions. 
+ * 
+ * Note: for JIT-compiled code there are two code-paths:
+ * (i) method reference is already resolved, then the 
+ * method is directly dispatched
+ * (ii) method references is not yet resolved and JIT code
+ * invokes helper method JavaVM>>_INVOKESTATIC_R: 
+ * 
+ * To test both code patch, each test has 2 variants ('a' and
+ * 'b') where the latter one executes the first one. This ensures
+ * that the first method is executed once with reference unresolved
+ * and second time with all references resolved. 
+ * 
+ * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class INVOKESTATICX {        
+
+    @Test 
+    public void test_invoke_int_a() {
+        int r;
+        
+        r = Statics.staticInt01(1);
+        assertEquals(1, r);
+        
+        r = Statics.staticInt02(1,1);
+        assertEquals(2, r);
+        
+        r = Statics.staticInt03(1,1,1);
+        assertEquals(3, r);
+
+        r = Statics.staticInt04(1,1,1,1);
+        assertEquals(4, r);
+        
+        r = Statics.staticInt05(1,1,1,1,1);
+        assertEquals(5, r);
+        
+        r = Statics.staticInt06(1,1,1,1,1,1);
+        assertEquals(6, r);
+        
+        r = Statics.staticInt07(1,1,1,1,1,1,1);
+        assertEquals(7, r);
+        
+        r = Statics.staticInt08(1,1,1,1,1,1,1,1);
+        assertEquals(8, r);
+        
+        r = Statics.staticInt09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9, r);
+        
+        r = Statics.staticInt10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10, r);
+        
+        r = Statics.staticInt11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11, r);
+        
+        r = Statics.staticInt12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12, r);
+        
+        r = Statics.staticInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13, r);
+        
+        r = Statics.staticInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14, r);
+        
+        r = Statics.staticInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15, r);
+        
+        r = Statics.staticInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16, r);
+        
+        r = Statics.staticInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17, r);                
+    }
+
+    @Test 
+    public void test_invoke_int_b() {
+        test_invoke_int_a();
+    }
+    
+    @Test 
+    public void test_invoke_double_a() {
+        double r;
+        
+        r = Statics.staticDouble01(1);
+        assertEquals(1.0, r, 0.001);
+        
+        r = Statics.staticDouble02(1,1);
+        assertEquals(2.0, r, 0.001);
+        
+        r = Statics.staticDouble03(1,1,1);
+        assertEquals(3.0, r, 0.001);
+
+        r = Statics.staticDouble04(1,1,1,1);
+        assertEquals(4.0, r, 0.001);
+        
+        r = Statics.staticDouble05(1,1,1,1,1);
+        assertEquals(5.0, r, 0.001);
+        
+        r = Statics.staticDouble06(1,1,1,1,1,1);
+        assertEquals(6.0, r, 0.001);
+        
+        r = Statics.staticDouble07(1,1,1,1,1,1,1);
+        assertEquals(7.0, r, 0.001);
+        
+        r = Statics.staticDouble08(1,1,1,1,1,1,1,1);
+        assertEquals(8.0, r, 0.001);
+        
+        r = Statics.staticDouble09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9.0, r, 0.001);
+        
+        r = Statics.staticDouble10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10.0, r, 0.001);
+        
+        r = Statics.staticDouble11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11.0, r, 0.001);
+        
+        r = Statics.staticDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12.0, r, 0.001);
+        
+        r = Statics.staticDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13.0, r, 0.001);
+        
+        r = Statics.staticDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14.0, r, 0.001);
+        
+        r = Statics.staticDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15.0, r, 0.001);
+        
+        r = Statics.staticDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16.0, r, 0.001);
+        
+        r = Statics.staticDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17.0, r, 0.001);                
+    }
+
+    @Test 
+    public void test_invoke_double_b() {
+        test_invoke_double_a();
+    }
+    
+    @Test 
+    public void test_invoke_Object_a() {
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Object[] r;
+        
+        r = Statics.staticObject01(o1);
+        assertTrue(o1 == r[0]);
+        
+                
+        r = Statics.staticObject02(o1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[1]);
+        
+        r = Statics.staticObject03(o1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[2]);
+        
+        r = Statics.staticObject04(o1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[3]);
+                
+        r = Statics.staticObject05(o1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[4]);
+                
+        r = Statics.staticObject06(o1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[5]);
+                
+        r = Statics.staticObject07(o1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[6]);
+             
+        r = Statics.staticObject08(o1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[7]);
+                
+        r = Statics.staticObject09(o1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[8]);
+                
+        r = Statics.staticObject10(o1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[9]);
+        
+        r = Statics.staticObject11(o1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[10]);
+        
+        r = Statics.staticObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[11]);
+        
+        r = Statics.staticObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[12]);
+        
+        r = Statics.staticObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[13]);
+        
+        r = Statics.staticObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[14]);
+        
+        r = Statics.staticObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[15]);
+        
+        r = Statics.staticObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[16]);
+
+                        
+    }
+
+    @Test 
+    public void test_invoke_Object_b() {
+        test_invoke_Object_a();
+    }
+    
+
+    public static class Statics {
+        public static final int initialized = 12345;
+        
+        public static int static00() {
+            return 0;
+        }
+       
+        public static int staticInt01(int i1) {
+            return i1; 
+        }
+        public static int staticInt02(int i1, int i2) {
+            return i1 + i2;
+        }
+        public static int staticInt03(int i1, int i2, int i3) {
+            return i1 + i2 + i3;
+        }
+        public static int staticInt04(int i1, int i2, int i3, int i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public static int staticInt05(int i1, int i2, int i3, int i4, int i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public static int staticInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public static int staticInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public static int staticInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public static int staticInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public static int staticInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public static int staticInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public static int staticInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public static int staticInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public static int staticInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public static int staticInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        }
+        public static int staticInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public static int staticInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+
+
+        public static double staticDouble01(int i1) {
+            return i1; 
+        }
+        public static double staticDouble02(double i1, double i2) {
+            return i1 + i2;
+        }
+        public static double staticDouble03(double i1, double i2, double i3) {
+            return i1 + i2 + i3;
+        }
+        public static double staticDouble04(double i1, double i2, double i3, double i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public static double staticDouble05(double i1, double i2, double i3, double i4, double i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public static double staticDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public static double staticDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public static double staticDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public static double staticDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public static double staticDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public static double staticDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public static double staticDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public static double staticDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public static double staticDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public static double staticDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        }
+        public static double staticDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public static double staticDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+        
+        public static Object[] staticObject01(Object o1) {
+            return new Object[] { o1 }; 
+        }
+        public static Object[] staticObject02(Object i1, Object i2) {
+            return new Object[] { i1 , i2 };
+        }
+        public static Object[] staticObject03(Object i1, Object i2, Object i3) {
+            return new Object[] { i1 , i2 , i3 };
+        }
+        public static Object[] staticObject04(Object i1, Object i2, Object i3, Object i4) {
+            return new Object[] { i1 , i2 , i3 , i4 };
+        }
+        public static Object[] staticObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 };
+        }
+        public static Object[] staticObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
+        }
+        public static Object[] staticObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
+        }
+        public static Object[] staticObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
+        }
+        public static Object[] staticObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
+        }
+        public static Object[] staticObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
+        }
+        public static Object[] staticObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
+        }
+        public static Object[] staticObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
+        }
+        public static Object[] staticObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
+        }
+        public static Object[] staticObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
+        }
+        public static Object[] staticObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
+        }
+        public static Object[] staticObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
+        }
+        public static Object[] staticObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
+        }
+        
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/INVOKEVIRTUALX.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,484 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/** 
+ * Tests for INVOKEVIRTUAL instructions. 
+ * 
+ * Note: for JIT-compiled code there are two code-paths:
+ * (i) method reference is already resolved, then the 
+ * method is directly dispatched
+ * (ii) method references is not yet resolved and JIT code
+ * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
+ * 
+ * To test both code patch, each test has 2 variants ('a' and
+ * 'b') where the latter one executes the first one. This ensures
+ * that the first method is executed once with reference unresolved
+ * and second time with all references resolved.
+ *
+ * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class INVOKEVIRTUALX {
+    
+    @Test 
+    public void test_invoke_int_a() {
+        Virtual v = new Virtual();
+        int r;
+        
+        r = v.virtualInt01(1);
+        assertEquals(1, r);
+        
+        r = v.virtualInt02(1,1);
+        assertEquals(2, r);
+        
+        r = v.virtualInt03(1,1,1);
+        assertEquals(3, r);
+
+        r = v.virtualInt04(1,1,1,1);
+        assertEquals(4, r);
+        
+        r = v.virtualInt05(1,1,1,1,1);
+        assertEquals(5, r);
+        
+        r = v.virtualInt06(1,1,1,1,1,1);
+        assertEquals(6, r);
+        
+        r = v.virtualInt07(1,1,1,1,1,1,1);
+        assertEquals(7, r);
+        
+        r = v.virtualInt08(1,1,1,1,1,1,1,1);
+        assertEquals(8, r);
+        
+        r = v.virtualInt09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9, r);
+        
+        r = v.virtualInt10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10, r);
+        
+        r = v.virtualInt11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11, r);
+        
+        r = v.virtualInt12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12, r);
+        
+        r = v.virtualInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13, r);
+        
+        r = v.virtualInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14, r);
+        
+        r = v.virtualInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15, r);
+        
+        r = v.virtualInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16, r);
+        
+        r = v.virtualInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17, r);                
+    }
+
+    @Test 
+    public void test_invoke_int_b() {
+        test_invoke_int_a();
+    }
+    
+    @Test 
+    public void test_invoke_double_a() {
+        Virtual v = new Virtual();
+        double r;
+        
+        r = v.virtualDouble01(1);
+        assertEquals(1.0, r, 0.001);
+        
+        r = v.virtualDouble02(1,1);
+        assertEquals(2.0, r, 0.001);
+        
+        r = v.virtualDouble03(1,1,1);
+        assertEquals(3.0, r, 0.001);
+
+        r = v.virtualDouble04(1,1,1,1);
+        assertEquals(4.0, r, 0.001);
+        
+        r = v.virtualDouble05(1,1,1,1,1);
+        assertEquals(5.0, r, 0.001);
+        
+        r = v.virtualDouble06(1,1,1,1,1,1);
+        assertEquals(6.0, r, 0.001);
+        
+        r = v.virtualDouble07(1,1,1,1,1,1,1);
+        assertEquals(7.0, r, 0.001);
+        
+        r = v.virtualDouble08(1,1,1,1,1,1,1,1);
+        assertEquals(8.0, r, 0.001);
+        
+        r = v.virtualDouble09(1,1,1,1,1,1,1,1,1);
+        assertEquals(9.0, r, 0.001);
+        
+        r = v.virtualDouble10(1,1,1,1,1,1,1,1,1,1);
+        assertEquals(10.0, r, 0.001);
+        
+        r = v.virtualDouble11(1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(11.0, r, 0.001);
+        
+        r = v.virtualDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(12.0, r, 0.001);
+        
+        r = v.virtualDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(13.0, r, 0.001);
+        
+        r = v.virtualDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(14.0, r, 0.001);
+        
+        r = v.virtualDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(15.0, r, 0.001);
+        
+        r = v.virtualDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(16.0, r, 0.001);
+        
+        r = v.virtualDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+        assertEquals(17.0, r, 0.001);                
+    }
+
+    @Test 
+    public void test_invoke_double_b() {
+        test_invoke_double_a();
+    }
+    
+    @Test 
+    public void test_invoke_Object_a() {
+        Virtual v = new Virtual();
+        Object o1 = new Object();
+        Object o2 = new Object();        
+        Object[] r;
+        
+        r = v.virtualObject01(o1);
+        assertTrue(o1 == r[0]);
+        
+                
+        r = v.virtualObject02(o1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[1]);
+        
+        r = v.virtualObject03(o1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[2]);
+        
+        r = v.virtualObject04(o1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[3]);
+                
+        r = v.virtualObject05(o1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[4]);
+                
+        r = v.virtualObject06(o1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[5]);
+                
+        r = v.virtualObject07(o1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[6]);
+             
+        r = v.virtualObject08(o1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[7]);
+                
+        r = v.virtualObject09(o1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[8]);
+                
+        r = v.virtualObject10(o1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[9]);
+        
+        r = v.virtualObject11(o1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[10]);
+        
+        r = v.virtualObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[11]);
+        
+        r = v.virtualObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[12]);
+        
+        r = v.virtualObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[13]);
+        
+        r = v.virtualObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[14]);
+        
+        r = v.virtualObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[15]);
+        
+        r = v.virtualObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
+        assertTrue(o1 == r[0]);
+        assertTrue(o2 == r[16]);
+
+                        
+    }
+
+    @Test 
+    public void test_invoke_Object_b() {
+        test_invoke_Object_a();
+    }
+    
+    // Tests for NULL receives
+    
+    
+    public void invokeVirtualIn01(Virtual v, int i1) {
+        v.virtualInt01(i1);
+    }
+    
+    @Test    
+    public void test_int_01a_NULL() {
+        try {
+            Virtual v = null;
+            invokeVirtualIn01(v, 1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_int_01b_NULL() {
+        test_int_01a_NULL();
+    }
+    
+
+    public void invokeVirtualDouble05(Virtual v, double i1, double i2,double i3,double i4,double i5) {
+        v.virtualDouble05(i1, i2, i3, i4, i5);
+    }
+    @Test    
+    public void test_double_05a_NULL() {
+        try {
+            Virtual v = null;
+            invokeVirtualDouble05(v, 1,1,1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_double_05b_NULL() {
+        test_int_01a_NULL();
+    }
+
+    
+    public void invokeVirtualDouble10(Virtual v, double i1, double i2,double i3,double i4,double i5, double i6, double i7, double i8, double i9, double i10) {
+        v.virtualDouble10(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
+    }    
+    @Test
+    public void test_double_10a_NULL() {
+        try {
+            Virtual v = null; 
+            invokeVirtualDouble10(v, 1,1,1,1,1,1,1,1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_double_10b_NULL() {
+        test_double_10a_NULL();
+    }
+    
+    
+    public void invokeVirtualObject03(Virtual v, Object i1, Object i2, Object i3) {
+        v.virtualObject03(i1, i2, i3);
+    }    
+    @Test
+    public void test_Object_03a_NULL() {
+        try {
+            Virtual v = null;  
+            invokeVirtualObject03(v, 1,1,1);
+            assertTrue(false);
+        } catch (NullPointerException npe) {
+            
+        }        
+    }
+    @Test
+    public void test_Objecte_03b_NULL() {
+        test_Object_03a_NULL();
+    }
+    
+    
+    
+    
+    public static class Virtual {
+        public static final int initialized = 12345;
+        
+        public  int virtual00() {
+            return 0;
+        }
+       
+        public  int virtualInt01(int i1) {
+            return i1; 
+        }
+        public  int virtualInt02(int i1, int i2) {
+            return i1 + i2;
+        }
+        public  int virtualInt03(int i1, int i2, int i3) {
+            return i1 + i2 + i3;
+        }
+        public  int virtualInt04(int i1, int i2, int i3, int i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        } 
+        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+
+
+        public  double virtualDouble01(int i1) {
+            return i1; 
+        }
+        public  double virtualDouble02(double i1, double i2) {
+            return i1 + i2;
+        }
+        public  double virtualDouble03(double i1, double i2, double i3) {
+            return i1 + i2 + i3;
+        }
+        public  double virtualDouble04(double i1, double i2, double i3, double i4) {
+            return i1 + i2 + i3 + i4;
+        }
+        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5) {
+            return i1 + i2 + i3 + i4 + i5;
+        }
+        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
+            return i1 + i2 + i3 + i4 + i5 + i6;
+        }
+        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
+        }
+        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
+        }
+        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+        }
+        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
+        }
+        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
+        }
+        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
+        }
+        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
+        }
+        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
+        }
+        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
+        }
+        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
+        }
+        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
+            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
+        }
+        
+        public  Object[] virtualObject01(Object i1) {
+            return new Object[] { i1 }; 
+        }
+        public  Object[] virtualObject02(Object i1, Object i2) {
+            return new Object[] { i1 , i2 };
+        }
+        public  Object[] virtualObject03(Object i1, Object i2, Object i3) {
+            return new Object[] { i1 , i2 , i3 };
+        }
+        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4) {
+            return new Object[] { i1 , i2 , i3 , i4 };
+        }
+        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 };
+        }
+        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
+        }
+        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
+        }
+        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
+        }
+        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
+        }
+        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
+        }
+        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
+        }
+        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
+        }
+        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
+        }
+        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
+        }
+        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
+        }
+        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
+        }
+        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
+            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
+        }
+        
+    }
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/MULTIANEWARRAY.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,882 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class MULTIANEWARRAY {
+    
+    // ===================== byte =================================
+
+    @Test
+    public void test_byte_01a() {
+        byte[][] array2 = new byte[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        byte[][][] array3 = new byte[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[8].length == 8);
+        assertTrue(array3[8][0].length == 7);
+
+        byte[][][][] array4 = new byte[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[7].length == 8);
+        assertTrue(array4[7][6].length == 7);
+        assertTrue(array4[7][6][5].length == 6);
+
+        byte[][][][][] array5 = new byte[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[7].length == 8);
+        assertTrue(array5[7][6].length == 7);
+        assertTrue(array5[7][6][5].length == 6);
+        assertTrue(array5[7][6][5][4].length == 5);
+
+        byte[][][][][][] array6 = new byte[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[7].length == 8);
+        assertTrue(array6[7][6].length == 7);
+        assertTrue(array6[7][6][0].length == 6);
+        assertTrue(array6[7][6][5][4].length == 5);
+        assertTrue(array6[7][6][5][4][0].length == 4);
+
+        byte[][][][][][][] array7 = new byte[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[7].length == 8);
+        assertTrue(array7[7][6].length == 7);
+        assertTrue(array7[7][6][5].length == 6);
+        assertTrue(array7[7][6][5][4].length == 5);
+        assertTrue(array7[7][6][5][4][3].length == 4);
+        assertTrue(array7[7][6][5][4][3][2].length == 3);
+        
+        byte[][][][][][][][] array8 = new byte[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        byte[][][][][][][][][] array9 = new byte[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_byte_01b() {
+        test_byte_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_byte_02a() {
+        try {
+            byte[][][][][] array5 = new byte[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            byte[][][][][][][][][][] array10 = new byte[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_byte_02b() {
+        test_byte_02a();
+    }
+    
+    // ============= short ===========================
+    @Test
+    public void test_short_01a() {
+        short[][] array2 = new short[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        short[][][] array3 = new short[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        short[][][][] array4 = new short[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        short[][][][][] array5 = new short[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        short[][][][][][] array6 = new short[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        short[][][][][][][] array7 = new short[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        short[][][][][][][][] array8 = new short[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        short[][][][][][][][][] array9 = new short[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_short_01b() {
+        test_short_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_short_02a() {
+        try {
+            short[][][][][] array5 = new short[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            short[][][][][][][][][][] array10 = new short[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_short_02b() {
+        test_short_02a();
+    }
+    
+    // ===================== int ==========================================
+
+    @Test
+    public void test_int_01a() {
+        int[][] array2 = new int[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        int[][][] array3 = new int[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        int[][][][] array4 = new int[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        int[][][][][] array5 = new int[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        int[][][][][][] array6 = new int[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        int[][][][][][][] array7 = new int[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        int[][][][][][][][] array8 = new int[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        int[][][][][][][][][] array9 = new int[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_int_01b() {
+        test_int_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_int_02a() {
+        try {
+            int[][][][][] array5 = new int[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            int[][][][][][][][][][] array10 = new int[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_int_02b() {
+        test_int_02a();
+    }
+
+    // ===================== long =================================
+
+    @Test
+    public void test_long_01a() {
+        long[][] array2 = new long[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        long[][][] array3 = new long[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        long[][][][] array4 = new long[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        long[][][][][] array5 = new long[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        long[][][][][][] array6 = new long[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        long[][][][][][][] array7 = new long[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        long[][][][][][][][] array8 = new long[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        long[][][][][][][][][] array9 = new long[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_long_01b() {
+        test_long_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_long_02a() {
+        try {
+            long[][][][][] array5 = new long[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            long[][][][][][][][][][] array10 = new long[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_long_02b() {
+        test_long_02a();
+    }
+
+    // ===================== float =================================
+
+    @Test
+    public void test_float_01a() {
+        float[][] array2 = new float[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        float[][][] array3 = new float[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        float[][][][] array4 = new float[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        float[][][][][] array5 = new float[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        float[][][][][][] array6 = new float[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        float[][][][][][][] array7 = new float[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        float[][][][][][][][] array8 = new float[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        float[][][][][][][][][] array9 = new float[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_float_01b() {
+        test_float_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_float_02a() {
+        try {
+            float[][][][][] array5 = new float[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            float[][][][][][][][][][] array10 = new float[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_float_02b() {
+        test_float_02a();
+    }
+
+    // ===================== double =================================
+
+    @Test
+    public void test_double_01a() {
+        double[][] array2 = new double[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        double[][][] array3 = new double[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        double[][][][] array4 = new double[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        double[][][][][] array5 = new double[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        double[][][][][][] array6 = new double[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        double[][][][][][][] array7 = new double[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        double[][][][][][][][] array8 = new double[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        double[][][][][][][][][] array9 = new double[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_double_01b() {
+        test_double_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_double_02a() {
+        try {
+            double[][][][][] array5 = new double[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            double[][][][][][][][][][] array10 = new double[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_double_02b() {
+        test_double_02a();
+    }
+
+    // ===================== boolean =================================
+
+    @Test
+    public void test_boolean_01a() {
+        boolean[][] array2 = new boolean[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        boolean[][][] array3 = new boolean[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        boolean[][][][] array4 = new boolean[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        boolean[][][][][] array5 = new boolean[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        boolean[][][][][][] array6 = new boolean[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        boolean[][][][][][][] array7 = new boolean[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        boolean[][][][][][][][] array8 = new boolean[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        boolean[][][][][][][][][] array9 = new boolean[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_boolean_01b() {
+        test_boolean_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_boolean_02a() {
+        try {
+            boolean[][][][][] array5 = new boolean[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            boolean[][][][][][][][][][] array10 = new boolean[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_boolean_02b() {
+        test_boolean_02a();
+    }
+
+    // ===================== char =================================
+
+    @Test
+    public void test_char_01a() {
+        char[][] array2 = new char[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        char[][][] array3 = new char[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        char[][][][] array4 = new char[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        char[][][][][] array5 = new char[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        char[][][][][][] array6 = new char[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        char[][][][][][][] array7 = new char[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        char[][][][][][][][] array8 = new char[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        char[][][][][][][][][] array9 = new char[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[0].length == 8);
+        assertTrue(array9[0][0].length == 7);
+        assertTrue(array9[0][0][0].length == 6);
+        assertTrue(array9[0][0][0][0].length == 5);
+        assertTrue(array9[0][0][0][0][0].length == 4);
+        assertTrue(array9[0][0][0][0][0][0].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
+    }
+    
+    @Test
+    public void test_char_01b() {
+        test_char_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_char_02a() {
+        try {
+            char[][][][][] array5 = new char[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            char[][][][][][][][][][] array10 = new char[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_char_02b() {
+        test_char_02a();
+    }
+    
+    
+    // ====================== Object =================================
+
+    @Test
+    public void test_01a() {
+        ArrayElement[][] array2 = new ArrayElement[9][8];
+        assertTrue(array2.length == 9);
+        assertTrue(array2[0].length == 8);
+
+        ArrayElement[][][] array3 = new ArrayElement[9][8][7];
+        assertTrue(array3.length == 9);
+        assertTrue(array3[0].length == 8);
+        assertTrue(array3[0][0].length == 7);
+
+        ArrayElement[][][][] array4 = new ArrayElement[9][8][7][6];
+        assertTrue(array4.length == 9);
+        assertTrue(array4[0].length == 8);
+        assertTrue(array4[0][0].length == 7);
+        assertTrue(array4[0][0][0].length == 6);
+
+        ArrayElement[][][][][] array5 = new ArrayElement[9][8][7][6][5];
+        assertTrue(array5.length == 9);
+        assertTrue(array5[0].length == 8);
+        assertTrue(array5[0][0].length == 7);
+        assertTrue(array5[0][0][0].length == 6);
+        assertTrue(array5[0][0][0][0].length == 5);
+
+        ArrayElement[][][][][][] array6 = new ArrayElement[9][8][7][6][5][4];
+        assertTrue(array6.length == 9);
+        assertTrue(array6[0].length == 8);
+        assertTrue(array6[0][0].length == 7);
+        assertTrue(array6[0][0][0].length == 6);
+        assertTrue(array6[0][0][0][0].length == 5);
+        assertTrue(array6[0][0][0][0][0].length == 4);
+
+        ArrayElement[][][][][][][] array7 = new ArrayElement[9][8][7][6][5][4][3];
+        assertTrue(array7.length == 9);
+        assertTrue(array7[0].length == 8);
+        assertTrue(array7[0][0].length == 7);
+        assertTrue(array7[0][0][0].length == 6);
+        assertTrue(array7[0][0][0][0].length == 5);
+        assertTrue(array7[0][0][0][0][0].length == 4);
+        assertTrue(array7[0][0][0][0][0][0].length == 3);
+        
+        ArrayElement[][][][][][][][] array8 = new ArrayElement[9][8][7][6][5][4][3][2];
+        assertTrue(array8.length == 9);
+        assertTrue(array8[0].length == 8);
+        assertTrue(array8[0][0].length == 7);
+        assertTrue(array8[0][0][0].length == 6);
+        assertTrue(array8[0][0][0][0].length == 5);
+        assertTrue(array8[0][0][0][0][0].length == 4);
+        assertTrue(array8[0][0][0][0][0][0].length == 3);
+        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
+               
+        ArrayElement[][][][][][][][][] array9 = new ArrayElement[9][8][7][6][5][4][3][2][1];
+        assertTrue(array9.length == 9);
+        assertTrue(array9[8].length == 8);
+        assertTrue(array9[0][7].length == 7);
+        assertTrue(array9[0][0][6].length == 6);
+        assertTrue(array9[0][0][0][5].length == 5);
+        assertTrue(array9[0][0][0][0][4].length == 4);
+        assertTrue(array9[0][0][0][0][0][3].length == 3);
+        assertTrue(array9[0][0][0][0][0][0][2].length == 2);
+        assertTrue(array9[0][0][0][0][0][0][0][1].length == 1);        
+    }
+    
+    @Test
+    public void test_01b() {
+        test_01a();
+    }
+    
+    @Test
+    @SuppressWarnings({"unused" })
+    public void test_02a() {
+        try {
+            ArrayElement[][][][][] array5 = new ArrayElement[9][8][-1][6][5];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }
+        
+        try {
+            ArrayElement[][][][][][][][][][] array10 = new ArrayElement[9][8][7][6][5][9][8][7][6][-1];
+            assertTrue(false);
+        } catch (NegativeArraySizeException nase) {
+            assertTrue(true);
+        }             
+        
+    }
+    
+    @Test
+    public void test_02b() {
+        test_02a();
+    }
+
+    
+    public static class ArrayElement {
+        public Object value;
+    }
+
+    // ========================== MISC ===========================
+    
+    @Test
+    public void test_incomplete_01() {
+        int grid[][][];
+        grid = new int[10][5][];    
+        
+        assertTrue(grid.length == 10);
+        assertTrue(grid[9].length == 5);
+        assertTrue(grid[5][3] == null);
+    }
+    
+    @Test
+    public void test_incomplete_02() {
+        int grid[][][][][][][][][];
+        grid = new int[3][3][3][3][3][3][3][3][];    
+        
+        assertTrue(grid.length == 3);
+        assertTrue(grid[0].length == 3);
+        assertTrue(grid[0][1][2][2][1][0][1][2] == null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/XAND_and_XOR.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,98 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import sun.misc.DoubleConsts;
+
+
+/*
+ * Test for (B/I/L)AND and (B/I/L)LOR 
+ */
+
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class XAND_and_XOR {
+
+    @Test
+    public void test_LAND_01() {
+        long l;
+        
+        l =-9223372036854775808L & 0L;
+        assertTrue(l == 0L);
+
+               
+        l =-9223372036854775808L & DoubleConsts.SIGN_BIT_MASK;
+        assertTrue(l != 0L);             
+    }
+    
+    @Test
+    public void test_LOR_01() {
+        long l;
+                       
+        l =-9223372036854775808L | 1L;
+        assertTrue(l == -9223372036854775807L);
+    }
+    
+    @Test
+    public void test_rawCopySign_01() {
+        long magnitude = Double.doubleToRawLongBits(-0.0d);
+        long sign =      Double.doubleToRawLongBits(-1.0d);        
+        long l1, l2, l3, l4;
+        
+        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
+        
+        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
+        
+        l3 = magnitude & l2;
+        
+        l4 = l1 | l3;
+        
+        assertTrue(l1 == -9223372036854775808L);
+        assertTrue(l2 == 9223372036854775807L);
+        assertTrue(l3 == 0L);
+        assertTrue(l4 == -9223372036854775808L);               
+    }
+
+    @Test
+    public void test_rawCopySign_02() {
+        long magnitude = Double.doubleToRawLongBits(-1.0d);
+        long sign =      Double.doubleToRawLongBits(-0.0d);        
+        long l1, l2, l3, l4;
+        
+        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
+        
+        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
+        
+        l3 = magnitude & l2;
+        
+        l4 = l1 | l3;
+        
+        assertTrue(l1 == -9223372036854775808L);
+        assertTrue(l2 == 9223372036854775807L);
+        assertTrue(l3 == 4607182418800017408L);
+        assertTrue(l4 == -4616189618054758400L);               
+    }
+    
+    @Test
+    public void test_rawCopySign_03() {
+        long magnitude = Double.doubleToRawLongBits( 1.0d);
+        long sign =      Double.doubleToRawLongBits(-0.0d);        
+        long l1, l2, l3, l4;
+        
+        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
+        
+        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
+        
+        l3 = magnitude & l2;
+        
+        l4 = l1 | l3;
+        
+        assertTrue(l1 == -9223372036854775808L);
+        assertTrue(l2 == 9223372036854775807L);
+        assertTrue(l3 == 4607182418800017408L);
+        assertTrue(l4 == -4616189618054758400L);               
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/java/src/stx/libjava/tests/vm/XSHX.java	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,90 @@
+package stx.libjava.tests.vm;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/*
+ * Test for B/I/L signed/unsigned SHift Left/Right
+ */
+@stx.libjava.annotation.Package("stx:libjava/tests")
+public class XSHX {
+
+	private final byte[] cafebabe = { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE };
+	
+	@Test
+	public void testShiftingLong() {
+		byte[] buffer = new byte[8];		
+		long v = readLong(cafebabe);
+		
+		writeLong(v, buffer);
+        
+        for (int i = 0; i < cafebabe.length; i++) {
+        	assertTrue(cafebabe[i] == buffer[i]);
+        }
+	}
+	
+	@Test	
+	public void test_IUSHR_01() {
+	    int ival = 1234567890;
+	    byte[] bval = new byte[4];
+	    
+	    bval[0] = (byte) ((ival >>> 24) & 0xFF);
+	    bval[1] = (byte) ((ival >>> 16) & 0xFF);
+        bval[2] = (byte) ((ival >>> 8) & 0xFF);
+        bval[3] = (byte) (ival & 0xFF);
+        
+        assertEquals(73, bval[0]);
+        assertEquals(-106, bval[1]);
+        assertEquals(2, bval[2]);
+        assertEquals(-46, bval[3]);
+        
+        
+        ival = -1062730440;
+        
+        bval[0] = (byte) ((ival >>> 24) & 0xFF);
+        bval[1] = (byte) ((ival >>> 16) & 0xFF);
+        bval[2] = (byte) ((ival >>> 8) & 0xFF);
+        bval[3] = (byte) (ival & 0xFF);
+        
+        assertEquals(-64, bval[0]);
+        assertEquals(-88, bval[1]);
+        assertEquals(5, bval[2]);
+        assertEquals(56, bval[3]);
+        
+        ival = -1407778526;
+        
+        bval[0] = (byte) ((ival >>> 24) & 0xFF);
+        bval[1] = (byte) ((ival >>> 16) & 0xFF);
+        bval[2] = (byte) ((ival >>> 8) & 0xFF);
+        bval[3] = (byte) (ival & 0xFF);
+        
+       
+        assertEquals(-84, bval[0]);
+        assertEquals(23, bval[1]);
+        assertEquals(1, bval[2]);
+        assertEquals(34, bval[3]);
+	}
+	
+	public final void writeLong(long v, byte[] writeBuffer) {
+		writeBuffer[0] = (byte)(v >>> 56);
+        writeBuffer[1] = (byte)(v >>> 48);
+        writeBuffer[2] = (byte)(v >>> 40);
+        writeBuffer[3] = (byte)(v >>> 32);
+        writeBuffer[4] = (byte)(v >>> 24);
+        writeBuffer[5] = (byte)(v >>> 16);
+        writeBuffer[6] = (byte)(v >>>  8);
+        writeBuffer[7] = (byte)(v >>>  0);
+	}
+	
+	public final long readLong(byte[] readBuffer) {        
+        return (((long)readBuffer[0] << 56) +
+                ((long)(readBuffer[1] & 255) << 48) +
+                ((long)(readBuffer[2] & 255) << 40) +
+                ((long)(readBuffer[3] & 255) << 32) +
+                ((long)(readBuffer[4] & 255) << 24) +
+                ((readBuffer[5] & 255) << 16) +
+                ((readBuffer[6] & 255) <<  8) +
+                ((readBuffer[7] & 255) <<  0));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lccmake.bat	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak -DUSELCC=1 %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/libInit.cc	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,34 @@
+/*
+ * $Header$
+ *
+ * DO NOT EDIT
+ * automagically generated from the projectDefinition: stx_libjava_tests.
+ */
+#define __INDIRECTVMINITCALLS__
+#include <stc.h>
+
+#ifdef WIN32
+# pragma codeseg INITCODE "INITCODE"
+#endif
+
+#if defined(INIT_TEXT_SECTION) || defined(DLL_EXPORT)
+DLL_EXPORT void _libstx_libjava_tests_Init() INIT_TEXT_SECTION;
+DLL_EXPORT void _libstx_libjava_tests_InitDefinition() INIT_TEXT_SECTION;
+#endif
+
+void _libstx_libjava_tests_InitDefinition(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libstx_libjava_tests__DFN", _libstx_libjava_tests_InitDefinition, "stx:libjava/tests");
+_stx_137libjava_137tests_Init(pass,__pRT__,snd);
+
+__END_PACKAGE__();
+}
+
+void _libstx_libjava_tests_Init(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libstx_libjava_tests", _libstx_libjava_tests_Init, "stx:libjava/tests");
+_stx_137libjava_137tests_Init(pass,__pRT__,snd);
+
+
+__END_PACKAGE__();
+}
--- a/tests/libjava/.classpath	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" output="classloader-tests-classes/bin" path="classloader-tests-classes/src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/stx.libjava"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/stx.libjava.libs"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
--- a/tests/libjava/.project	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>stx.libjava.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
--- a/tests/libjava/.settings/org.eclipse.jdt.groovy.core.prefs	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-groovy.compiler.level=-1
-groovy.script.filters=**/*.dsld,y,scripts/**/*.groovy,y,src/main/resources/**/*.groovy,y,src/test/resources/**/*.groovy,y
--- a/tests/libjava/build.auto.xml	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- This file has been generated by STX:LIBJAVA.
-     Do not edit, it will be ovewritten next time you'll commit from Smalltalk/X.
-     Edit build.xml instead
- -->
-<project name="stx.libjava.tests.generated" default="compile" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
-    <property name="TOP" value="../../../.."/>
-    <import file="${TOP}/stx/libjava/java/build.common.xml"/>
-
-    <path id="build.classpath.prereqs">
-        <path refid="build.classpath.stx.libjava"/>
-        <path refid="build.classpath.stx.libjava.libs"/>
-    </path>
-
-    <path id="build.classpath.stx.libjava">
-        <pathelement path="${TOP}/stx/libjava/java/bin"/>
-        <fileset dir="${TOP}/stx/libjava/java/libs" includes="*.jar"/>
-    </path>
-
-    <target name="prereqs.stx.libjava" extensionOf="prereqs.main">
-        <ant antfile="${TOP}/stx/libjava/java/build.xml"
-             target="${ant.project.invoked-targets}"
-             inheritAll="false"
-             useNativeBasedir="true"/>
-    </target>
-
-    <path id="build.classpath.stx.libjava.libs">
-        <pathelement path="${TOP}/stx/libjava/libs/java/bin"/>
-        <fileset dir="${TOP}/stx/libjava/libs/java/libs" includes="*.jar"/>
-    </path>
-
-    <target name="prereqs.stx.libjava.libs" extensionOf="prereqs.main">
-        <ant antfile="${TOP}/stx/libjava/libs/java/build.xml"
-             target="${ant.project.invoked-targets}"
-             inheritAll="false"
-             useNativeBasedir="true"/>
-    </target>
-
-
-
-</project>
--- a/tests/libjava/build.xml	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project name="stx.libjava.tools" default="compile" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
-    <import file="build.auto.xml"/>
-
-    <target name="compile.classloader-tests-classes" extensionOf="compile.post">
-        <mkdir dir="classloader-tests-classes/bin"/>
-        <javac srcdir="classloader-tests-classes/src"
-               destdir="classloader-tests-classes/bin"
-               classpathref="build.classpath"/>
-    </target>
-
-    <target name="clean.classloader-tests-classes" extensionOf="clean.post">
-        <delete dir="classloader-tests-classes/bin" />
-    </target>
-
-</project>
\ No newline at end of file
--- a/tests/libjava/classloader-tests-classes/README.txt	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Do not delete this directory, classes here are required
-to test classloaders. See ClassLoaderTests.
--- a/tests/libjava/classloader-tests-classes/src/Bar.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Bar {
-
-}
--- a/tests/libjava/classloader-tests-classes/src/Baz.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Baz {
-
-}
--- a/tests/libjava/classloader-tests-classes/src/ClassWithNestedAnnotations.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ClassWithNestedAnnotations {
-	@XmlElements(@XmlElement(name = "Text", namespace = "http://www.w3.org/2003/05/soap-envelope"))
-    private final List<Integer> field = null;
-}
--- a/tests/libjava/classloader-tests-classes/src/Foo.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Foo extends Bar {
-	
-	public Baz baz;
-}
--- a/tests/libjava/classloader-tests-classes/src/SqlSubclass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-import javax.sql.rowset.BaseRowSet;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SqlSubclass extends BaseRowSet {
-	private static final long serialVersionUID = 4326121495672916752L;
-}
--- a/tests/libjava/src/stx/libjava/tests/AsmTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-package stx.libjava.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import org.junit.Test;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.ClassVisitor;
-
-import org.objectweb.asm.Opcodes;
-
-import stx.libjava.tests.asm.AddFieldAdapter;
-import stx.libjava.tests.asm.HelloWorldGenerator;
-import stx.libjava.tests.mocks.Crate;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class AsmTests implements Opcodes {
-
-	@Test
-	public void testGeneratingHelloWorldClass() throws Exception {
-		byte[] generatedClass = HelloWorldGenerator.generate();
-		Class loadedClass = loadClass("HelloWorld", generatedClass);
-		Object instance = loadedClass.getConstructor(String.class).newInstance("MH");
-		Method m = loadedClass.getDeclaredMethod("getHello", null);
-		Object resultObj = m.invoke(instance, null);
-		String expectedResult = "Hello World from MH";
-		String result =(String) resultObj;
-		assertEquals(expectedResult, result);	
-	}
-	
-	@Test
-	public void testAddingFieldToCrate() throws Exception {
-		ClassReader cr = new ClassReader("stx.libjava.tests.mocks.Crate");
-		ClassWriter cw = new ClassWriter(0);
-		AddFieldAdapter added = new AddFieldAdapter(cw, ACC_PUBLIC, "addedField", "Ljava/lang/String;");
-		cr.accept((ClassVisitor)added, 0);
-		byte[] generatedClass = cw.toByteArray();
-		Class loadedClass = loadClass("stx.libjava.tests.mocks.Crate", generatedClass);
-		assertNotNull("testing updated class not null",loadedClass);
-		boolean addedFieldPresent = false;
-		for (Field f : loadedClass.getDeclaredFields()) {
-			if (f.getName().equals("addedField")) {
-				addedFieldPresent = true;
-			}
-		}
-		assertTrue("testing correct updated class creation",addedFieldPresent);
-		addedFieldPresent = false;
-		for (Field f : Crate.class.getDeclaredFields()) {
-			if (f.getName().equals("addedField")) {
-				addedFieldPresent = true;
-			}
-		}
-		assertTrue("testing hot redeploy of changed class",addedFieldPresent);
-	}
-
-	private Class loadClass(String name, byte[] b) {
-		// override classDefine (as it is protected) and define the class.
-		Class clazz = null;
-		try {
-			ClassLoader loader = ClassLoader.getSystemClassLoader();
-			Class cls = Class.forName("java.lang.ClassLoader");
-			Method method = cls.getDeclaredMethod("defineClass", new Class[] {
-					String.class, byte[].class, int.class, int.class });
-
-			// protected method invocaton
-			method.setAccessible(true);
-			try {
-				Object[] args = new Object[] { name, b, new Integer(0),
-						new Integer(b.length) };
-				clazz = (Class) method.invoke(loader, args);
-			} finally {
-				method.setAccessible(false);
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			System.exit(1);
-		}
-		return clazz;
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/GroovyShellTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-package stx.libjava.tests;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-import stx.libjava.groovy.GroovyShell;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class GroovyShellTests {
-
-    @Test
-    public void test_imports_01() {
-        GroovyShell shell = new GroovyShell();
-        shell.evaluate("import stx.libjava.tests.mocks.b.*;");
-        shell.evaluate("new B()");        
-    }
-    
-    @Test
-    public void test_regression_01() {
-        GroovyShell shell = new GroovyShell();
-        assertEquals(shell.evaluate("System.getProperty(\"java.classpath\")"),
-                    System.getProperty("java.classpath"));
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/JUnit3Tests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-package stx.libjava.tests;
-
-import junit.framework.TestCase;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class JUnit3Tests extends TestCase {
-	
-	public final void testSayHi() {       
-        assertEquals("hi", sayHi());
-    }
-    
-    private String sayHi() {
-        return "hi";
-    }
-    
-    public void testPass() {
-    	assertEquals(10,10);
-    }
-    
-    public void testFailure() {
-    	/* Make it failing only when running on Smalltalk/X VM */
-    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
-    		assertEquals(10,0);
-    	}
-    }
-    
-    public void testError() {
-    	/* Make it error only when running on Smalltalk/X VM */
-    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
-    		float a = 10 / 0;
-    		assertEquals(a, 0.0);
-    	}
-    }
-	
-	public static void main(String [] args) {
-		System.out.println("Expected output: 4 run, 2 failed");
-		Result result = runAllTests();	
-		System.out.println("getRunCount() = " + result.getRunCount());
-		System.out.println("getFailureCount() = " + result.getFailureCount());
-		for (Failure f : result.getFailures()) {
-			System.out.println("Failure: " + f.toString());	
-		}
-	}
-
-	public static Result runAllTests() {		
-		return JUnitCore.runClasses(JUnit3Tests.class);			
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/JUnit4Tests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-package stx.libjava.tests;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class JUnit4Tests {
-
-	@Test
-	public void helloWorld() {
-		assertEquals("Is zero equal 5-5 test",0, (5-5));
-	}
-	
-	@Test
-	public void stringEquality() {
-		assertEquals("String equality test", "hello", "hello");
-	}
-	
-	@Test
-	public void helloWorldWillNotPass() {
-		/* Make it failing only when running on Smalltalk/X VM */
-		if (System.getProperty("java.vm.name").equals("Smalltalk/X")) {
-			assertEquals("Is zero equal 5 test", 0, 5);
-		}
-	}
-	
-	public static void main(String [] args) {
-		System.out.println("Expected output: 3 run, 1 failed");
-		Result result = JUnitCore.runClasses(JUnit4Tests.class);
-		System.out.println("getRunCount() = " + result.getRunCount());
-		System.out.println("getFailureCount() = " + result.getFailureCount());
-		for (Failure f : result.getFailures()) {
-			System.out.println("Failure: " + f.toString());	
-		}
-	}
-	
-	public static Result runAllTests() {		
-		return JUnitCore.runClasses(JUnit4Tests.class);			
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/Log4JTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package stx.libjava.tests;
-
-import junit.framework.TestCase;
-
-import org.apache.log4j.BasicConfigurator;
-import org.apache.log4j.Logger;
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Log4JTests extends TestCase {
-	
-	public void testLoadAndLogSomething() {
-		//assertTrue("Test disabled since it crashes the VM (#9 bug)", false);
-		/**/
-		BasicConfigurator.configure();
-		Logger logger = Logger.getRootLogger();
-		logger.debug("Sample debug message");
-		logger.error("Sample error message");
-		logger.fatal("Sample fatal message");
-		/**/
-		
-	}
-	
-	public static void main(String[] args) {
-		Result result = runAllTests();	
-		System.out.println("getRunCount() = " + result.getRunCount());
-		System.out.println("getFailureCount() = " + result.getFailureCount());
-		for (Failure f : result.getFailures()) {
-			System.out.println("Failure: " + f.toString());	
-		}
-		System.out.println("End of output");
-	}
-	
-	public static Result runAllTests() {		
-		return JUnitCore.runClasses(Log4JTests.class);			
-	}
-
-}
-
--- a/tests/libjava/src/stx/libjava/tests/RegexTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-package stx.libjava.tests;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class RegexTests extends TestCase {
-
-	public void testSimpleRegex() {
-		Assert.assertTrue("Simple text matching","foo@foo.org".matches("[a-z]*@[a-z]*.[a-z]*"));
-	}
-	
-	public void testNotSoSimpleRegex() {
-		Pattern p = Pattern.compile("[a-z]*@[a-z]*.[a-z]*");
-		Matcher m = p.matcher("foo@foo.org");
-		Assert.assertTrue("Not so simple text matching",m.matches());
-	}
-	
-	public static void main(String[] args) {
-		System.out.println("Expected output: 2 run, 0 failed");
-		Result result = runAllTests();		
-		System.out.println("getRunCount() = " + result.getRunCount());
-		System.out.println("getFailureCount() = " + result.getFailureCount());
-		for (Failure f : result.getFailures()) {
-			System.out.println("Failure: " + f.toString());	
-		}
-	}
-	
-	public static Result runAllTests() {		
-		return JUnitCore.runClasses(RegexTests.class);			
-	}
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/StringTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-package stx.libjava.tests;
-
-import org.junit.Test;
-
-import junit.framework.TestCase;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class StringTests extends TestCase {
-	
-	@Test
-	public void test_01() {
-	    String s = "\u1FFF";
-	    
-	    assertEquals(1, s.length());
-	    assertEquals(0x1FFF, (int)s.charAt(0));
-	    
-	}
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/asm/AddFieldAdapter.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package stx.libjava.tests.asm;
-
-import org.objectweb.asm.ClassAdapter;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.FieldVisitor;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class AddFieldAdapter extends ClassAdapter {
-	private int fAcc;
-	private String fName;
-	private String fDesc;
-	private boolean isFieldPresent;
-
-	public AddFieldAdapter(ClassVisitor cv, int fAcc, String fName, String fDesc) {
-		super(cv);
-		this.fAcc = fAcc;
-		this.fName = fName;
-		this.fDesc = fDesc;
-	}
-
-	@Override
-	public FieldVisitor visitField(int access, String name, String desc,
-			String signature, Object value) {
-		if (name.equals(fName)) {
-			isFieldPresent = true;
-		}
-		return cv.visitField(access, name, desc, signature, value);
-	}
-
-	@Override
-	public void visitEnd() {
-		if (!isFieldPresent) {
-			FieldVisitor fv = cv.visitField(fAcc, fName, fDesc, null, null);
-			if (fv != null) {
-				fv.visitEnd();
-			}
-
-			cv.visitEnd();
-		}
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/asm/ClassRenamer.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-package stx.libjava.tests.asm;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import org.objectweb.asm.ClassAdapter;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodAdapter;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ClassRenamer extends ClassAdapter implements Opcodes {
-
-	// The old name of the class
-	private String oldName;
-	// The new name of the class
-	private String newName;
-
-	/****************************************************************************
-	 * A ClassRenamer is composed of a ClassVisitor and the different names
-	 * 
-	 * @param cv
-	 *            : a ClassVisitor which will visit the whole class.
-	 * @param oldNames
-	 *            : the old name
-	 * @param newName
-	 *            : the new one
-	 */
-	public ClassRenamer(ClassVisitor cv, String oldName, String newName) {
-		super(cv);
-		this.oldName = oldName;
-		this.newName = newName;
-	}
-
-	/****************************************************************************
-	 * the visit method which scans the class header.
-	 * <dl>
-	 * <dt>version</dt>
-	 * <dd>??? the version of the method?</dd>
-	 * <dt>access</dt>
-	 * <dd>public, private of protected. The constant ACC_PUBLIC is 1 when
-	 * ACC_PRIVATE is 2</dd>
-	 * <dt>name</dt>
-	 * <dd>the name of the class, so here is our first replacement</dd>
-	 * </dl>
-	 */
-	public void visit(int version, int access, String name, String signature,
-			String superName, String[] interfaces) {
-		cv.visit(version, ACC_PUBLIC, newName, signature, superName, interfaces);
-	}
-
-	/****************************************************************************
-	 * This method does the same work as the one before but, this time, in all
-	 * methods. <br />
-	 * I don't know the meaning of the if test yet.
-	 * <ul>
-	 * <li> <tt> desc </tt> - the method's descriptor, (public Class<?>
-	 * methodName(args[]))</li>
-	 * </ul>
-	 */
-	public MethodVisitor visitMethod(int access, String name, String desc,
-			String signature, String[] exceptions) {
-
-		MethodVisitor mv = cv.visitMethod(access, name, fix(desc),
-				fix(signature), exceptions);
-		// MethodVisitor mv = cv.visitMethod(access, name, (desc), (signature),
-		// exceptions);
-		// (access & ACC_ABSTRACT) is looking for whether the class is an
-		// abstract class or not.
-		// ACC_ABSTRACT = 1024 is the level of an abstract class.
-		if (mv != null && (access != ACC_ABSTRACT)) {
-			mv = (MethodVisitor)(new MethodRenamer(mv, oldName, newName));
-		}
-		return mv;
-
-	}
-
-	/****************************************************************************
-	 * The fix method which change all the occurences of <tt>oldName<tt> with 
-	 * <tt>newName</tt>. As the called method is <tt>String.replaceAll</tt> no
-	 * ones can assure that it works perfectly for sure. But the fail rate
-	 * should be less that 0.0001%...
-	 */
-	private String fix(String s) {
-
-		if (s != null) {
-			if (s.contains(oldName)) {
-				s = s.replaceAll(oldName, newName);
-			}
-		}
-
-		return s;
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/asm/HelloWorldGenerator.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-package stx.libjava.tests.asm;
-
-import org.objectweb.asm.*;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class HelloWorldGenerator implements Opcodes {
-	
-	public static byte[] generate() throws Exception {
-
-		ClassWriter cw = new ClassWriter(0);
-		FieldVisitor fv;
-		MethodVisitor mv;
-
-		cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER, "HelloWorld", null,
-				"java/lang/Object", null);
-
-		{
-			fv = cw.visitField(ACC_PRIVATE, "name", "Ljava/lang/String;", null,
-					null);
-			fv.visitEnd();
-		}
-		{
-			mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;)V",
-					null, null);
-			mv.visitCode();
-			mv.visitVarInsn(ALOAD, 0);
-			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
-					"()V");
-			mv.visitVarInsn(ALOAD, 0);
-			mv.visitVarInsn(ALOAD, 1);
-			mv.visitFieldInsn(PUTFIELD, "HelloWorld", "name",
-					"Ljava/lang/String;");
-			mv.visitInsn(RETURN);
-			mv.visitMaxs(2, 2);
-			mv.visitEnd();
-		}
-		{
-			mv = cw.visitMethod(ACC_PUBLIC, "sayHello", "()V", null, null);
-			mv.visitCode();
-			mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out",
-					"Ljava/io/PrintStream;");
-			mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
-			mv.visitInsn(DUP);
-			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder",
-					"<init>", "()V");
-			mv.visitLdcInsn("Hello World from ");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
-			mv.visitVarInsn(ALOAD, 0);
-			mv.visitFieldInsn(GETFIELD, "HelloWorld", "name",
-					"Ljava/lang/String;");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"toString", "()Ljava/lang/String;");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println",
-					"(Ljava/lang/String;)V");
-			mv.visitInsn(RETURN);
-			mv.visitMaxs(3, 1);
-			mv.visitEnd();
-		}
-		{
-			mv = cw.visitMethod(ACC_PUBLIC, "getHello", "()Ljava/lang/String;",
-					null, null);
-			mv.visitCode();
-			mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
-			mv.visitInsn(DUP);
-			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder",
-					"<init>", "()V");
-			mv.visitLdcInsn("Hello World from ");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
-			mv.visitVarInsn(ALOAD, 0);
-			mv.visitFieldInsn(GETFIELD, "HelloWorld", "name",
-					"Ljava/lang/String;");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
-			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder",
-					"toString", "()Ljava/lang/String;");
-			mv.visitInsn(ARETURN);
-			mv.visitMaxs(2, 1);
-			mv.visitEnd();
-		}
-		cw.visitEnd();
-
-		return cw.toByteArray();
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/asm/MethodRenamer.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-package stx.libjava.tests.asm;
-
-import org.objectweb.asm.MethodAdapter;
-import org.objectweb.asm.MethodVisitor;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MethodRenamer extends MethodAdapter {
-	  
-	/****************************************************************************
-	 * we only modify a name so two String attributes are enough
-	 */
-	private String oldName;
-	private String newName;
-	
-	/****************************************************************************
-	 * nothing to say...a super() constructor
-	 * @param mv
-	 */
-	public MethodRenamer(MethodVisitor mv,String oldName, String newName){
-		super(mv);
-		this.oldName = oldName;
-		this.newName = newName;
-	}
-		
-	
-	
-	/****************************************************************************
-	 * Visits a type instruction. 
-	 * A type instruction is an instruction that takes a type descriptor as parameter.
-	 * 
-	 * @param opcode - the opcode of the type instruction to be visited. 
-	 * This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF. 
-	 * 
-	 * @param desc - the operand of the instruction to be visited. 
-	 * This operand is must be a fully qualified class name in internal form, 
-	 * or the type descriptor of an array type (see Type).
-	 */
-	public void visitTypeInsn (int opcode, String desc) {
-		if (oldName.equals(desc)) {
-			desc = newName;
-		}
-		mv.visitTypeInsn(opcode, desc);
-	}
-	
-	
-	
-	/****************************************************************************
-	 * Visits a field instruction. 
-	 * A field instruction is an instruction that loads or stores the value of a field of an object.
-	 * 
-	 * @param opcode - the opcode of the type instruction to be visited. 
-	 * This opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD. 
-	 * @param owner - the internal name of the field's owner class (see getInternalName).
-	 * @param name - the field's name.
-	 * @param desc - the field's descriptor (see Type).
-	 */	
-	public void visitFieldInsn (int opcode, String owner, String name, String desc) {
-		if (oldName.equals(owner)) {
-			mv.visitFieldInsn(opcode, newName, name, fix(desc));
-		} else {
-			mv.visitFieldInsn(opcode, owner, name, fix(desc));
-		}
-	}
-		
-	
-	
-	/****************************************************************************
-	 * Visits a method instruction. 
-	 * A method instruction is an instruction that invokes a method.
-	 * @param opcode - the opcode of the type instruction to be visited. 
-	 * This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
-	 * @param owner - the internal name of the method's owner class (see getInternalName).
-	 * @param name - the method's name.
-	 * @param desc - the method's descriptor (see Type).
-	 */
-	public void visitMethodInsn (int opcode, String owner, String name, String desc) {
-		if (oldName.equals(owner)) {
-			mv.visitMethodInsn(opcode, newName, name, fix(desc));
-		} else {
-			mv.visitMethodInsn(opcode, owner, name, fix(desc));
-		}
-	 }
-	
-	/****************************************************************************
-	   * The fix method which change all the occurences of <tt>oldName<tt> with 
-	   * <tt>newName</tt>. As the called method is <tt>String.replaceAll</tt>
-	   * no ones can assure that it works perfectly for sure. But the fail rate 
-	   * should be less that 0.0001%...
-	   */
-	  private String fix (String s) {
-		  
-		if (s != null) {
-			if (s.contains(oldName)){
-				s = s.replaceAll(oldName, newName);
-			}
-		}
-		
-		return s;
-	  }
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/AnnotationTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-package stx.libjava.tests.lang;
-
-import org.junit.Test;
-import stx.libjava.tests.mocks.EnumValueAnnotation;
-import stx.libjava.tests.mocks.HeavilyAnnotatedClass;
-import stx.libjava.tests.mocks.Weather;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.URLClassLoader;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement; // get some nice annotations
-import javax.xml.bind.annotation.XmlElements;// get some nice annotations
-
-import static org.junit.Assert.assertTrue;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class AnnotationTests {
-
-    @Test
-    public void testClassAnnotations() {
-        Annotation[] annotations = HeavilyAnnotatedClass.class.getAnnotations();
-        for (Annotation a : annotations) {
-            System.out.println(a.annotationType());
-        }
-        assertTrue(annotations.length == 5);
-    }
-
-    @Test
-    public void testFieldAnnotations() throws Exception {
-        Field field = new HeavilyAnnotatedClass().getClass().getDeclaredField("heavilyAnnotatedField");
-        Annotation[] annotations = field.getAnnotations();
-        for (Annotation a : annotations) {
-            System.out.println(a.annotationType());
-        }
-        assertTrue(annotations.length == 4);
-    }
-
-    @Test
-    public void testMethodAnnotations() throws Exception {
-        Method method = new HeavilyAnnotatedClass().getClass().getDeclaredMethod("heavilyAnnotatedMethod", String.class);
-        Annotation[] annotations = method.getAnnotations();
-        for (Annotation a : annotations) {
-            System.out.println(a.annotationType());
-        }
-        assertTrue(annotations.length == 4);
-    }
-
-    @Test
-    public void testConstructorAnnotations() throws Exception {
-        Constructor ctor = new HeavilyAnnotatedClass().getClass().getDeclaredConstructor(String.class);
-        Method method = ctor.getClass().getDeclaredMethod("getRawParameterAnnotations");
-        method.setAccessible(true);
-        byte[] rawParamAnnotations = (byte[]) method.invoke(ctor);
-        assertTrue(rawParamAnnotations.length == 14);
-    }
-
-    @Test
-    public void testConstructorParamAnnotations() throws Exception {
-        Constructor ctor = new HeavilyAnnotatedClass().getClass().getDeclaredConstructor(String.class);
-        Annotation[][] parameterAnnotations = ctor.getParameterAnnotations();
-        Class[] parameterTypes = ctor.getParameterTypes();
-
-        int i = 0;
-        for (Annotation[] annotations : parameterAnnotations) {
-            Class parameterType = parameterTypes[i++];
-            for (Annotation annotation : annotations) {
-                assertTrue(annotation instanceof EnumValueAnnotation);
-                EnumValueAnnotation myAnnotation = (EnumValueAnnotation) annotation;
-                assertTrue(myAnnotation.value().equals(Weather.SUNNY));
-            }
-        }
-    }
-
-    @Test
-    public void testMethodParamAnnotations() throws Exception {
-        Method method = new HeavilyAnnotatedClass().getClass().getDeclaredMethod("heavilyAnnotatedMethod", String.class);
-        Annotation[][] parameterAnnotations = method.getParameterAnnotations();
-        Class[] parameterTypes = method.getParameterTypes();
-
-        int i = 0;
-        for (Annotation[] annotations : parameterAnnotations) {
-            Class parameterType = parameterTypes[i++];
-
-            for (Annotation annotation : annotations) {
-                assertTrue(annotation instanceof EnumValueAnnotation);
-                EnumValueAnnotation myAnnotation = (EnumValueAnnotation) annotation;
-                assertTrue(myAnnotation.value().equals(Weather.SUNNY));
-            }
-        }
-    }
-
-    @Test
-    public void testNestedAnnotations() {
-    	/* Load the class from different directory - because if classreader
-    	 * broken, then the test suite will fail to load, which should be avoided
-    	 */
-    	try {
-    		ClassLoader cl = new URLClassLoader(ClassLoaderTests.getTestClassesDirectory());
-    		Class classWithNestedAnnotations = cl.loadClass("ClassWithNestedAnnotations");
-    		assertTrue(true); // at least, it reads
-    	} catch (Exception e) {
-    		e.printStackTrace();
-    		assertTrue("Got exception: " + e.getMessage(), false);
-    	}
-
-
-
-    }
-
-
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ArrayTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ArrayTests {
-
-    @Test
-    public void test_01() {        
-        String[] sa = new String[3];
-        Object[] oa = (Object[])sa;
-        boolean gotASE = false;
-        try {
-            oa[0] = new Integer(1);                
-        } catch (ArrayStoreException ase) {
-            gotASE = true;
-        } catch (Throwable t) {
-            t.printStackTrace();
-            
-        }
-        assertTrue(gotASE);
-    }
-    
-    // ArrayIndexOutOfBoundsException - under
-    @Test
-    public void test_02a() {        
-        String[] sa = new String[3];        
-        boolean gotAIOB = false;
-        try {
-            sa[-1] = "XXX";                 
-        } catch (ArrayIndexOutOfBoundsException aiob) {
-            gotAIOB = true;
-        } catch (Throwable t) {
-            t.printStackTrace();
-            
-        }
-        assertTrue(gotAIOB);
-    }
-
-    // ArrayIndexOutOfBoundsException - over
-    @Test
-    public void test_02b() {        
-        String[] sa = new String[3];        
-        boolean gotAIOB = false;
-        try {
-            sa[3] = "XXX";                 
-        } catch (ArrayIndexOutOfBoundsException aiob) {
-            gotAIOB = true;
-        } catch (Throwable t) {
-            t.printStackTrace();
-            
-        }
-        assertTrue(gotAIOB);
-    }
-    
- // ArrayIndexOutOfBoundsException - over
-    @Test
-    public void test_02c() {        
-        String[] sa = new String[3];        
-        boolean gotAIOB = false;
-        try {
-            sa[0] = "XXX";                 
-            sa[1] = "XXX";
-            sa[2] = "XXX";
-        } catch (ArrayStoreException ase) {
-            gotAIOB = true;
-        } catch (Throwable t) {
-            t.printStackTrace();
-            
-        }
-        assertFalse(gotAIOB);
-    }
-
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ClassLoaderTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-package stx.libjava.tests.lang;
-
-import org.junit.Test;
-import stx.libjava.tests.mocks.EyeOpeningClassLoader;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import static org.junit.Assert.*;
-
-@SuppressWarnings("rawtypes")
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ClassLoaderTests {
-
-    @Test
-    public void testBootstrapClassLoader() throws Exception {
-        Class clazz = Class.forName("java.lang.Object");
-        assertTrue(clazz.getClassLoader() == null);
-        System.out.println(System.getProperty("sun.boot.class.path"));
-        System.out.println(System.getProperty("java.ext.dirs"));
-    }
-
-    @Test
-    public void testSystemClassLoader() throws Exception {
-        ClassLoader cl = ClassLoader.getSystemClassLoader();
-        Class clazz = cl.loadClass("org.junit.Test");
-        assertNotNull(clazz);
-        
-        /* 
-         * On STX:LIBJAVA, junit4 & groovy are in ext dirs so they're loaded
-         * by "ext" classloader, unlike on real JVM where those classes are
-         * loaded by standard system class loader. Thus this conditional
-         * assert
-         */
-        /* Not any longer - caused problems because Groovy than
-         * could not load classes loadable by system classloader.
-         */
-        //if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
-        //	// STX:LIBJAVA
-        //	assertEquals(cl.getParent(), clazz.getClassLoader());
-        //} else {
-        	// Any other VM
-        	assertEquals(cl, clazz.getClassLoader());
-        //}  
-    }
-
-    @Test
-    public void testSystemClassLoader2() throws Exception {
-        Class clazz = Class.forName("org.hamcrest.Factory");
-        assertTrue(clazz.getClassLoader().equals(ClassLoader.getSystemClassLoader()));
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromRT() throws Exception {
-        Class clazz = Class.forName("javax.sql.DataSource");
-        assertTrue(clazz.getClassLoader() == null);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromRT2() throws Exception {
-        Class clazz = Class.forName("org.xml.sax.Parser");
-        assertTrue(clazz.getClassLoader() == null);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease() throws Exception {
-        Class clazz = Class.forName("sun.io.CharToByteDoubleByte");
-        assertTrue(clazz.getClassLoader() == null);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsNOTEverythingFromJavaRelease2() throws Exception {
-        Class clazz = Class.forName("sun.net.spi.nameservice.dns.DNSNameService");
-        ClassLoader expected = ClassLoader.getSystemClassLoader();
-        ClassLoader real = clazz.getClassLoader();
-        assertEquals(expected.getParent(), real);
-        //WEIRD..
-        assertNotSame(expected, real);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease3() throws Exception {
-        Class clazz = Class.forName("javax.net.SocketFactory");
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease4() throws Exception {
-        Class clazz = Class.forName("com.sun.net.ssl.TrustManager");
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease5() throws Exception {
-        Class clazz = Class.forName("javax.crypto.Cipher");
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease6() throws Exception {
-        Class clazz = Class.forName("sun.security.internal.spec.TlsKeyMaterialParameterSpec");
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-    @Test
-    public void testBootstrapCLLoadsEverythingFromJavaRelease7() throws Exception {
-        Class clazz = Class.forName("java.lang.Thread");
-        assertTrue(clazz.getClassLoader() == null);
-    }
-
-    @Test
-    public void testSystemClassLoaderClassLoader() throws Exception {
-        Class clazz = ClassLoader.getSystemClassLoader().getClass();
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-    @Test
-    public void testSystemClassLoaderParentClassLoader() throws Exception {
-        Class clazz = ClassLoader.getSystemClassLoader().getParent().getClass();
-        ClassLoader real = clazz.getClassLoader();
-        assertNull(real);
-    }
-
-
-    @Test
-    public void testWeirdDNSClassLoader() throws Exception {
-        Class clazz = Class.forName("sun.net.spi.nameservice.dns.DNSNameService");
-        ClassLoader real = clazz.getClassLoader().getParent();
-        assertNull(real);
-    }
-
-
-    @Test
-    public void testSystemClassLoaderLoadingRTClass() throws Exception {
-        ClassLoader cl = ClassLoader.getSystemClassLoader();
-        Class clazz = cl.loadClass("java.util.ArrayList");
-        assertNotNull(clazz);
-        assertNull(clazz.getClassLoader());
-    }
-
-    @Test
-    public void testNiceClassLoaderDelegation() throws Exception {
-        URL[] urls = new URL[1];
-        File file = new File("foos");
-        urls[0] = file.toURL();
-        URLClassLoader cl = new URLClassLoader(urls);
-        Class result = Class.forName("org.junit.Test", true, cl);
-        
-        /* 
-         * On STX:LIBJAVA, junit4 & groovy are in ext dirs so they're loaded
-         * by "ext" classloader, unlike on real JVM where those classes are
-         * loaded by standard system class loader. Thus this conditional
-         * assert
-         */
-        /* Not any longer - caused problems because Groovy than
-         * could not load classes loadable by system classloader.
-         */
-        //if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
-        //	// STX:LIBJAVA
-        //	assertEquals(result.getClassLoader(), ClassLoader.getSystemClassLoader().getParent());
-        //} else {
-        //	// Any other VM
-        	assertEquals(result.getClassLoader(), ClassLoader.getSystemClassLoader());
-        //}
-    }
-
-    @Test
-    public void testNiceClassLoaderSelfLoading() throws Exception {
-        URLClassLoader cl = new URLClassLoader(getTestClassesDirectory());
-        Class result = Class.forName("Foo", true, cl);
-        assertEquals(cl, result.getClassLoader());
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadObject() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadObject();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadRuntimeException()
-            throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadRuntimeException();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadMethod() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadMethod();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadString() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadString();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadDatasource() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadDatasource();
-            // no exception should be raised
-        } catch (NullPointerException e) {
-            // it will fail on internals, but we only care about security
-            // exception
-        }
-        assertTrue(true);
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadBits() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadBits();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testEyeOpeningClassLoaderLoadArray() throws Exception {
-        try {
-            EyeOpeningClassLoader cl = new EyeOpeningClassLoader();
-            cl.tryToLoadArray();
-            assertTrue(false);
-        } catch (SecurityException e) {
-            assertTrue(true);
-        }
-    }
-
-    @Test
-    public void testParentOfSystemClassLoader() {
-        ClassLoader parent = ClassLoader.getSystemClassLoader().getParent();
-//		system->sun.misc.Launcher$AppClassLoader@16f0472
-//		parent->sun.misc.Launcher$ExtClassLoader@18d107f
-        assertNull(parent.getParent());
-    }
-
-    @Test
-    public void testNiceClassLoaderSelfLoading2() throws Exception {
-        URLClassLoader cl = new URLClassLoader(getTestClassesDirectory());
-        Class result = Class.forName("Foo", true, cl);
-        assertEquals(cl, result.getClassLoader());
-        assertEquals(cl, result.getSuperclass().getClassLoader());
-        assertNull(result.getDeclaredField("baz").getClass().getClassLoader());
-    }
-
-    @Test
-    public void testNiceClassLoaderSelfLoadingWithPreCaching() throws Exception {
-        URL[] urls = getTestClassesDirectory();
-        URLClassLoader cl = new URLClassLoader(urls);
-        Class result = Class.forName("Foo", true, cl);
-        assertNull(result.getDeclaredField("baz").getClass().getClassLoader());
-    }
-
-    @Test
-    public void testTwoSameClassesInDifferentCLsAreDifferent() throws Exception {
-        URL[] urls = getTestClassesDirectory();
-        URLClassLoader cl1 = new URLClassLoader(urls);
-        URLClassLoader cl2 = new URLClassLoader(urls);
-        Class result1 = Class.forName("Foo", true, cl1);
-        Class result2 = Class.forName("Foo", true, cl2);
-        assertNotSame(result1, result2);
-    }
-
-    public static URL[] getTestClassesDirectory() throws Exception {
-        String[] paths = {"classloader-tests-classes/bin",
-                System.getProperty("libjava.tests.dir") + "/libjava/classloader-tests-classes/bin"};
-        URL[] result = new URL[paths.length];
-        for (int i = 0; i < paths.length; i++) {
-            result[i] = new File(paths[i]).toURL();
-        }
-        return result;
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ConstructorTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ConstructorTests {
-	
-	public static class A {
-		public int f;
-			
-		public A(int i, int j) {
-			f = i + j;
-		}
-		
-		public A(int i) {
-			this(i, 10);
-		}
-		
-		public A() {
-			this(10);
-		}
-		
-		public A(Integer i) {
-			this(i.intValue());
-		}
-	}
-	
-	public static class B extends A {
-		public B(int i, int j) {
-			f = i - j;
-		}
-		
-		public B(int i) {
-			super(i);
-		}
-		
-		public B() {
-			this(10);
-		}		
-	}
-	
-	public static class C extends B {
-		public C(Integer i) {
-			super(new Integer(i.intValue() + 1000));
-		}
-	}
-	
-	
-	public static class X {
-		public int f = -1;
-		public X() {
-			f = 1;
-		}
-	}
-	
-	public static class Y extends X {
-	}
-	
-	public static class Z extends Y {
-		public Z() {
-			super();
-		}
-	}
-	
-	public static class W extends X {
-	}
-
-	@Test
-	public void test_01() {
-		B b = new B();
-		assertEquals(20, b.f);
-	}
-
-	@Test
-	public void test_02() {
-		B b = new B(10, 10);
-		assertEquals(0, b.f);
-	}
-
-	@Test
-	public void test_03() {
-		C c = new C(new Integer(10));
-		assertEquals(1020, c.f);
-	}
-	
-	@Test
-	public void test_04() {
-		Z z = new Z();
-		assertEquals(1, z.f);
-		
-		Y y = new Y();
-		assertEquals(1, y.f);
-		
-		W w = new W();
-		assertEquals(1, w.f);
-
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ExceptionTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-package  stx.libjava.tests.lang;
-
-import  java.lang.IllegalArgumentException;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ExceptionTests {
-
-    public int token = 0;
-
-    public void throw_me(boolean flag) {
-	if (flag)
-	    throw new IllegalArgumentException();
-    }
-
-    public void call(boolean flag) {
-	this.call(new ThrowCaller(), flag);
-    }
-
-    public void test_03(boolean do_throw) {
-	try {
-	    token = 1;
-	    if (do_throw)
-		throw new IllegalArgumentException();
-	    token = 2;
-	} finally {
-	    token = 3;
-	}
-    }
-
-    public void test_04(ThrowCaller thrower, boolean do_throw) {
-	try {
-	    token = 1;
-	    thrower.call(this, do_throw);
-	    token = 2;
-	} finally {
-	    token = 3;
-	}
-    }
-
-    public void call(ThrowCaller caller, boolean flag) {
-	caller.call(this, flag);
-    }
-
-    class ThrowCaller {
-	public void call(ExceptionTests inst, boolean flag) {
-	    inst.throw_me(flag);
-	}
-    };
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/FloatAndDoubleTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class FloatAndDoubleTests {
-
-	@Test
-	public void test() {
-		double f1 = Double.MAX_VALUE;		
-		String s = Double.toString(f1);
-		double f2 = Double.valueOf(s);
-		assertTrue(f1 == f2);
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/MemberVisibilityTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import stx.libjava.tests.mocks.a.A;
-import stx.libjava.tests.mocks.b.B;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MemberVisibilityTests {
-
-	// Package private methods are not yet correctly supported by stx:libjava
-	@Test @Ignore
-	public void testPackagePrivateNormal() {
-		String result;
-		result = A.callMethod1(new A());
-		assertEquals(result , "A.method1()");
-		
-		result = A.callMethod1(new B());
-		assertEquals(result , "A.method1()"); //!!!!!!!!		
-	}
-	
-	// Package private methods are not yet correctly supported by stx:libjava	
-	@Test @Ignore
-	public void testPackagePrivateReflection() {
-		String result;
-		result = A.callMethod1ViaReflection(new A());
-		assertEquals(result , "A.method1()");
-		
-		result = A.callMethod1ViaReflection(new B());
-		assertEquals(result , "A.method1()");				
-	}
-
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/MonitorTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-package stx.libjava.tests.lang;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MonitorTests {
-    /** An arbitrary token. Methods may assign
-     *  a value which may be asserted then
-     */
-    int token = 0;
-
-    public void syncAndAbort(Object obj) {
-	    synchronized (obj) {
-		    abort();
-	    }
-    }
-
-    @Test
-    public void test01() {
-    	/* Do not run this test on real JVM as there is no native
-    	 * abort()
-    	 */
-    	if (System.getProperty("java.vm.name").equals("Smalltalk/X")) { 
-    		Object obj = new Object();	    
-    		syncAndAbort(obj);
-    		syncAndAbort(obj);
-    	}
-    }
-
-    public native void abort();
-
-
-    /** Not a test standalone, called by
-     *  JavaMonitorTests>>test_releasing_01
-     */
-    public void test_releasing_01 () {
-		try {
-			token = 1;
-			test_releasing_01_finally();
-			token += 10;
-		} catch (Exception e) {
-			token += 100;
-		}
-
-		try {
-			test_releasing_01_no_exception();
-			token += 1000000;
-		} catch (Exception e) {
-			token += 10000000;
-		}
-    }
-
-    public synchronized void test_releasing_01_finally_with_no_exception() {
-		try {
-			test_releasing_01_no_exception();
-		} finally {
-			token += 10000;
-		}
-    }
-
-    public void test_releasing_01_finally() {
-		try {
-			test_releasing_01_throw_indirect();
-		} finally {
-			token += 1000;
-		}
-    }
-
-    public synchronized void test_releasing_01_throw_indirect() {
-		test_releasing_01_throw();
-    }
-
-	public synchronized void test_releasing_01_no_exception() {
-		token += 100000;
-	}
-
-    public void test_releasing_01_throw() {
-		throw new RuntimeException("thrown in JavaMinitorTests#test_releasing_01_throw()");
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/MoreThan16ArgumentsTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MoreThan16ArgumentsTests {
-
-	private int sumArgs(int a1, int a2, int a3, int a4, int a5, int a6, int a7,
-			int a8, int a9, int a10, int a11, int a12, int a13, int a14,
-			int a15, int a16, int a17, int a18, int a19, int a20) {
-		int result = a1 + a2 + a3+ a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20;
-		return result;
-	}
-	
-	private int[] arrayOfArgs (int a1, int a2, int a3, int a4, int a5, int a6, int a7,
-			int a8, int a9, int a10, int a11, int a12, int a13, int a14,
-			int a15, int a16, int a17, int a18, int a19, int a20) {
-		int [] result = new int[20];
-		result[0]=a1;
-		result[1]=a2;
-		result[2]=a3;
-		result[3]=a4;
-		result[4]=a5;
-		result[5]=a6;
-		result[6]=a7;
-		result[7]=a8;
-		result[8]=a9;
-		result[9]=a10;
-		result[10]=a11;
-		result[11]=a12;
-		result[12]=a13;
-		result[13]=a14;
-		result[14]=a15;
-		result[15]=a16;
-		result[16]=a17;
-		result[17]=a18;
-		result[18]=a19;
-		result[19]=a20;
-		
-		return result;
-	}
-	
-	private int[] varargs(int ... args) {
-		int[] result = new int[args.length];
-		for (int i = 0; i < args.length; i++) {
-			result[i] = args[i];
-		}
-		return result;
-	}
-
-	@Test
-	public void testSumArgs() {
-		int actual = sumArgs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
-		int expected = (1+20)*10;
-		assertEquals(expected, actual);
-	}
-	
-	@Test
-	public void testPositions() {
-		int [] result = arrayOfArgs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);		
-		assertEquals(result[0], 1);
-		assertEquals(result[1], 2);
-		assertEquals(result[2], 3);
-		assertEquals(result[3], 4);
-		assertEquals(result[4], 5);
-		assertEquals(result[5], 6);
-		assertEquals(result[6], 7);
-		assertEquals(result[7], 8);
-		assertEquals(result[8], 9);
-		assertEquals(result[9], 10);
-		assertEquals(result[10], 11);
-		assertEquals(result[11], 12);
-		assertEquals(result[12], 13);
-		assertEquals(result[13], 14);
-		assertEquals(result[14], 15);
-		assertEquals(result[15], 16);
-		assertEquals(result[16], 17);
-		assertEquals(result[17], 18);
-		assertEquals(result[18], 19);
-		assertEquals(result[19], 20);		
-	}
-	
-	@Test
-	public void testVarargs() {
-		int[] actual = varargs(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
-		for (int i = 0; i < 20; i++ ) {
-			assertEquals(actual[i], i+1);
-		}
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ReflectionTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.*;
-
-import java.lang.reflect.Method;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ReflectionTests {
-
-    public Byte byte2Byte(byte b) {
-        return new Byte(b);
-    }
-
-    @Test
-    public void test_byte2Byte() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("byte2Byte", byte.class);
-            assertEquals(m.invoke(this, new Byte((byte) 10)), new Byte(
-                    (byte) 10));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Short short2Short(short b) {
-        return new Short(b);
-    }
-
-    @Test
-    public void test_short2Short() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("short2Short", short.class);
-            assertEquals(m.invoke(this, new Short((short) 10)), new Short(
-                    (short) 10));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Integer int2Integer(int i) {
-        return new Integer(i);
-    }
-
-    @Test
-    public void test_int2Integer() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("int2Integer", int.class);
-            assertEquals(m.invoke(this, new Integer(10)), new Integer(10));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Long long2Long(long i) {
-        return new Long(i);
-    }
-
-    @Test
-    public void test_int2Long() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("long2Long", long.class);
-            assertEquals(m.invoke(this, new Long(10)), new Long(10));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Float float2Float(float i) {
-        return new Float(i);
-    }
-
-    @Test
-    public void test_float2Float() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("float2Float", float.class);
-            assertEquals(m.invoke(this, new Float(10.1)), new Float(10.1));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Double double2double(double i) {
-        return new Double(i);
-    }
-
-    @Test
-    public void test_double2double() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("double2double", double.class);
-            assertEquals(m.invoke(this, new Double(10.1)), new Double(10.1));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Boolean boolean2Boolean(boolean i) {
-        return new Boolean(i);
-    }
-
-    @Test
-    public void test_boolean2Boolean() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("boolean2Boolean", boolean.class);
-            assertEquals(m.invoke(this, new Boolean(true)), new Boolean(true));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-
-    public Character char2Character(char i) {
-        return new Character(i);
-    }
-
-    @Test
-    public void test_char2Character() {
-        try {
-            Method m;
-            m = this.getClass().getMethod("char2Character", char.class);
-            assertEquals(m.invoke(this, new Character('a')), new Character('a'));
-        } catch (Exception t) {
-            t.printStackTrace(System.err);
-            assertTrue("Exception", false);
-        }
-    }
-    
-    @Test 
-    public void test_getCompomentClass_01() {
-        byte[]    ba = new byte[1];
-        short[]   sa = new short[1];
-        int[]     ia = new int[1];
-        long[]    la = new long[1];
-        float[]   fa = new float[1];
-        double[]  da = new double[1];
-        boolean[] ta = new boolean[1];
-        char[]    ca = new char[1];
-        Object[]  oa = new Object[1];
-        
-        assertEquals(ba.getClass().getComponentType(), Byte.TYPE);
-        assertEquals(sa.getClass().getComponentType(), Short.TYPE);
-        assertEquals(ia.getClass().getComponentType(), Integer.TYPE);
-        assertEquals(la.getClass().getComponentType(), Long.TYPE);
-        assertEquals(fa.getClass().getComponentType(), Float.TYPE);
-        assertEquals(da.getClass().getComponentType(), Double.TYPE);
-        assertEquals(ta.getClass().getComponentType(), Boolean.TYPE);
-        assertEquals(ca.getClass().getComponentType(), Character.TYPE);
-        assertEquals(oa.getClass().getComponentType(), Object.class);
-    }
-    
-    @Test 
-    public void test_getCompomentClass_02() {
-        byte[][]    ba = new byte[1][1];
-        short[][]   sa = new short[1][1];
-        int[][]     ia = new int[1][1];
-        long[][]    la = new long[1][1];
-        float[][]   fa = new float[1][1];
-        double[][]  da = new double[1][1];
-        boolean[][] ta = new boolean[1][1];
-        char[][]    ca = new char[1][1];
-        Object[][]  oa = new Object[1][1];
-        
-        assertEquals(ba[0].getClass().getComponentType(), Byte.TYPE);
-        assertEquals(sa[0].getClass().getComponentType(), Short.TYPE);
-        assertEquals(ia[0].getClass().getComponentType(), Integer.TYPE);
-        assertEquals(la[0].getClass().getComponentType(), Long.TYPE);
-        assertEquals(fa[0].getClass().getComponentType(), Float.TYPE);
-        assertEquals(da[0].getClass().getComponentType(), Double.TYPE);
-        assertEquals(ta[0].getClass().getComponentType(), Boolean.TYPE);
-        assertEquals(ca[0].getClass().getComponentType(), Character.TYPE);
-        assertEquals(oa[0].getClass().getComponentType(), Object.class);
-    }
-    
-    public static class NestedClassL1 {
-        protected Object o1;
-        
-        public static class NestedClassL2 {
-            
-        }
-        
-        public NestedClassL1() {
-            o1 = new Object() { public int hashCode() { return 10; } }; 
-        }
-        
-        public Object getO1() {
-            return o1;
-        }
-        
-        public Object getO2() {
-            return new Object() { public int hashCode() { return 20; } };
-        }
-        
-        
-    }
-    
-    @Test
-    public void test_getEnclosingClass_01() {
-        assertEquals(this.getClass(), NestedClassL1.class.getEnclosingClass() );
-        assertEquals(NestedClassL1.class, NestedClassL1.NestedClassL2.class.getEnclosingClass() );
-    }
-    
-    @Test
-    public void test_getEnclosingClass_02() {
-        Object o = new Object() { public int hashCode() { return 10; } };         
-        assertEquals(this.getClass(), o.getClass().getEnclosingClass() );        
-    }
-    
-    @Test 
-    public void test_getEnclosingMethod_01() {
-        Object o1 = (new NestedClassL1()).getO1();
-        Object o2 = (new NestedClassL1()).getO2();
-        
-        assertEquals(null, o1.getClass().getEnclosingMethod());
-        try {
-            assertEquals(NestedClassL1.class.getDeclaredMethod("getO2", new Class[0]), o2.getClass().getEnclosingMethod());
-        } catch (SecurityException e) {
-            fail();            
-        } catch (NoSuchMethodException e) {
-            fail();
-        }
-    }
-    
-    @Test 
-    public void test_getEnclosingConstructor_01() {
-        Object o1 = (new NestedClassL1()).getO1();
-        Object o2 = (new NestedClassL1()).getO2();
-                
-        try {
-            assertEquals(NestedClassL1.class.getDeclaredConstructor(new Class[0]), o1.getClass().getEnclosingConstructor());
-        } catch (SecurityException e) {
-            fail();            
-        } catch (NoSuchMethodException e) {
-            fail();
-        }
-        assertEquals(null, o2.getClass().getEnclosingConstructor());
-    }
-    
-    @Test
-    public void test_isAnonymous() {
-        Object o1 = (new NestedClassL1()).getO1();
-        Object o2 = (new NestedClassL1()).getO2();
-
-        assertTrue(o1.getClass().isAnonymousClass());
-        assertTrue(o2.getClass().isAnonymousClass());
-        assertFalse(this.getClass().isAnonymousClass());
-        assertFalse(NestedClassL1.class.isAnonymousClass());
-    }
-    
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/StaticVsInstanceResolvingAndLookupTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.Test;
-
-import stx.libjava.tests.mocks.instance_static.InheritInstanceStuff;
-import stx.libjava.tests.mocks.instance_static.InheritInstanceStuffWithStatic;
-import stx.libjava.tests.mocks.instance_static.MissingInstanceStuff;
-import stx.libjava.tests.mocks.instance_static.MissingInstanceStuffWithInterface;
-import stx.libjava.tests.mocks.instance_static.StaticInSuperVsInstInSuperSuper;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class StaticVsInstanceResolvingAndLookupTests {
-	//when no instance method or field is available
-	//but static is, it takes static
-	@Test
-	public void testMissingInstanceThingy() {
-		MissingInstanceStuff s = new MissingInstanceStuff();
-		assertTrue(s.staticField == 0);
-		assertTrue(s.staticMethod() == 0);
-		
-	}
-	
-	//when no instance method or field is available
-	//but static in super super and interface in super is, it takes super
-	@Test
-	public void testSuperVsIfaceFight() {
-		MissingInstanceStuffWithInterface s = new MissingInstanceStuffWithInterface();
-		assertTrue(s.staticField == 0);
-	}
-	
-	//when no instance method or field is available
-	//but there is one in super, it will take it #nosurprise :)
-	@Test
-	public void testBasicInstanceSuper() {
-		InheritInstanceStuff f = new InheritInstanceStuff();
-		assertTrue(f.instField == 0);
-		assertTrue(f.instMethod() == 0);
-	}
-	
-	//when no instance method or field is available
-	//but there is static one in super, and inst in super super
-	//it takes inst in super super
-	@Test
-	public void testStaticInSuperVsInstInSuperSuperFight() {
-		StaticInSuperVsInstInSuperSuper f = new StaticInSuperVsInstInSuperSuper();
-		assertTrue(f.instField == 1);	
-	}
-	
-	
-	
-	
-	
-	//when no instance method or field is available
-	//but static and interface is, it takes static
-	//will not compile :)
-//	@Test()
-//	public void testStaticVsInterfaceFight() {
-//		try {
-//		MissingInstanceStuffWithInterface s = new MissingInstanceStuffWithInterface();
-//		assertTrue(s.staticField == 0);
-//		fail(); 
-//		}
-//		catch (Throwable e) {
-//			assertTrue(true);
-//		}
-//	}
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ThreadJoinTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-package stx.libjava.tests.lang;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ThreadJoinTests {
-
-	@Test
-	public void testJoiningThreads() {
-		NewThread ob1 = new NewThread("One");
-		NewThread ob2 = new NewThread("Two");
-		NewThread ob3 = new NewThread("Three");
-		assertTrue(ob1.t.isAlive());
-		assertTrue(ob2.t.isAlive());
-		assertTrue(ob3.t.isAlive());
-		try {			
-			ob1.t.join();
-			ob2.t.join();
-			ob3.t.join();
-		} catch (InterruptedException e) {
-			System.out.println("Main thread Interrupted");
-		}
-		assertFalse(ob1.t.isAlive());
-		assertFalse(ob2.t.isAlive());
-		assertFalse(ob3.t.isAlive());		
-	}
-
-}
-
-class NewThread implements Runnable {
-	String name; // name of thread
-	Thread t;
-
-	NewThread(String threadname) {
-		name = threadname;
-		t = new Thread(this, name);		
-		t.start(); // Start the thread
-	}
-
-	public void run() {
-		try {
-			for (int i = 5; i > 0; i--) {
-				Thread.sleep(1000);
-			}
-		} catch (InterruptedException e) {
-			System.out.println(name + " interrupted.");
-		}
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ThreadOrderingTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-package stx.libjava.tests.lang;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ThreadOrderingTests extends Thread {
-
-	private String flag;
-	private final static String manager = "Manager was last to set the flag";
-	private final static String thread = "Thread was last to set the flag";
-
-	public void run() {
-		synchronized (this) {
-			setTheFlag(thread);
-		}
-	}
-
-	private synchronized void setTheFlag(String code) {
-		flag = code;
-	}
-
-	@Test
-	public void testOrdering() {
-		try {
-		ThreadOrderingTests t = new ThreadOrderingTests();
-		t.start();
-		setTheFlag(manager);
-		t.join();
-		assertTrue(manager.equals(flag));
-		} catch (InterruptedException ignored) {}
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/lang/ThreadStopTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-package stx.libjava.tests.lang;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ThreadStopTests {
-    
-    protected void giveUp() {
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ie) {
-            // Lovely, really. Very Javaish.  
-        }
-    }
-    
-    @Test
-    public void test_kill_02() {
-        Worker worker = new Worker();
-        Thread workerT = new Thread(worker);
-        
-        workerT.start();
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ie) {
-            // Do nothing. I love this Java idiom! 
-        }
-        workerT.interrupt();
-        workerT.stop();
-        giveUp();
-                
-        assertTrue(worker.started);
-        assertTrue(worker.killed);
-        assertFalse(worker.aborted);
-        assertFalse(worker.finished);
-    }
-
-    @Test
-    public void test_kill_01() {
-        Worker worker = new Worker();
-        Thread workerT = new Thread(worker);
-        
-        workerT.start();
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ie) {
-            // Do nothing. I love this Java idiom! 
-        }
-        workerT.stop();
-        giveUp();
-                
-        assertTrue(worker.started);
-        assertTrue(worker.killed);
-        assertFalse(worker.aborted);
-        assertFalse(worker.finished);
-    }
-    
-    @Test
-    public void test_abort_02() {
-        Worker worker = new Worker();
-        Thread workerT = new Thread(worker);
-        
-        workerT.start();
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ie) {
-            // Do nothing. I love this Java idiom! 
-        }
-        workerT.interrupt();
-        workerT.stop(new AbortSignal());
-        giveUp();
-                
-        assertTrue(worker.started);
-        assertFalse(worker.killed);
-        assertTrue(worker.aborted);
-        assertFalse(worker.finished);
-    }
-
-    @Test
-    public void test_abort_01() {
-        Worker worker = new Worker();
-        Thread workerT = new Thread(worker);
-        
-        workerT.start();
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException ie) {
-            // Do nothing. I love this Java idiom! 
-        }
-        workerT.stop(new AbortSignal());
-        giveUp();
-                
-        assertTrue(worker.started);
-        assertFalse(worker.killed);
-        assertTrue(worker.aborted);
-        assertFalse(worker.finished);
-    }
-    
-    
-    class AbortSignal extends Error {
-    }
-    
-    class Worker implements Runnable {
-        public boolean started = false;
-        public boolean killed = false;
-        public boolean aborted = false;
-        public boolean finished = false;
-
-        @Override
-        public void run() {
-            started = true;
-            try {
-                work();
-                finished = true;
-                return;
-            } catch (AbortSignal ae) {
-                aborted = true;
-                return;
-            } catch (ThreadDeath td) {
-                killed = true;
-                throw td;
-            }           
-        }
-        
-        public void work() {
-            // Just to keep thread busy for some time
-            for (int i = 1; i < 3; i++) {
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException ie) {
-                    // Simulate a bad guy
-                    i--;
-                } catch (Exception e) {
-                    // Simulate a really bad guy
-                    i--;
-                }
-            }
-        }
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lib/java/net/InetAddressTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-package stx.libjava.tests.lib.java.net;
-
-import static org.junit.Assert.*;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class InetAddressTests {
-
-    @Test
-    public void test() {
-        try {
-            InetAddress addr = InetAddress.getLocalHost();
-            addr.getAddress();
-        } catch (UnknownHostException e) {
-            // TODO Auto-generated catch block
-            assertTrue(false);
-        }
-        
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/lib/java/util/jar/JarFileTests.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-package stx.libjava.tests.lib.java.util.jar;
-
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.cert.Certificate;
-import java.util.Enumeration;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import org.junit.Test;
-
-/**
- * Regression tests for JarFile 
- * 
- * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
- *
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class JarFileTests {
-    
-    /**
-     * This test tests signed JAR files. As of 2013-09-06, it works
-     * in interpeted mode but fails when JIT is on. 
-     */     
-    @Test    
-    public void signed_jar_01() {
-        String jarfile = System.getProperty("libjava.tests.dir", "..") + "/libjava-mauve/src/gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar";
-        try {
-            JarFile jar = new JarFile(jarfile);
-            for (Enumeration<JarEntry> entries = jar.entries(); entries.hasMoreElements();) {
-                JarEntry entry = entries.nextElement();
-                if (entry.isDirectory()) {
-                    continue;
-                }
-                InputStream stream = null;
-                try {
-                    stream = jar.getInputStream(entry);
-                    byte[] ba = new byte[8192];
-                    int n;
-                    while ((n = stream.read(ba)) >= 0)
-                  /* keep reading */;
-                } finally {
-                    if (stream != null) {
-                        try {
-                            stream.close();
-                        } catch (IOException ignored) {
-                        }
-                    }
-                }
-                Certificate[] certs = entry.getCertificates();
-                if (certs == null || certs.length == 0) // No certificate
-                {
-                    if (!entry.getName().startsWith("META-INF")) {
-                        assertTrue("Entry " + entry.getName() + " in jar file "
-                              + jarfile + " does not have a certificate", false);                        
-                    }
-                }
-            }
-            
-        } catch (IOException e) {            
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ArrayValueAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ArrayValueAnnotation {
-String[] whatILikeInSTX();
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ClassAnnotatedWithInvisibleAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package stx.libjava.tests.mocks;
-
-
-@RuntimeInvisibleAnnotation
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ClassAnnotatedWithInvisibleAnnotation {
-
-	
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ClassValueAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ClassValueAnnotation {
-	Class myFavouriteJavaLangClass();
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ClassWithInnerClasses.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ClassWithInnerClasses {
-
-	class Inner {
-		public String helloWorldFromInner() {
-			return "hello world from inner";
-		}
-	};
-	
-	static class InnerStatic {
-		public String helloWorldFromInnerStatic() {
-			return "hello world from inner static";
-		}
-	};
-	
-	public static InnerStatic getInnerStatic() {
-		return new InnerStatic();
-	}
-	
-	public Inner getInner() {
-		return new Inner();
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/Crate.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Crate {
-
-	private int intVar;
-	private double doubleVar;
-	private long longVar;
-	private String stringVar;
-
-
-
-	public int getIntVar() {
-
-		return intVar;
-	}
-	public void setIntVar(int intVar) {
-		this.intVar = intVar;
-	}
-	public double getDoubleVar() {
-		return doubleVar;
-	}
-	public void setDoubleVar(double doubleVar) {
-		this.doubleVar = doubleVar;
-	}
-	public long getLongVar() {
-		return longVar;
-	}
-	public void setLongVar(long longVar) {
-		this.longVar = longVar;
-	}
-	public String getStringVar() {
-		return stringVar;
-	}
-	public void setStringVar(String stringVar) {
-		this.stringVar = stringVar;
-	}
-
-	public void throwSomeException(int i) throws InterruptedException, IllegalArgumentException {
-	    if (i < 0) {
-		throw new InterruptedException();
-	    } else {
-		throw new IllegalArgumentException();
-	    }
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/EnumValueAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface EnumValueAnnotation {
-	Weather value() default Weather.TORNADO;
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/EyeOpeningClassLoader.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class EyeOpeningClassLoader extends ClassLoader {
-	private static final int BUFFER_SIZE = 8192;
-
-	protected synchronized Class loadClass(String className, boolean resolve)
-			throws ClassNotFoundException {
-		Class cls = findLoadedClass(className);
-		if (cls != null) {
-			return cls;
-		}
-		String clsFile = className.replace('.', '/') + ".class";
-
-		byte[] classBytes = null;
-		try {
-			InputStream in = getResourceAsStream(clsFile);
-			byte[] buffer = new byte[BUFFER_SIZE];
-			ByteArrayOutputStream out = new ByteArrayOutputStream();
-			int n = -1;
-			while ((n = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
-				out.write(buffer, 0, n);
-			}
-			classBytes = out.toByteArray();
-		} catch (IOException e) {
-			throw new ClassNotFoundException("Cannot load class: " + className);
-		}
-
-		if (classBytes == null) {
-			throw new ClassNotFoundException("Cannot load class: " + className);
-		}
-
-		try {
-			cls = defineClass(className, classBytes, 0, classBytes.length);
-			if (resolve) {
-				resolveClass(cls);
-			}
-		} catch (SecurityException e) {
-			// loading core java classes such as java.lang.String
-			// is prohibited, throws java.lang.SecurityException.
-			// delegate to parent if not allowed to load class
-			//throw new ClassNotFoundException("Cannot load class: " + className + " because of security restrictions");
-			throw new ClassNotFoundException("security restriction");
-		}
-
-		return cls;
-	}
-	
-	public void tryToLoadString() {
-		defineClass("java.lang.String", null, 0, 0);
-	}
-	
-	public void tryToLoadObject() {
-		defineClass("java.lang.Object", null, 0, 0);
-	}
-	
-	public void tryToLoadRuntimeException() {
-		defineClass("java.lang.RuntimeException", null, 0, 0);
-	}
-	
-	public void tryToLoadMethod() {
-		defineClass("java.lang.reflect.Method", null, 0, 0);
-	}
-	
-	public void tryToLoadDatasource() {
-		defineClass("javax.sql.DataSource", null, 0, 0);
-	}
-	
-	public void tryToLoadBits() {
-		defineClass("java.io.Bits", null, 0, 0);
-	}
-	
-	public void tryToLoadArray() {
-		defineClass("java.lang.Array", null, 0, 0);
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/HeavilyAnnotatedClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-package stx.libjava.tests.mocks;
-
-
-@EnumValueAnnotation(Weather.SUNNY)
-@ArrayValueAnnotation(whatILikeInSTX = {"SVN", "SVN.. Really :)"})
-@PrimitiveValueAnnotation(ratio = 5.5, size = 5, value = "Hello world")
-@ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.ArrayIndexOutOfBoundsException.class)
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class HeavilyAnnotatedClass {
-
-    @EnumValueAnnotation()
-    @ArrayValueAnnotation(whatILikeInSTX = {})
-    @PrimitiveValueAnnotation(ratio = 0, size = 0, value = "")
-    public HeavilyAnnotatedClass(@EnumValueAnnotation(Weather.SUNNY) String heavilyAnnotatedField) {
-        this.heavilyAnnotatedField = heavilyAnnotatedField;
-    }
-
-    public HeavilyAnnotatedClass() {
-    }
-
-    @EnumValueAnnotation(Weather.CLOUDY)
-    @ArrayValueAnnotation(whatILikeInSTX = "Changeset")
-    @PrimitiveValueAnnotation(ratio = 5.5, size = 5, value = "Hello world")
-    @ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.String.class)
-    public String heavilyAnnotatedField;
-
-
-    @EnumValueAnnotation()
-    @ArrayValueAnnotation(whatILikeInSTX = {})
-    @PrimitiveValueAnnotation(ratio = 0, size = 0, value = "")
-    @ClassValueAnnotation(myFavouriteJavaLangClass = java.lang.instrument.Instrumentation.class)
-    public void heavilyAnnotatedMethod(@EnumValueAnnotation(Weather.SUNNY) String howAboutWeather) {
-        heavilyAnnotatedField = "Annotation madness spreading..";
-        heavilyAnnotatedField += "And that weather.. " + howAboutWeather;
-        System.out.println(heavilyAnnotatedField);
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ImplementorOfNonPublicInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ImplementorOfNonPublicInterface implements NonPublicInterface{
-	@Override
-	public String publicMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String abstractMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String publicAbstractMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String packagePrivateMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/ImplementorOfPublicInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ImplementorOfPublicInterface implements PublicInterface {
-
-	@Override
-	public String publicMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String abstractMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String publicAbstractMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String packagePrivateMethod() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/NonPublicClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-class NonPublicClass {
-	
-	private String privateField;
-	protected String protectedField;
-	public String publicField;
-	
-	private static String privateStaticField;
-	protected static String protectedStaticField;
-	public static String publicStaticField;
-	
-	private static String privateStaticMethod() {
-		return "privateStatic";
-	}
-	
-	protected static String protectedStaticMethod() {
-		return "protectedStatic";
-	}
-	
-	public static String publicStaticMethod() {
-		return "publicStatic";
-	}
-	
-	private String privateMethod() {
-		return "private";
-	}
-	
-	protected String protectedMethod() {
-		return "protected";
-	}
-	
-	public String publicMethod() {
-		return "public";
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/NonPublicInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-package stx.libjava.tests.mocks;
-
-interface NonPublicInterface {
-
-
-		public String publicMethod();
-
-		abstract String abstractMethod();
-		
-		public abstract String publicAbstractMethod();	
-		
-		String packagePrivateMethod();
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/PrimitiveValueAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface PrimitiveValueAnnotation {
-String value();
-int size();
-double ratio();
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/PublicClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-package stx.libjava.tests.mocks;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class PublicClass {
-	
-	private String privateField;
-	protected String protectedField;
-	public String publicField;
-	String packagePrivateField;
-	
-	private static String privateStaticField;
-	protected static String protectedStaticField;
-	public static String publicStaticField;
-	static String packagePrivateStaticField;
-	
-	private static String privateStaticMethod() {
-		return "privateStatic";
-	}
-	
-	protected static String protectedStaticMethod() {
-		return "protectedStatic";
-	}
-	
-	public static String publicStaticMethod() {
-		return "publicStatic";
-	}
-	
-	static String packagePrivateStaticMethod() {
-		return "packagePrivateStatic";
-	}
-	
-	private String privateMethod() {
-		return "private";
-	}
-	
-	protected String protectedMethod() {
-		return "protected";
-	}
-	
-	public String publicMethod() {
-		return "public";
-	}
-	
-	String packagePrivateMethod() {
-		return "packagePrivate";
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/PublicInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package stx.libjava.tests.mocks;
-
-public interface PublicInterface {
-	
-	public String publicMethod();
-
-	abstract String abstractMethod();
-	
-	public abstract String publicAbstractMethod();	
-	
-	String packagePrivateMethod();
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/RuntimeInvisibleAnnotation.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.CLASS)
-public @interface RuntimeInvisibleAnnotation {
-	String value() default "hidden";
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SimpleAbstractClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public abstract class SimpleAbstractClass {
-
-	public final static String name ="SimpleAbstractClass";
-	
-	public String foo() {
-		return "foo";
-	}
-	
-	public abstract String bar();
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SimpleClassWithManyReferences.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.util.Date;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SimpleClassWithManyReferences {
-
-	private Object[] values;
-
-	public SimpleClassWithManyReferences() {
-		values = new Object[10];
-		values[0] = "hello";
-		values[1] = 1;
-		values[2] = 1.1;
-		values[3] = 'a';
-		values[4] = 10l;
-		values[5] = new Integer[5];
-		values[6] = new Short("1");
-		values[7] = new Byte("11");
-		values[8] = new Date[3];
-		values[9] = Boolean.TRUE;
-	}
-
-	public String getString() {
-		return (String) values[0];
-	}
-
-	public int getInt() {
-		return (Integer) values[1];
-	}
-
-	public Double getDouble() {
-		return (Double) values[2];
-	}
-
-	public char getChar() {
-		return (Character) values[3];
-	}
-
-	public long getLong() {
-		return (Long) values[4];
-	}
-
-	public int[] getIntArray() {
-		return (int[]) values[5];
-	}
-
-	public short getShort() {
-		return (Short) values[6];
-	}
-
-	public byte getByte() {
-		return (Byte) values[7];
-	}
-
-	public Date[] getDateArray() {
-		return (Date[]) values[8];
-	}
-
-	public boolean getBoolean() {
-		return (Boolean) values[9];
-	}
-
-	public void setBoolean(int i) {
-		if (i % 2 == 0) {
-			values[9] = Boolean.TRUE;
-		} else {
-			values[9] = false;
-		}
-	}
-	
-	public void setDate(long milis) {
-		((Date[]) values[8])[0] = new Date(milis);
-	}
-	
-	public void setByte(byte b) {
-		values[7] = b;
-	}
-	
-	public void setIntArray(int[] array) {
-		values[5] = array;
-	}
-	
-	public void setDouble(double d) {
-		values[2] = d;
-	}
-
-	public void setShort(short s) {
-		values[6] = s;
-	}
-	
-	public void setChar(char c) {
-		values[3] = c;
-	}
-
-	public void setLong(long l) {
-		 values[4] = l;
-	}
-	public void setString(String s) {
-		values[0] = s;
-	}
-
-	public void setInt(int i) {
-		values[1] = i;
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SimpleInheritingClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SimpleInheritingClass extends SimpleAbstractClass implements SimpleInterface {
-
-	@Override
-	public String bar() {
-		return "bar";
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SimpleInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-package stx.libjava.tests.mocks;
-
-public interface SimpleInterface {
-
-	public String foo();
-	public String bar();
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SimpleMath.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SimpleMath {
-
-	public static int add2To2000Expect2002() {
-		int a = 2;
-		int b = 2000;
-		int result = a + b;
-		return result;
-	}
-	
-	public static int addMinus5ToArg(int arg) {
-		return arg + (-5);
-	}
-	
-	public static int multiply(int a, int b) {
-		return a * b;
-	}
-	
-	public static int power(int base, int exp) {
-		return powerAcc(base, exp, 1);
-	}
-	
-	public static int powerAcc(int base, int exp, int accumulator) {
-		if (exp == 0) {
-			return accumulator;
-		}
-		return powerAcc(base, exp - 1, accumulator * base);
-	}
-	
-	public static int div(int num, int mod) {
-		return num % mod;
-	}
-	
-	public static int negateInt(int num) {
-		return ~num;
-	}
-	
-	public static int bitShiftLeft(int num, int degree) {
-		return num << degree;
-	}
-	
-	public static int bitShiftRight(int num, int degree) {
-		return num >> degree;
-	}
-	
-	public static int division(int nom, int denom) {
-		return nom/denom;
-	}
-	
-	public static int inc2(int num) {
-		num++;
-		++num;
-		return num;
-	}
-	
-	public static int dec2(int num) {
-		num--;
-		--num;
-		return num;
-	}
-	
-	public static int unsignedBitShiftRight(int num, int degree) {
-		return num >>> degree;
-	}
-	
-	public static int and(int first, int second) {
-		return first & second;
-	}
-	
-	public static int or(int first, int second) {
-		return first | second;
-	}
-	
-	public static int xor(int first, int second) {
-		return first ^ second;
-	}
-	
-	public static void justUseConstants() {
-		long l0 = 0l;
-		long l1 = 1l;
-		float f0 = 0;
-		float f1 = 1;
-		float f2 = 2;
-		double d0 = 0;
-		double d1 = 1;
-	}
-	
-	public static int isYourStackCreatedCorrectly() {
-		int a = 0;
-		int b = 1;
-		a = 2;
-		b = 3;
-		a = 4;
-		a = 5;
-		b = 6;
-		a = 7;
-		b = 8;
-		b = 9;
-		return a;
-	}
-	
-	public static double isYourStackCreatedCorrectlyEvenWithDoublesAndLongs() {
-		double a = 0;
-		long b = 1;
-		a = 2;
-		b = 3;
-		a = 4;
-		a = 5;
-		b = 6;
-		a = 7;
-		b = 8;
-		b = 9;
-		return a;
-	}
-	
-	public static int sumArray(int[] array) {
-		int result = 0;
-		for (int i = 0; i < array.length; i++) {
-			result += array[i];
-		}
-		return result;
-	}
-	
-	public static double sumArrayOfDoubles(double[] array) {
-		double result = 0;
-		for (int i = 0; i < array.length; i++) {
-			result += array[i];
-		}
-		return result;
-	}
-	
-	public static long[] giveMeArrayOfLongs() {
-		
-		return new long[100];
-	}
-	
-	public static void main(String[] args) {
-		System.out.println("add2To2000Expect2002 returned: " + add2To2000Expect2002());
-		System.out.println("addMinus5ToArg with 10 returned: " + addMinus5ToArg(10));
-		System.out.println("multiply with 10 and 20 returned: " + multiply(10, 20));
-		System.out.println("power with 2 and 10 returned: " + power(2, 10));
-	}
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SubclassOfNonPublicClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-package stx.libjava.tests.mocks;
-
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SubclassOfNonPublicClass extends NonPublicClass {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SubclassOfPublicClass.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SubclassOfPublicClass extends PublicClass {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/SwitchExamples.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-package stx.libjava.tests.mocks;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SwitchExamples {
-
-	public int switchChar(char c) {
-		switch (c) {
-		case 'a':
-			return 0;
-		case 'b':
-			return 1;
-		case 'c':
-			return 2;
-		default:
-			return 3;
-		}
-	}
-	
-	public int switchInt(int c) {
-		switch (c) {
-		case 0:
-			return 0;
-		case 1000:
-			return 1;
-		case -1000:
-			return -1;
-		default:
-			return 2;
-		}
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/TranslucentObjectTestsHelper.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-package stx.libjava.tests.mocks;
-
-import java.util.ArrayList;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class TranslucentObjectTestsHelper {
-	public ArrayList<Object> createArrayList() {
-		return new ArrayList<Object>();
-	}
-	
-	public boolean isEmpty(String s) {
-		return s.isEmpty();
-	}
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/Weather.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-package stx.libjava.tests.mocks;
-
-public enum Weather {
-	SUNNY, CLOUDY, RAINING, TORNADO
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/a/A.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-package stx.libjava.tests.mocks.a;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class A {
-	String method1() {
-		return "A.method1()";
-	}
-	
-	public static String callMethod1(A obj) {
-		return obj.method1();
-	}
-	
-	public static String callMethod1ViaReflection(A obj) {
-		Method m = null;
-		try {
-			m = A.class.getDeclaredMethod("method1", null);
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
-		try {
-			return (String)m.invoke(obj, null);
-		} catch (IllegalArgumentException e) {
-			throw new RuntimeException(e);
-		} catch (IllegalAccessException e) {
-			throw new RuntimeException(e);
-		} catch (InvocationTargetException e) {
-			throw new RuntimeException(e);
-		}		
-	}
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/b/B.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package stx.libjava.tests.mocks.b;
-
-import stx.libjava.tests.mocks.a.A;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class B extends A {
-    public String method1() {
-        return "B.method1()";
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/ImplementingIfaceWithStatic.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class ImplementingIfaceWithStatic extends SuperWithStatic {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuff.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class InheritInstanceStuff extends SuperWithInstance {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/InheritInstanceStuffWithStatic.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class InheritInstanceStuffWithStatic extends SuperWithInstance{
-
-	public static int instField = 1;
-	//cannot override method with the same name+selector
-	//nobody cares about static :)
-//	public static int instMethod() {
-//		return 1;
-//	}	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/InterfaceWithStatic.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-public interface InterfaceWithStatic {
-
-	public static int staticField = 1;	
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuff.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MissingInstanceStuff extends SuperWithStatic {
-	
-	
-	
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/MissingInstanceStuffWithInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MissingInstanceStuffWithInterface extends ImplementingIfaceWithStatic
-		 {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/StaticInSuperVsInstInSuperSuper.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class StaticInSuperVsInstInSuperSuper extends
-		InheritInstanceStuffWithStatic {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/SuperWithInstance.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SuperWithInstance {
-
-	public int instField = 0;
-	public int instMethod() {
-		return 0;
-	}
-	
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/instance_static/SuperWithStatic.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package stx.libjava.tests.mocks.instance_static;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SuperWithStatic {
-	
-	public static int staticMethod() {
-		return 0;
-	}
-	
-	public static int staticField = 0;
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/Director.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Director extends Person {
-    public void setTag1(int i) {
-        tag1 = new Integer(i + 10);
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/IPerson1.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-public interface IPerson1 extends IPersonSuper {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/IPerson2.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-public interface IPerson2 extends IPersonSuper {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/IPersonSuper.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-public interface IPersonSuper {
-
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/Object.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Object implements TooGeneralInterface
-{
-    public char[][] events = new char[100][];
-    public int      eventsTally = 0;
-
-    public Object()
-    {
-        events[eventsTally++] = "Default Constructor".toCharArray();
-    }
-
-    public Object(String s)
-    {
-        s.compareTo("XX"); // Just to invoke some String method...
-        events[eventsTally++] = "String Constructor".toCharArray();
-    }
-
-    public Object(Integer i)
-    {
-        i.doubleValue(); // Just to invoke some Integer method
-        events[eventsTally++] = "Integer Constructor".toCharArray();
-    }
-    
-    public Object(stx.libjava.tests.mocks.interop.Object o)
-    {
-        events[eventsTally++] = "cz.cvut.fit.swing.methodLookup.Object".toCharArray();
-    }
-
-    public String sayHello()
-    {
-        return "hello";
-    }
-
-    public static String staticSayHello()
-    {
-        return "static hello";
-    }
-
-    public String sayHello(String name)
-    {
-        return "hello " + name;
-    }
-
-    public String sayHello(Integer age)
-    {
-        return "hello in age [Integer] " + age;
-    }
-
-    public String sayHello(int age)
-    {
-        return "hello in age [int] " + age;
-    }
-
-    public String sayHello(String name, Integer age)
-    {
-        return "hello " + name + " in age [Integer]" + age;
-    }
-
-    public String sayHello(String name, int age)
-    {
-        return "hello " + name + " in age [int] " + age;
-    }
-
-    public String sayHello(int i, int age)
-    {
-        return "hello " + i + " in age [int] " + age;
-    }
-
-    public int returnAge(int i)
-    {
-        return i;
-    }
-
-    public int returnPrimTypeInt()
-    {
-        return 2048;
-    }
-
-    // no param foo
-    public int foo()
-    {
-        return 0;
-    }
-
-    public int foo(int i)
-    {
-        return 1;
-    }
-
-    public int foo(Object o, int i)
-    {
-        return 2;
-    }
-    
-    public Boolean getTrue()
-    {
-        return Boolean.TRUE;
-    }
-    public Boolean getFalse()
-    {
-        return Boolean.FALSE;
-    }
-    
-    public boolean getTruePrim()
-    {
-        return true;
-    }
-    
-    public boolean getFalsePrim()
-    {
-        return false;
-    }
-    
-    public Boolean getFalseWithConversion()
-    {
-        return false;
-    }
-
-    public Boolean getTrueWithConversion()
-    {
-        return true;
-    }
-    
-    public Boolean getFalseFromBooleanValueOf()
-    {
-        boolean b = getFalsePrim();
-        return Boolean.valueOf(b);
-    }
-    
-    
-    public int getInt()
-    {
-        return 1;
-    }
-    
-    public Integer getInteger()
-    {
-        return 12345;
-    }
-    
-    public int overloadedMethodInt(int i) 
-    {
-        return 1;
-    }
-    
-    public int overloadedMethodInt(Integer i)
-    {
-        return 2;
-    }
-    
-    public int overloadedMethod(String s) 
-    {
-        return 3;
-    }
-    
-    public int overloadedMethod(Integer i)
-    {
-        return 4;
-    }
-
-    @Override
-    public java.lang.String getMethodReturningObject() {
-        return "working";
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/Person.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class Person implements IPerson1, IPerson2
-{
-    private String name;
-    private Integer age;
-    
-    public java.lang.Object tag1;
-    protected java.lang.Object tag2;
-    protected java.lang.Object tag3;
-    
-    public void setAge(Integer age)
-    {
-        this.age = age;
-    }
-    
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-    
-    public String getName()
-    {
-        return name;
-    }
-    
-    public Integer getAge()
-    {
-        return age;
-    }
-    
-    public void setTag1(java.lang.Object o) {
-        tag1 = o;
-    }
-    
-    public java.lang.Object getTag1() {
-        return tag1;
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/PersonManipulator.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class PersonManipulator
-{
-    public Integer getPersonAge(Person p)
-    {
-        return p.getAge();
-    }
-    
-    public String getPersonName(Person p)
-    {
-        return p.getName();
-    }
-    
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/SetManipulator.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.lang.Object;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class SetManipulator
-{
-    public void addElement(Set<Object> s, Object o)
-    {
-        s.add(o);
-    }
-
-    public Integer getSize(Set<Object> s)
-    {
-        return s.size();
-    }
-
-    public Boolean contains(Set<Object> s, Object o)
-    {
-        return s.contains(o);
-    }
-    
-    public Boolean isEmpty(Set<Object> s)
-    {
-        return s.isEmpty();
-    }
-    
-    public void remove(Set<Object> s, Object o)
-    {
-        s.remove(o);
-    }
-
-    public Integer iterateCountSize(Set<Object> s)
-    {
-        Integer i = 0;
-        for (Iterator<Object> it = s.iterator(); it.hasNext(); )
-        {
-            i++;
-        }
-        return i;
-    }
-    
-    
-    public List<Object> iterate(Set<Object> s)
-    {
-        List<Object> l = new ArrayList<Object>();
-        for (Iterator<Object> it = s.iterator(); it.hasNext(); )
-        {
-            l.add(it.next());
-        }
-        return l;
-    }
-
-    public List<Object> iterateWithSyntaxSugar(Set<Object> s)
-    {
-        List<Object> l = new ArrayList<Object>();
-        for (Object o : s)
-        {
-            l.add(o);
-        }
-        return l;
-    }
-    
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/TheOneAndOnlyBoss.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class TheOneAndOnlyBoss extends Person {
-    public void setTag1(int i) {
-        tag1 = new Integer(i + 1000);
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/mocks/interop/TooGeneralInterface.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-package stx.libjava.tests.mocks.interop;
-
-public interface TooGeneralInterface {
-
-    public java.lang.Object getMethodReturningObject();
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/CHECKCAST_and_INSTANCEOF.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class CHECKCAST_and_INSTANCEOF {
-    
-    public static interface Aable {
-        public void foo();
-    }
-    
-    public static class A implements Aable {
-        public void foo() {}
-    }
-    
-    public Object test_01_get_array_of_A() {
-        return new A[10];
-    }
-
-    /*
-     * Regression, there used to be a bug in VM that
-     * passed element type to the JavaVM>>_CHECKCAST:_: instead
-     * of the array type.
-     */
-    @Test
-    public void test_regression_01_c() {
-        Aable[] a = (Aable[])test_01_get_array_of_A();
-        a[1] = new A();
-    }
-    
-    @Test
-    public void test_regression_01_i() {
-        assertTrue(test_01_get_array_of_A() instanceof Aable[]);        
-    }
-
-
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/DREM.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class DREM {
-    public double one = 1.0d;
-
-    @Test
-    public void test_01() { 
-        // Have to do it this way because compiler folds constant
-        // arithmetic expressions
-        double a = 1.2d * one;
-        double b = 3.4d * one;
-        assertEquals(a % b, 1.2d, 0.001d);
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/FREM.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class FREM {
-    public double one = 1.0f;
-    
-    @Test
-    public void test_01() { 
-        // Have to do it this way because compiler folds constant
-        // arithmetic expressions
-        double a = 1.2f * one;
-        double b = 3.4f * one;
-        assertEquals(a % b, 1.2f, 0.001f);
-    }
-
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/GETFIELD_and_PUTFIELD.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class GETFIELD_and_PUTFIELD {
-
-    @Test
-    public void test_getfield_01a() {
-        Fields f = new Fields();
-        int field1 = Fields.getField1Of(f);        
-        assertEquals(-1, field1);
-    }
-    
-    public void test_getfield_01b() {
-        test_getfield_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_getfield_02() {
-        Fields f = null;
-        try {
-            int field1 = Fields.getField1Of(f);
-            assertTrue(false);            
-        } catch (NullPointerException npe) {
-            // OK, NPE should be thrown
-        }
-    }
-
-    
-    @Test
-    public void test_putfield_01a() {
-        Fields f = new Fields();
-        Fields.setField1Of(f, 100);
-        int field1 = f.getField1();        
-        assertEquals(100, field1);
-    }
-    
-    public void test_putfield_01b() {
-        test_putfield_01a();
-    }
-    
-    @Test
-    public void test_putfield_02() {
-        Fields f = null;
-        try {
-            Fields.setField1Of(f, 1);
-            assertTrue(false);            
-        } catch (NullPointerException npe) {
-            // OK, NPE should be thrown
-        }
-    }
-    
-    
-
-    public static class Fields {
-        public int field1 = -1;
-        
-        public int getField1() {
-            return field1;
-        }
-        
-        public static int getField1Of(Fields f) {
-            return f.field1;
-        }
-        
-        public static void setField1Of(Fields f, int v ) {
-            f.field1 = v;
-        }
-
-    }
-    
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/INVOKEINTERFACEX.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,646 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-import stx.libjava.tests.vm.INVOKEVIRTUALX.Virtual;
-
-/** 
- * Tests for INVOKEVIRTUAL instructions. 
- * 
- * Note: for JIT-compiled code there are two code-paths:
- * (i) method reference is already resolved, then the 
- * method is directly dispatched
- * (ii) method references is not yet resolved and JIT code
- * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
- * 
- * To test both code patch, each test has 2 variants ('a' and
- * 'b') where the latter one executes the first one. This ensures
- * that the first method is executed once with reference unresolved
- * and second time with all references resolved.
- *
- * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class INVOKEINTERFACEX {
-    
-    @Test 
-    public void test_invoke_int_a() {
-        IVirtual v = new Virtual();
-        int r;
-        
-        r = v.virtualInt01(1);
-        assertEquals(1, r);
-        
-        r = v.virtualInt02(1,1);
-        assertEquals(2, r);
-        
-        r = v.virtualInt03(1,1,1);
-        assertEquals(3, r);
-
-        r = v.virtualInt04(1,1,1,1);
-        assertEquals(4, r);
-        
-        r = v.virtualInt05(1,1,1,1,1);
-        assertEquals(5, r);
-        
-        r = v.virtualInt06(1,1,1,1,1,1);
-        assertEquals(6, r);
-        
-        r = v.virtualInt07(1,1,1,1,1,1,1);
-        assertEquals(7, r);
-        
-        r = v.virtualInt08(1,1,1,1,1,1,1,1);
-        assertEquals(8, r);
-        
-        r = v.virtualInt09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9, r);
-        
-        r = v.virtualInt10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10, r);
-        
-        r = v.virtualInt11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11, r);
-        
-        r = v.virtualInt12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12, r);
-        
-        r = v.virtualInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13, r);
-        
-        r = v.virtualInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14, r);
-        
-        r = v.virtualInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15, r);
-        
-        r = v.virtualInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16, r);
-        
-        r = v.virtualInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17, r);                
-    }
-
-    @Test 
-    public void test_invoke_int_b() {
-        test_invoke_int_a();
-    }
-    
-    @Test 
-    public void test_invoke_double_a() {
-        IVirtual v = new Virtual();
-        double r;
-        
-        r = v.virtualDouble01(1);
-        assertEquals(1.0, r, 0.001);
-        
-        r = v.virtualDouble02(1,1);
-        assertEquals(2.0, r, 0.001);
-        
-        r = v.virtualDouble03(1,1,1);
-        assertEquals(3.0, r, 0.001);
-
-        r = v.virtualDouble04(1,1,1,1);
-        assertEquals(4.0, r, 0.001);
-        
-        r = v.virtualDouble05(1,1,1,1,1);
-        assertEquals(5.0, r, 0.001);
-        
-        r = v.virtualDouble06(1,1,1,1,1,1);
-        assertEquals(6.0, r, 0.001);
-        
-        r = v.virtualDouble07(1,1,1,1,1,1,1);
-        assertEquals(7.0, r, 0.001);
-        
-        r = v.virtualDouble08(1,1,1,1,1,1,1,1);
-        assertEquals(8.0, r, 0.001);
-        
-        r = v.virtualDouble09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9.0, r, 0.001);
-        
-        r = v.virtualDouble10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10.0, r, 0.001);
-        
-        r = v.virtualDouble11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11.0, r, 0.001);
-        
-        r = v.virtualDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12.0, r, 0.001);
-        
-        r = v.virtualDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13.0, r, 0.001);
-        
-        r = v.virtualDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14.0, r, 0.001);
-        
-        r = v.virtualDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15.0, r, 0.001);
-        
-        r = v.virtualDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16.0, r, 0.001);
-        
-        r = v.virtualDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17.0, r, 0.001);                
-    }
-
-    @Test 
-    public void test_invoke_double_b() {
-        test_invoke_double_a();
-    }
-    
-    @Test 
-    public void test_invoke_Object_a() {
-        IVirtual v = new Virtual();
-        Object o1 = new Object();
-        Object o2 = new Object();
-        Object[] r;
-        
-        r = v.virtualObject01(o1);
-        assertTrue(o1 == r[0]);
-        
-                
-        r = v.virtualObject02(o1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[1]);
-        
-        r = v.virtualObject03(o1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[2]);
-        
-        r = v.virtualObject04(o1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[3]);
-                
-        r = v.virtualObject05(o1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[4]);
-                
-        r = v.virtualObject06(o1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[5]);
-                
-        r = v.virtualObject07(o1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[6]);
-             
-        r = v.virtualObject08(o1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[7]);
-                
-        r = v.virtualObject09(o1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[8]);
-                
-        r = v.virtualObject10(o1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[9]);
-        
-        r = v.virtualObject11(o1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[10]);
-        
-        r = v.virtualObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[11]);
-        
-        r = v.virtualObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[12]);
-        
-        r = v.virtualObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[13]);
-        
-        r = v.virtualObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[14]);
-        
-        r = v.virtualObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[15]);
-        
-        r = v.virtualObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[16]);
-
-                        
-    }
-
-    @Test 
-    public void test_invoke_Object_b() {
-        test_invoke_Object_a();
-    }
-        
-    // Tests for NULL receives
-    
-    
-    public void invokeVirtualIn01(IVirtual v, int i1) {
-        v.virtualInt01(i1);
-    }
-    
-    @Test    
-    public void test_int_01a_NULL() {
-        try {
-            Virtual v = null;
-            invokeVirtualIn01(v, 1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_int_01b_NULL() {
-        test_int_01a_NULL();
-    }
-    
-
-    public void invokeVirtualDouble05(IVirtual v, double i1, double i2,double i3,double i4,double i5) {
-        v.virtualDouble05(i1, i2, i3, i4, i5);
-    }
-    @Test    
-    public void test_double_05a_NULL() {
-        try {
-            Virtual v = null;
-            invokeVirtualDouble05(v, 1,1,1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_double_05b_NULL() {
-        test_int_01a_NULL();
-    }
-
-    
-    public void invokeVirtualDouble10(IVirtual v, double i1, double i2,double i3,double i4,double i5, double i6, double i7, double i8, double i9, double i10) {
-        v.virtualDouble10(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
-    }    
-    @Test
-    public void test_double_10a_NULL() {
-        try {
-            Virtual v = null; 
-            invokeVirtualDouble10(v, 1,1,1,1,1,1,1,1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_double_10b_NULL() {
-        test_double_10a_NULL();
-    }
-    
-    
-    public void invokeVirtualObject03(IVirtual v, Object i1, Object i2, Object i3) {
-        v.virtualObject03(i1, i2, i3);
-    }    
-    @Test
-    public void test_Object_03a_NULL() {
-        try {
-            Virtual v = null;  
-            invokeVirtualObject03(v, 1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_Objecte_03b_NULL() {
-        test_Object_03a_NULL();
-    }
-    
-    
-    public static interface IVirtual {        
-        public  int virtual00();
-       
-        public  int virtualInt01(int i1);
-        public  int virtualInt02(int i1, int i2);
-            
-        
-        public  int virtualInt03(int i1, int i2, int i3);
-            
-        
-        public  int virtualInt04(int i1, int i2, int i3, int i4);
-            
-        
-        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5);
-            
-        
-        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6);
-            
-        
-        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7);
-            
-        
-        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8);
-            
-        
-        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9);
-            
-        
-        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10);
-            
-        
-        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11);
-            
-        
-        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12);
-            
-        
-        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13);
-            
-        
-        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14);
-            
-        
-        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15);
-            
-         
-        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16);
-            
-        
-        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17);
-            
-        
-
-
-        public  double virtualDouble01(int i1);
-             
-        
-        public  double virtualDouble02(double i1, double i2);
-            
-        
-        public  double virtualDouble03(double i1, double i2, double i3);
-            
-        
-        public  double virtualDouble04(double i1, double i2, double i3, double i4);
-            
-        
-        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5);
-            
-        
-        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6);
-            
-        
-        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7);
-            
-        
-        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8);
-            
-        
-        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9);
-            
-        
-        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10);
-            
-        
-        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11);
-            
-        
-        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12);
-            
-        
-        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13);
-            
-        
-        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14);
-            
-        
-        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15);
-            
-        
-        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16);
-            
-        
-        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17);
-            
-        
-        
-        public  Object[] virtualObject01(Object i1);
-             
-        
-        public  Object[] virtualObject02(Object i1, Object i2);
-            
-        
-        public  Object[] virtualObject03(Object i1, Object i2, Object i3);
-            
-        
-        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4);
-            
-        
-        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5);
-            
-        
-        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6);
-            
-        
-        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7);
-            
-        
-        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8);
-            
-        
-        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9);
-            
-        
-        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10);
-            
-        
-        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11);
-            
-        
-        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12);
-            
-        
-        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13);
-            
-        
-        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14);
-            
-        
-        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15);
-            
-        
-        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16);
-            
-        
-        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17);
-            
-        
-        
-    }
-    
-    
-    
-    public static class Virtual implements IVirtual {
-        public static final int initialized = 12345;
-        
-        public  int virtual00() {
-            return 0;
-        }
-       
-        public  int virtualInt01(int i1) {
-            return i1; 
-        }
-        public  int virtualInt02(int i1, int i2) {
-            return i1 + i2;
-        }
-        public  int virtualInt03(int i1, int i2, int i3) {
-            return i1 + i2 + i3;
-        }
-        public  int virtualInt04(int i1, int i2, int i3, int i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        } 
-        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-
-
-        public  double virtualDouble01(int i1) {
-            return i1; 
-        }
-        public  double virtualDouble02(double i1, double i2) {
-            return i1 + i2;
-        }
-        public  double virtualDouble03(double i1, double i2, double i3) {
-            return i1 + i2 + i3;
-        }
-        public  double virtualDouble04(double i1, double i2, double i3, double i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        }
-        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-        
-        public  Object[] virtualObject01(Object i1) {
-            return new Object[] { i1 }; 
-        }
-        public  Object[] virtualObject02(Object i1, Object i2) {
-            return new Object[] { i1 , i2 };
-        }
-        public  Object[] virtualObject03(Object i1, Object i2, Object i3) {
-            return new Object[] { i1 , i2 , i3 };
-        }
-        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4) {
-            return new Object[] { i1 , i2 , i3 , i4 };
-        }
-        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 };
-        }
-        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
-        }
-        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
-        }
-        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
-        }
-        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
-        }
-        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
-        }
-        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
-        }
-        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
-        }
-        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
-        }
-        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
-        }
-        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
-        }
-        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
-        }
-        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
-        }
-        
-    }
-}
-
-
-
-
--- a/tests/libjava/src/stx/libjava/tests/vm/INVOKESPECIALX.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,406 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/** 
- * Tests for INVOKESPECIAL instructions. 
- * 
- * Note: for JIT-compiled code there are two code-paths:
- * (i) method reference is already resolved, then the 
- * method is directly dispatched
- * (ii) method references is not yet resolved and JIT code
- * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
- * 
- * To test both code patch, each test has 2 variants ('a' and
- * 'b') where the latter one executes the first one. This ensures
- * that the first method is executed once with reference unresolved
- * and second time with all references resolved.
- *
- * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class INVOKESPECIALX {
-    
-    @Test 
-    public void test_invoke_int_a() {   
-        SpecialInt s;
-        int r;
-        
-        s = new SpecialInt(1); r = s.r;;
-        assertEquals(1, r);
-        
-        s = new SpecialInt(1,1); r = s.r;
-        assertEquals(2, r);
-        
-        s = new SpecialInt(1,1,1); r = s.r;
-        assertEquals(3, r);
-
-        s = new SpecialInt(1,1,1,1); r = s.r;
-        assertEquals(4, r);
-        
-        s = new SpecialInt(1,1,1,1,1); r = s.r;
-        assertEquals(5, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1); r = s.r;
-        assertEquals(6, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1); r = s.r;
-        assertEquals(7, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(8, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(9, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(10, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(11, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(12, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(13, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(14, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(15, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(16, r);
-        
-        s = new SpecialInt(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(17, r);                
-    }
-
-    @Test 
-    public void test_invoke_int_b() {
-        test_invoke_int_a();
-    }
-    
-    @Test 
-    public void test_invoke_double_a() {
-        SpecialDouble s;
-        double r;
-        
-        s = new SpecialDouble(1); r = s.r;
-        assertEquals(1.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1); r = s.r;
-        assertEquals(2.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1); r = s.r;
-        assertEquals(3.0, r, 0.001);
-
-        s = new SpecialDouble(1,1,1,1); r = s.r;
-        assertEquals(4.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1); r = s.r;
-        assertEquals(5.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1); r = s.r;
-        assertEquals(6.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1); r = s.r;
-        assertEquals(7.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(8.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(9.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(10.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(11.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(12.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(13.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(14.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(15.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(16.0, r, 0.001);
-        
-        s = new SpecialDouble(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); r = s.r;
-        assertEquals(17.0, r, 0.001);                
-    }
-
-    @Test 
-    public void test_invoke_double_b() {
-        test_invoke_double_a();
-    }
-    
-    @Test 
-    public void test_invoke_Object_a() {
-        SpecialObject s;
-        Object o1 = new Object();
-        Object o2 = new Object();
-        Object[] r;
-        
-        s = new SpecialObject(o1); r = s.r;
-        assertTrue(o1 == r[0]);
-        
-                
-        s = new SpecialObject(o1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[1]);
-        
-        s = new SpecialObject(o1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[2]);
-        
-        s = new SpecialObject(o1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[3]);
-                
-        s = new SpecialObject(o1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[4]);
-                
-        s = new SpecialObject(o1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[5]);
-                
-        s = new SpecialObject(o1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[6]);
-             
-        s = new SpecialObject(o1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[7]);
-                
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[8]);
-                
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[9]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[10]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[11]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[12]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[13]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[14]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[15]);
-        
-        s = new SpecialObject(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2); r = s.r;
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[16]);
-
-                        
-    }
-
-    @Test 
-    public void test_invoke_Object_b() {
-        test_invoke_Object_a();
-    }
-      
-    public static class SpecialInt {
-        public int r = -1;
-        
-        public SpecialInt(int i1) {
-            r = 1; 
-        }
-        public SpecialInt(int i1, int i2) {
-            r = 1 + i2;
-        }
-        public SpecialInt(int i1, int i2, int i3) {
-            r = 1 + i2 + i3;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4) {
-            r = 1 + i2 + i3 + i4;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5) {
-            r = 1 + i2 + i3 + i4 + i5;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6) {
-            r = 1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        } 
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public SpecialInt(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-    }
-
-        
-    public static class SpecialDouble {    
-        public double r = -1;
-
-        public SpecialDouble(double i1) {
-            r = 1; 
-        }
-        public SpecialDouble(double i1, double i2) {
-            r = 1 + i2;
-        }
-        public SpecialDouble(double i1, double i2, double i3) {
-            r = 1 + i2 + i3;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4) {
-            r = 1 + i2 + i3 + i4;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5) {
-            r = 1 + i2 + i3 + i4 + i5;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6) {
-            r = 1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public SpecialDouble(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
-            r = 1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-        
-    }
-    
-    public static class SpecialObject {
-        public Object[] r;
-        
-        public SpecialObject(Object i1) {
-            r = new Object[] { i1 }; 
-        }
-        public SpecialObject(Object i1, Object i2) {
-            r = new Object[] { i1 , i2 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3) {
-            r = new Object[] { i1 , i2 , i3 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4) {
-            r = new Object[] { i1 , i2 , i3 , i4 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
-        }
-        public SpecialObject(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
-            r = new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
-        }        
-    }
-}
-
-
-
-
--- a/tests/libjava/src/stx/libjava/tests/vm/INVOKESTATICX.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/** 
- * Tests for INVOKESTATIC instructions. 
- * 
- * Note: for JIT-compiled code there are two code-paths:
- * (i) method reference is already resolved, then the 
- * method is directly dispatched
- * (ii) method references is not yet resolved and JIT code
- * invokes helper method JavaVM>>_INVOKESTATIC_R: 
- * 
- * To test both code patch, each test has 2 variants ('a' and
- * 'b') where the latter one executes the first one. This ensures
- * that the first method is executed once with reference unresolved
- * and second time with all references resolved. 
- * 
- * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class INVOKESTATICX {        
-
-    @Test 
-    public void test_invoke_int_a() {
-        int r;
-        
-        r = Statics.staticInt01(1);
-        assertEquals(1, r);
-        
-        r = Statics.staticInt02(1,1);
-        assertEquals(2, r);
-        
-        r = Statics.staticInt03(1,1,1);
-        assertEquals(3, r);
-
-        r = Statics.staticInt04(1,1,1,1);
-        assertEquals(4, r);
-        
-        r = Statics.staticInt05(1,1,1,1,1);
-        assertEquals(5, r);
-        
-        r = Statics.staticInt06(1,1,1,1,1,1);
-        assertEquals(6, r);
-        
-        r = Statics.staticInt07(1,1,1,1,1,1,1);
-        assertEquals(7, r);
-        
-        r = Statics.staticInt08(1,1,1,1,1,1,1,1);
-        assertEquals(8, r);
-        
-        r = Statics.staticInt09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9, r);
-        
-        r = Statics.staticInt10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10, r);
-        
-        r = Statics.staticInt11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11, r);
-        
-        r = Statics.staticInt12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12, r);
-        
-        r = Statics.staticInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13, r);
-        
-        r = Statics.staticInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14, r);
-        
-        r = Statics.staticInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15, r);
-        
-        r = Statics.staticInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16, r);
-        
-        r = Statics.staticInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17, r);                
-    }
-
-    @Test 
-    public void test_invoke_int_b() {
-        test_invoke_int_a();
-    }
-    
-    @Test 
-    public void test_invoke_double_a() {
-        double r;
-        
-        r = Statics.staticDouble01(1);
-        assertEquals(1.0, r, 0.001);
-        
-        r = Statics.staticDouble02(1,1);
-        assertEquals(2.0, r, 0.001);
-        
-        r = Statics.staticDouble03(1,1,1);
-        assertEquals(3.0, r, 0.001);
-
-        r = Statics.staticDouble04(1,1,1,1);
-        assertEquals(4.0, r, 0.001);
-        
-        r = Statics.staticDouble05(1,1,1,1,1);
-        assertEquals(5.0, r, 0.001);
-        
-        r = Statics.staticDouble06(1,1,1,1,1,1);
-        assertEquals(6.0, r, 0.001);
-        
-        r = Statics.staticDouble07(1,1,1,1,1,1,1);
-        assertEquals(7.0, r, 0.001);
-        
-        r = Statics.staticDouble08(1,1,1,1,1,1,1,1);
-        assertEquals(8.0, r, 0.001);
-        
-        r = Statics.staticDouble09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9.0, r, 0.001);
-        
-        r = Statics.staticDouble10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10.0, r, 0.001);
-        
-        r = Statics.staticDouble11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11.0, r, 0.001);
-        
-        r = Statics.staticDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12.0, r, 0.001);
-        
-        r = Statics.staticDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13.0, r, 0.001);
-        
-        r = Statics.staticDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14.0, r, 0.001);
-        
-        r = Statics.staticDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15.0, r, 0.001);
-        
-        r = Statics.staticDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16.0, r, 0.001);
-        
-        r = Statics.staticDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17.0, r, 0.001);                
-    }
-
-    @Test 
-    public void test_invoke_double_b() {
-        test_invoke_double_a();
-    }
-    
-    @Test 
-    public void test_invoke_Object_a() {
-        Object o1 = new Object();
-        Object o2 = new Object();
-        Object[] r;
-        
-        r = Statics.staticObject01(o1);
-        assertTrue(o1 == r[0]);
-        
-                
-        r = Statics.staticObject02(o1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[1]);
-        
-        r = Statics.staticObject03(o1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[2]);
-        
-        r = Statics.staticObject04(o1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[3]);
-                
-        r = Statics.staticObject05(o1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[4]);
-                
-        r = Statics.staticObject06(o1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[5]);
-                
-        r = Statics.staticObject07(o1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[6]);
-             
-        r = Statics.staticObject08(o1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[7]);
-                
-        r = Statics.staticObject09(o1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[8]);
-                
-        r = Statics.staticObject10(o1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[9]);
-        
-        r = Statics.staticObject11(o1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[10]);
-        
-        r = Statics.staticObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[11]);
-        
-        r = Statics.staticObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[12]);
-        
-        r = Statics.staticObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[13]);
-        
-        r = Statics.staticObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[14]);
-        
-        r = Statics.staticObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[15]);
-        
-        r = Statics.staticObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[16]);
-
-                        
-    }
-
-    @Test 
-    public void test_invoke_Object_b() {
-        test_invoke_Object_a();
-    }
-    
-
-    public static class Statics {
-        public static final int initialized = 12345;
-        
-        public static int static00() {
-            return 0;
-        }
-       
-        public static int staticInt01(int i1) {
-            return i1; 
-        }
-        public static int staticInt02(int i1, int i2) {
-            return i1 + i2;
-        }
-        public static int staticInt03(int i1, int i2, int i3) {
-            return i1 + i2 + i3;
-        }
-        public static int staticInt04(int i1, int i2, int i3, int i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public static int staticInt05(int i1, int i2, int i3, int i4, int i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public static int staticInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public static int staticInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public static int staticInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public static int staticInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public static int staticInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public static int staticInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public static int staticInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public static int staticInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public static int staticInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public static int staticInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        }
-        public static int staticInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public static int staticInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-
-
-        public static double staticDouble01(int i1) {
-            return i1; 
-        }
-        public static double staticDouble02(double i1, double i2) {
-            return i1 + i2;
-        }
-        public static double staticDouble03(double i1, double i2, double i3) {
-            return i1 + i2 + i3;
-        }
-        public static double staticDouble04(double i1, double i2, double i3, double i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public static double staticDouble05(double i1, double i2, double i3, double i4, double i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public static double staticDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public static double staticDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public static double staticDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public static double staticDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public static double staticDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public static double staticDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public static double staticDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public static double staticDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public static double staticDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public static double staticDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        }
-        public static double staticDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public static double staticDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-        
-        public static Object[] staticObject01(Object o1) {
-            return new Object[] { o1 }; 
-        }
-        public static Object[] staticObject02(Object i1, Object i2) {
-            return new Object[] { i1 , i2 };
-        }
-        public static Object[] staticObject03(Object i1, Object i2, Object i3) {
-            return new Object[] { i1 , i2 , i3 };
-        }
-        public static Object[] staticObject04(Object i1, Object i2, Object i3, Object i4) {
-            return new Object[] { i1 , i2 , i3 , i4 };
-        }
-        public static Object[] staticObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 };
-        }
-        public static Object[] staticObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
-        }
-        public static Object[] staticObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
-        }
-        public static Object[] staticObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
-        }
-        public static Object[] staticObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
-        }
-        public static Object[] staticObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
-        }
-        public static Object[] staticObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
-        }
-        public static Object[] staticObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
-        }
-        public static Object[] staticObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
-        }
-        public static Object[] staticObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
-        }
-        public static Object[] staticObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
-        }
-        public static Object[] staticObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
-        }
-        public static Object[] staticObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
-        }
-        
-    }
-}
-
-
-
-
--- a/tests/libjava/src/stx/libjava/tests/vm/INVOKEVIRTUALX.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,484 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/** 
- * Tests for INVOKEVIRTUAL instructions. 
- * 
- * Note: for JIT-compiled code there are two code-paths:
- * (i) method reference is already resolved, then the 
- * method is directly dispatched
- * (ii) method references is not yet resolved and JIT code
- * invokes helper method JavaVM>>_INVOKEVIRTUAL_R: 
- * 
- * To test both code patch, each test has 2 variants ('a' and
- * 'b') where the latter one executes the first one. This ensures
- * that the first method is executed once with reference unresolved
- * and second time with all references resolved.
- *
- * @author Jan Vrany <jan.vrany [at] fit.cvut.cz>
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class INVOKEVIRTUALX {
-    
-    @Test 
-    public void test_invoke_int_a() {
-        Virtual v = new Virtual();
-        int r;
-        
-        r = v.virtualInt01(1);
-        assertEquals(1, r);
-        
-        r = v.virtualInt02(1,1);
-        assertEquals(2, r);
-        
-        r = v.virtualInt03(1,1,1);
-        assertEquals(3, r);
-
-        r = v.virtualInt04(1,1,1,1);
-        assertEquals(4, r);
-        
-        r = v.virtualInt05(1,1,1,1,1);
-        assertEquals(5, r);
-        
-        r = v.virtualInt06(1,1,1,1,1,1);
-        assertEquals(6, r);
-        
-        r = v.virtualInt07(1,1,1,1,1,1,1);
-        assertEquals(7, r);
-        
-        r = v.virtualInt08(1,1,1,1,1,1,1,1);
-        assertEquals(8, r);
-        
-        r = v.virtualInt09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9, r);
-        
-        r = v.virtualInt10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10, r);
-        
-        r = v.virtualInt11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11, r);
-        
-        r = v.virtualInt12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12, r);
-        
-        r = v.virtualInt13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13, r);
-        
-        r = v.virtualInt14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14, r);
-        
-        r = v.virtualInt15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15, r);
-        
-        r = v.virtualInt16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16, r);
-        
-        r = v.virtualInt17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17, r);                
-    }
-
-    @Test 
-    public void test_invoke_int_b() {
-        test_invoke_int_a();
-    }
-    
-    @Test 
-    public void test_invoke_double_a() {
-        Virtual v = new Virtual();
-        double r;
-        
-        r = v.virtualDouble01(1);
-        assertEquals(1.0, r, 0.001);
-        
-        r = v.virtualDouble02(1,1);
-        assertEquals(2.0, r, 0.001);
-        
-        r = v.virtualDouble03(1,1,1);
-        assertEquals(3.0, r, 0.001);
-
-        r = v.virtualDouble04(1,1,1,1);
-        assertEquals(4.0, r, 0.001);
-        
-        r = v.virtualDouble05(1,1,1,1,1);
-        assertEquals(5.0, r, 0.001);
-        
-        r = v.virtualDouble06(1,1,1,1,1,1);
-        assertEquals(6.0, r, 0.001);
-        
-        r = v.virtualDouble07(1,1,1,1,1,1,1);
-        assertEquals(7.0, r, 0.001);
-        
-        r = v.virtualDouble08(1,1,1,1,1,1,1,1);
-        assertEquals(8.0, r, 0.001);
-        
-        r = v.virtualDouble09(1,1,1,1,1,1,1,1,1);
-        assertEquals(9.0, r, 0.001);
-        
-        r = v.virtualDouble10(1,1,1,1,1,1,1,1,1,1);
-        assertEquals(10.0, r, 0.001);
-        
-        r = v.virtualDouble11(1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(11.0, r, 0.001);
-        
-        r = v.virtualDouble12(1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(12.0, r, 0.001);
-        
-        r = v.virtualDouble13(1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(13.0, r, 0.001);
-        
-        r = v.virtualDouble14(1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(14.0, r, 0.001);
-        
-        r = v.virtualDouble15(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(15.0, r, 0.001);
-        
-        r = v.virtualDouble16(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(16.0, r, 0.001);
-        
-        r = v.virtualDouble17(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
-        assertEquals(17.0, r, 0.001);                
-    }
-
-    @Test 
-    public void test_invoke_double_b() {
-        test_invoke_double_a();
-    }
-    
-    @Test 
-    public void test_invoke_Object_a() {
-        Virtual v = new Virtual();
-        Object o1 = new Object();
-        Object o2 = new Object();        
-        Object[] r;
-        
-        r = v.virtualObject01(o1);
-        assertTrue(o1 == r[0]);
-        
-                
-        r = v.virtualObject02(o1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[1]);
-        
-        r = v.virtualObject03(o1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[2]);
-        
-        r = v.virtualObject04(o1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[3]);
-                
-        r = v.virtualObject05(o1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[4]);
-                
-        r = v.virtualObject06(o1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[5]);
-                
-        r = v.virtualObject07(o1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[6]);
-             
-        r = v.virtualObject08(o1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[7]);
-                
-        r = v.virtualObject09(o1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[8]);
-                
-        r = v.virtualObject10(o1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[9]);
-        
-        r = v.virtualObject11(o1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[10]);
-        
-        r = v.virtualObject12(o1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[11]);
-        
-        r = v.virtualObject13(o1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[12]);
-        
-        r = v.virtualObject14(o1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[13]);
-        
-        r = v.virtualObject15(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[14]);
-        
-        r = v.virtualObject16(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[15]);
-        
-        r = v.virtualObject17(o1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,o2);
-        assertTrue(o1 == r[0]);
-        assertTrue(o2 == r[16]);
-
-                        
-    }
-
-    @Test 
-    public void test_invoke_Object_b() {
-        test_invoke_Object_a();
-    }
-    
-    // Tests for NULL receives
-    
-    
-    public void invokeVirtualIn01(Virtual v, int i1) {
-        v.virtualInt01(i1);
-    }
-    
-    @Test    
-    public void test_int_01a_NULL() {
-        try {
-            Virtual v = null;
-            invokeVirtualIn01(v, 1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_int_01b_NULL() {
-        test_int_01a_NULL();
-    }
-    
-
-    public void invokeVirtualDouble05(Virtual v, double i1, double i2,double i3,double i4,double i5) {
-        v.virtualDouble05(i1, i2, i3, i4, i5);
-    }
-    @Test    
-    public void test_double_05a_NULL() {
-        try {
-            Virtual v = null;
-            invokeVirtualDouble05(v, 1,1,1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_double_05b_NULL() {
-        test_int_01a_NULL();
-    }
-
-    
-    public void invokeVirtualDouble10(Virtual v, double i1, double i2,double i3,double i4,double i5, double i6, double i7, double i8, double i9, double i10) {
-        v.virtualDouble10(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
-    }    
-    @Test
-    public void test_double_10a_NULL() {
-        try {
-            Virtual v = null; 
-            invokeVirtualDouble10(v, 1,1,1,1,1,1,1,1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_double_10b_NULL() {
-        test_double_10a_NULL();
-    }
-    
-    
-    public void invokeVirtualObject03(Virtual v, Object i1, Object i2, Object i3) {
-        v.virtualObject03(i1, i2, i3);
-    }    
-    @Test
-    public void test_Object_03a_NULL() {
-        try {
-            Virtual v = null;  
-            invokeVirtualObject03(v, 1,1,1);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            
-        }        
-    }
-    @Test
-    public void test_Objecte_03b_NULL() {
-        test_Object_03a_NULL();
-    }
-    
-    
-    
-    
-    public static class Virtual {
-        public static final int initialized = 12345;
-        
-        public  int virtual00() {
-            return 0;
-        }
-       
-        public  int virtualInt01(int i1) {
-            return i1; 
-        }
-        public  int virtualInt02(int i1, int i2) {
-            return i1 + i2;
-        }
-        public  int virtualInt03(int i1, int i2, int i3) {
-            return i1 + i2 + i3;
-        }
-        public  int virtualInt04(int i1, int i2, int i3, int i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public  int virtualInt05(int i1, int i2, int i3, int i4, int i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public  int virtualInt06(int i1, int i2, int i3, int i4, int i5, int i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public  int virtualInt07(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public  int virtualInt08(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public  int virtualInt09(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public  int virtualInt10(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public  int virtualInt11(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public  int virtualInt12(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public  int virtualInt13(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public  int virtualInt14(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public  int virtualInt15(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        } 
-        public  int virtualInt16(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public  int virtualInt17(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11, int i12, int i13, int i14, int i15, int i16, int i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-
-
-        public  double virtualDouble01(int i1) {
-            return i1; 
-        }
-        public  double virtualDouble02(double i1, double i2) {
-            return i1 + i2;
-        }
-        public  double virtualDouble03(double i1, double i2, double i3) {
-            return i1 + i2 + i3;
-        }
-        public  double virtualDouble04(double i1, double i2, double i3, double i4) {
-            return i1 + i2 + i3 + i4;
-        }
-        public  double virtualDouble05(double i1, double i2, double i3, double i4, double i5) {
-            return i1 + i2 + i3 + i4 + i5;
-        }
-        public  double virtualDouble06(double i1, double i2, double i3, double i4, double i5, double i6) {
-            return i1 + i2 + i3 + i4 + i5 + i6;
-        }
-        public  double virtualDouble07(double i1, double i2, double i3, double i4, double i5, double i6, double i7) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7;
-        }
-        public  double virtualDouble08(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8;
-        }
-        public  double virtualDouble09(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
-        }
-        public  double virtualDouble10(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10;
-        }
-        public  double virtualDouble11(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11;
-        }
-        public  double virtualDouble12(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12;
-        }
-        public  double virtualDouble13(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13;
-        }
-        public  double virtualDouble14(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14;
-        }
-        public  double virtualDouble15(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15;
-        }
-        public  double virtualDouble16(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16;
-        }
-        public  double virtualDouble17(double i1, double i2, double i3, double i4, double i5, double i6, double i7, double i8, double i9, double i10, double i11, double i12, double i13, double i14, double i15, double i16, double i17) {
-            return i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17;
-        }
-        
-        public  Object[] virtualObject01(Object i1) {
-            return new Object[] { i1 }; 
-        }
-        public  Object[] virtualObject02(Object i1, Object i2) {
-            return new Object[] { i1 , i2 };
-        }
-        public  Object[] virtualObject03(Object i1, Object i2, Object i3) {
-            return new Object[] { i1 , i2 , i3 };
-        }
-        public  Object[] virtualObject04(Object i1, Object i2, Object i3, Object i4) {
-            return new Object[] { i1 , i2 , i3 , i4 };
-        }
-        public  Object[] virtualObject05(Object i1, Object i2, Object i3, Object i4, Object i5) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 };
-        }
-        public  Object[] virtualObject06(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 };
-        }
-        public  Object[] virtualObject07(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 };
-        }
-        public  Object[] virtualObject08(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 };
-        }
-        public  Object[] virtualObject09(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 };
-        }
-        public  Object[] virtualObject10(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 };
-        }
-        public  Object[] virtualObject11(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 };
-        }
-        public  Object[] virtualObject12(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 };
-        }
-        public  Object[] virtualObject13(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 };
-        }
-        public  Object[] virtualObject14(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 };
-        }
-        public  Object[] virtualObject15(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 };
-        }
-        public  Object[] virtualObject16(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 };
-        }
-        public  Object[] virtualObject17(Object i1, Object i2, Object i3, Object i4, Object i5, Object i6, Object i7, Object i8, Object i9, Object i10, Object i11, Object i12, Object i13, Object i14, Object i15, Object i16, Object i17) {
-            return new Object[] { i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , i9 , i10 , i11 , i12 , i13 , i14 , i15 , i16 , i17 };
-        }
-        
-    }
-}
-
-
-
-
--- a/tests/libjava/src/stx/libjava/tests/vm/MULTIANEWARRAY.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,882 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class MULTIANEWARRAY {
-    
-    // ===================== byte =================================
-
-    @Test
-    public void test_byte_01a() {
-        byte[][] array2 = new byte[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        byte[][][] array3 = new byte[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[8].length == 8);
-        assertTrue(array3[8][0].length == 7);
-
-        byte[][][][] array4 = new byte[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[7].length == 8);
-        assertTrue(array4[7][6].length == 7);
-        assertTrue(array4[7][6][5].length == 6);
-
-        byte[][][][][] array5 = new byte[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[7].length == 8);
-        assertTrue(array5[7][6].length == 7);
-        assertTrue(array5[7][6][5].length == 6);
-        assertTrue(array5[7][6][5][4].length == 5);
-
-        byte[][][][][][] array6 = new byte[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[7].length == 8);
-        assertTrue(array6[7][6].length == 7);
-        assertTrue(array6[7][6][0].length == 6);
-        assertTrue(array6[7][6][5][4].length == 5);
-        assertTrue(array6[7][6][5][4][0].length == 4);
-
-        byte[][][][][][][] array7 = new byte[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[7].length == 8);
-        assertTrue(array7[7][6].length == 7);
-        assertTrue(array7[7][6][5].length == 6);
-        assertTrue(array7[7][6][5][4].length == 5);
-        assertTrue(array7[7][6][5][4][3].length == 4);
-        assertTrue(array7[7][6][5][4][3][2].length == 3);
-        
-        byte[][][][][][][][] array8 = new byte[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        byte[][][][][][][][][] array9 = new byte[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_byte_01b() {
-        test_byte_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_byte_02a() {
-        try {
-            byte[][][][][] array5 = new byte[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            byte[][][][][][][][][][] array10 = new byte[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_byte_02b() {
-        test_byte_02a();
-    }
-    
-    // ============= short ===========================
-    @Test
-    public void test_short_01a() {
-        short[][] array2 = new short[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        short[][][] array3 = new short[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        short[][][][] array4 = new short[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        short[][][][][] array5 = new short[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        short[][][][][][] array6 = new short[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        short[][][][][][][] array7 = new short[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        short[][][][][][][][] array8 = new short[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        short[][][][][][][][][] array9 = new short[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_short_01b() {
-        test_short_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_short_02a() {
-        try {
-            short[][][][][] array5 = new short[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            short[][][][][][][][][][] array10 = new short[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_short_02b() {
-        test_short_02a();
-    }
-    
-    // ===================== int ==========================================
-
-    @Test
-    public void test_int_01a() {
-        int[][] array2 = new int[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        int[][][] array3 = new int[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        int[][][][] array4 = new int[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        int[][][][][] array5 = new int[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        int[][][][][][] array6 = new int[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        int[][][][][][][] array7 = new int[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        int[][][][][][][][] array8 = new int[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        int[][][][][][][][][] array9 = new int[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_int_01b() {
-        test_int_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_int_02a() {
-        try {
-            int[][][][][] array5 = new int[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            int[][][][][][][][][][] array10 = new int[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_int_02b() {
-        test_int_02a();
-    }
-
-    // ===================== long =================================
-
-    @Test
-    public void test_long_01a() {
-        long[][] array2 = new long[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        long[][][] array3 = new long[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        long[][][][] array4 = new long[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        long[][][][][] array5 = new long[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        long[][][][][][] array6 = new long[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        long[][][][][][][] array7 = new long[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        long[][][][][][][][] array8 = new long[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        long[][][][][][][][][] array9 = new long[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_long_01b() {
-        test_long_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_long_02a() {
-        try {
-            long[][][][][] array5 = new long[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            long[][][][][][][][][][] array10 = new long[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_long_02b() {
-        test_long_02a();
-    }
-
-    // ===================== float =================================
-
-    @Test
-    public void test_float_01a() {
-        float[][] array2 = new float[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        float[][][] array3 = new float[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        float[][][][] array4 = new float[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        float[][][][][] array5 = new float[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        float[][][][][][] array6 = new float[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        float[][][][][][][] array7 = new float[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        float[][][][][][][][] array8 = new float[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        float[][][][][][][][][] array9 = new float[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_float_01b() {
-        test_float_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_float_02a() {
-        try {
-            float[][][][][] array5 = new float[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            float[][][][][][][][][][] array10 = new float[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_float_02b() {
-        test_float_02a();
-    }
-
-    // ===================== double =================================
-
-    @Test
-    public void test_double_01a() {
-        double[][] array2 = new double[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        double[][][] array3 = new double[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        double[][][][] array4 = new double[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        double[][][][][] array5 = new double[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        double[][][][][][] array6 = new double[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        double[][][][][][][] array7 = new double[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        double[][][][][][][][] array8 = new double[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        double[][][][][][][][][] array9 = new double[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_double_01b() {
-        test_double_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_double_02a() {
-        try {
-            double[][][][][] array5 = new double[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            double[][][][][][][][][][] array10 = new double[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_double_02b() {
-        test_double_02a();
-    }
-
-    // ===================== boolean =================================
-
-    @Test
-    public void test_boolean_01a() {
-        boolean[][] array2 = new boolean[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        boolean[][][] array3 = new boolean[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        boolean[][][][] array4 = new boolean[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        boolean[][][][][] array5 = new boolean[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        boolean[][][][][][] array6 = new boolean[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        boolean[][][][][][][] array7 = new boolean[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        boolean[][][][][][][][] array8 = new boolean[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        boolean[][][][][][][][][] array9 = new boolean[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_boolean_01b() {
-        test_boolean_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_boolean_02a() {
-        try {
-            boolean[][][][][] array5 = new boolean[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            boolean[][][][][][][][][][] array10 = new boolean[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_boolean_02b() {
-        test_boolean_02a();
-    }
-
-    // ===================== char =================================
-
-    @Test
-    public void test_char_01a() {
-        char[][] array2 = new char[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        char[][][] array3 = new char[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        char[][][][] array4 = new char[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        char[][][][][] array5 = new char[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        char[][][][][][] array6 = new char[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        char[][][][][][][] array7 = new char[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        char[][][][][][][][] array8 = new char[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        char[][][][][][][][][] array9 = new char[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[0].length == 8);
-        assertTrue(array9[0][0].length == 7);
-        assertTrue(array9[0][0][0].length == 6);
-        assertTrue(array9[0][0][0][0].length == 5);
-        assertTrue(array9[0][0][0][0][0].length == 4);
-        assertTrue(array9[0][0][0][0][0][0].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][0].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][0].length == 1);        
-    }
-    
-    @Test
-    public void test_char_01b() {
-        test_char_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_char_02a() {
-        try {
-            char[][][][][] array5 = new char[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            char[][][][][][][][][][] array10 = new char[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_char_02b() {
-        test_char_02a();
-    }
-    
-    
-    // ====================== Object =================================
-
-    @Test
-    public void test_01a() {
-        ArrayElement[][] array2 = new ArrayElement[9][8];
-        assertTrue(array2.length == 9);
-        assertTrue(array2[0].length == 8);
-
-        ArrayElement[][][] array3 = new ArrayElement[9][8][7];
-        assertTrue(array3.length == 9);
-        assertTrue(array3[0].length == 8);
-        assertTrue(array3[0][0].length == 7);
-
-        ArrayElement[][][][] array4 = new ArrayElement[9][8][7][6];
-        assertTrue(array4.length == 9);
-        assertTrue(array4[0].length == 8);
-        assertTrue(array4[0][0].length == 7);
-        assertTrue(array4[0][0][0].length == 6);
-
-        ArrayElement[][][][][] array5 = new ArrayElement[9][8][7][6][5];
-        assertTrue(array5.length == 9);
-        assertTrue(array5[0].length == 8);
-        assertTrue(array5[0][0].length == 7);
-        assertTrue(array5[0][0][0].length == 6);
-        assertTrue(array5[0][0][0][0].length == 5);
-
-        ArrayElement[][][][][][] array6 = new ArrayElement[9][8][7][6][5][4];
-        assertTrue(array6.length == 9);
-        assertTrue(array6[0].length == 8);
-        assertTrue(array6[0][0].length == 7);
-        assertTrue(array6[0][0][0].length == 6);
-        assertTrue(array6[0][0][0][0].length == 5);
-        assertTrue(array6[0][0][0][0][0].length == 4);
-
-        ArrayElement[][][][][][][] array7 = new ArrayElement[9][8][7][6][5][4][3];
-        assertTrue(array7.length == 9);
-        assertTrue(array7[0].length == 8);
-        assertTrue(array7[0][0].length == 7);
-        assertTrue(array7[0][0][0].length == 6);
-        assertTrue(array7[0][0][0][0].length == 5);
-        assertTrue(array7[0][0][0][0][0].length == 4);
-        assertTrue(array7[0][0][0][0][0][0].length == 3);
-        
-        ArrayElement[][][][][][][][] array8 = new ArrayElement[9][8][7][6][5][4][3][2];
-        assertTrue(array8.length == 9);
-        assertTrue(array8[0].length == 8);
-        assertTrue(array8[0][0].length == 7);
-        assertTrue(array8[0][0][0].length == 6);
-        assertTrue(array8[0][0][0][0].length == 5);
-        assertTrue(array8[0][0][0][0][0].length == 4);
-        assertTrue(array8[0][0][0][0][0][0].length == 3);
-        assertTrue(array8[0][0][0][0][0][0][0].length == 2);
-               
-        ArrayElement[][][][][][][][][] array9 = new ArrayElement[9][8][7][6][5][4][3][2][1];
-        assertTrue(array9.length == 9);
-        assertTrue(array9[8].length == 8);
-        assertTrue(array9[0][7].length == 7);
-        assertTrue(array9[0][0][6].length == 6);
-        assertTrue(array9[0][0][0][5].length == 5);
-        assertTrue(array9[0][0][0][0][4].length == 4);
-        assertTrue(array9[0][0][0][0][0][3].length == 3);
-        assertTrue(array9[0][0][0][0][0][0][2].length == 2);
-        assertTrue(array9[0][0][0][0][0][0][0][1].length == 1);        
-    }
-    
-    @Test
-    public void test_01b() {
-        test_01a();
-    }
-    
-    @Test
-    @SuppressWarnings({"unused" })
-    public void test_02a() {
-        try {
-            ArrayElement[][][][][] array5 = new ArrayElement[9][8][-1][6][5];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }
-        
-        try {
-            ArrayElement[][][][][][][][][][] array10 = new ArrayElement[9][8][7][6][5][9][8][7][6][-1];
-            assertTrue(false);
-        } catch (NegativeArraySizeException nase) {
-            assertTrue(true);
-        }             
-        
-    }
-    
-    @Test
-    public void test_02b() {
-        test_02a();
-    }
-
-    
-    public static class ArrayElement {
-        public Object value;
-    }
-
-    // ========================== MISC ===========================
-    
-    @Test
-    public void test_incomplete_01() {
-        int grid[][][];
-        grid = new int[10][5][];    
-        
-        assertTrue(grid.length == 10);
-        assertTrue(grid[9].length == 5);
-        assertTrue(grid[5][3] == null);
-    }
-    
-    @Test
-    public void test_incomplete_02() {
-        int grid[][][][][][][][][];
-        grid = new int[3][3][3][3][3][3][3][3][];    
-        
-        assertTrue(grid.length == 3);
-        assertTrue(grid[0].length == 3);
-        assertTrue(grid[0][1][2][2][1][0][1][2] == null);
-    }
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/XAND_and_XOR.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-import sun.misc.DoubleConsts;
-
-
-/*
- * Test for (B/I/L)AND and (B/I/L)LOR 
- */
-
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class XAND_and_XOR {
-
-    @Test
-    public void test_LAND_01() {
-        long l;
-        
-        l =-9223372036854775808L & 0L;
-        assertTrue(l == 0L);
-
-               
-        l =-9223372036854775808L & DoubleConsts.SIGN_BIT_MASK;
-        assertTrue(l != 0L);             
-    }
-    
-    @Test
-    public void test_LOR_01() {
-        long l;
-                       
-        l =-9223372036854775808L | 1L;
-        assertTrue(l == -9223372036854775807L);
-    }
-    
-    @Test
-    public void test_rawCopySign_01() {
-        long magnitude = Double.doubleToRawLongBits(-0.0d);
-        long sign =      Double.doubleToRawLongBits(-1.0d);        
-        long l1, l2, l3, l4;
-        
-        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
-        
-        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
-        
-        l3 = magnitude & l2;
-        
-        l4 = l1 | l3;
-        
-        assertTrue(l1 == -9223372036854775808L);
-        assertTrue(l2 == 9223372036854775807L);
-        assertTrue(l3 == 0L);
-        assertTrue(l4 == -9223372036854775808L);               
-    }
-
-    @Test
-    public void test_rawCopySign_02() {
-        long magnitude = Double.doubleToRawLongBits(-1.0d);
-        long sign =      Double.doubleToRawLongBits(-0.0d);        
-        long l1, l2, l3, l4;
-        
-        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
-        
-        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
-        
-        l3 = magnitude & l2;
-        
-        l4 = l1 | l3;
-        
-        assertTrue(l1 == -9223372036854775808L);
-        assertTrue(l2 == 9223372036854775807L);
-        assertTrue(l3 == 4607182418800017408L);
-        assertTrue(l4 == -4616189618054758400L);               
-    }
-    
-    @Test
-    public void test_rawCopySign_03() {
-        long magnitude = Double.doubleToRawLongBits( 1.0d);
-        long sign =      Double.doubleToRawLongBits(-0.0d);        
-        long l1, l2, l3, l4;
-        
-        l1 = sign & DoubleConsts.SIGN_BIT_MASK; 
-        
-        l2 = DoubleConsts.EXP_BIT_MASK | DoubleConsts.SIGNIF_BIT_MASK;
-        
-        l3 = magnitude & l2;
-        
-        l4 = l1 | l3;
-        
-        assertTrue(l1 == -9223372036854775808L);
-        assertTrue(l2 == 9223372036854775807L);
-        assertTrue(l3 == 4607182418800017408L);
-        assertTrue(l4 == -4616189618054758400L);               
-    }
-    
-
-}
--- a/tests/libjava/src/stx/libjava/tests/vm/XSHX.java	Wed Jan 21 11:28:10 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-package stx.libjava.tests.vm;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/*
- * Test for B/I/L signed/unsigned SHift Left/Right
- */
-@stx.libjava.annotation.Package("stx:libjava/tests")
-public class XSHX {
-
-	private final byte[] cafebabe = { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE };
-	
-	@Test
-	public void testShiftingLong() {
-		byte[] buffer = new byte[8];		
-		long v = readLong(cafebabe);
-		
-		writeLong(v, buffer);
-        
-        for (int i = 0; i < cafebabe.length; i++) {
-        	assertTrue(cafebabe[i] == buffer[i]);
-        }
-	}
-	
-	@Test	
-	public void test_IUSHR_01() {
-	    int ival = 1234567890;
-	    byte[] bval = new byte[4];
-	    
-	    bval[0] = (byte) ((ival >>> 24) & 0xFF);
-	    bval[1] = (byte) ((ival >>> 16) & 0xFF);
-        bval[2] = (byte) ((ival >>> 8) & 0xFF);
-        bval[3] = (byte) (ival & 0xFF);
-        
-        assertEquals(73, bval[0]);
-        assertEquals(-106, bval[1]);
-        assertEquals(2, bval[2]);
-        assertEquals(-46, bval[3]);
-        
-        
-        ival = -1062730440;
-        
-        bval[0] = (byte) ((ival >>> 24) & 0xFF);
-        bval[1] = (byte) ((ival >>> 16) & 0xFF);
-        bval[2] = (byte) ((ival >>> 8) & 0xFF);
-        bval[3] = (byte) (ival & 0xFF);
-        
-        assertEquals(-64, bval[0]);
-        assertEquals(-88, bval[1]);
-        assertEquals(5, bval[2]);
-        assertEquals(56, bval[3]);
-        
-        ival = -1407778526;
-        
-        bval[0] = (byte) ((ival >>> 24) & 0xFF);
-        bval[1] = (byte) ((ival >>> 16) & 0xFF);
-        bval[2] = (byte) ((ival >>> 8) & 0xFF);
-        bval[3] = (byte) (ival & 0xFF);
-        
-       
-        assertEquals(-84, bval[0]);
-        assertEquals(23, bval[1]);
-        assertEquals(1, bval[2]);
-        assertEquals(34, bval[3]);
-	}
-	
-	public final void writeLong(long v, byte[] writeBuffer) {
-		writeBuffer[0] = (byte)(v >>> 56);
-        writeBuffer[1] = (byte)(v >>> 48);
-        writeBuffer[2] = (byte)(v >>> 40);
-        writeBuffer[3] = (byte)(v >>> 32);
-        writeBuffer[4] = (byte)(v >>> 24);
-        writeBuffer[5] = (byte)(v >>> 16);
-        writeBuffer[6] = (byte)(v >>>  8);
-        writeBuffer[7] = (byte)(v >>>  0);
-	}
-	
-	public final long readLong(byte[] readBuffer) {        
-        return (((long)readBuffer[0] << 56) +
-                ((long)(readBuffer[1] & 255) << 48) +
-                ((long)(readBuffer[2] & 255) << 40) +
-                ((long)(readBuffer[3] & 255) << 32) +
-                ((long)(readBuffer[4] & 255) << 24) +
-                ((readBuffer[5] & 255) << 16) +
-                ((readBuffer[6] & 255) <<  8) +
-                ((readBuffer[7] & 255) <<  0));
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/mingwmake.bat	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,16 @@
+@REM -------
+@REM make using mingw gnu compiler
+@REM type mingwmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+@pushd ..\..\rules
+@call find_mingw.bat
+@popd
+make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/stx_libjava_tests.st	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,186 @@
+"{ Package: 'stx:libjava/tests' }"
+
+"{ NameSpace: Smalltalk }"
+
+LibraryDefinition subclass:#stx_libjava_tests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'* Projects & Packages *'
+!
+
+
+!stx_libjava_tests class methodsFor:'accessing - tests'!
+
+excludedFromTestSuite  
+    "List of testcases and/or tests excluded from testsuite.
+     Entries maybe ClassName or #(ClassName testName)
+    "
+    ^ #(
+        LookupTests
+    )
+
+    "Created: / 03-06-2011 / 17:04:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testSuite
+
+    | suite javaTestCases stTests |
+    suite := super testSuite.
+    stTests := suite tests.
+    suite := TestSuite new.
+    suite name: self package.
+    JavaTestsLoader load.
+
+    javaTestCases := OrderedCollection new.
+
+    Java allClassesDo:
+        [:jclass|
+        (jclass binaryName ~~ #'stx/libjava/tests/JUnit3Tests'
+            and:[jclass binaryName ~~  #'stx/libjava/tests/JUnit4Tests'
+                and:[jclass isTestCaseLike]])
+                    ifTrue:
+                        [ | tc |
+                        tc := jclass asTestCase.
+                        tc isAbstract ifFalse:[javaTestCases add:tc ]]].
+
+    javaTestCases do:
+                [:each | 
+                suite addTests:each buildSuite tests ].
+
+
+    suite tests addAll: stTests.
+
+    suite tests withIndexDo:
+        [:t :i|
+        Stdout nextPutAll: i printString; space; nextPutAll: t printString; cr].
+
+    Java dumpConfigOn: Stdout.
+    ^suite
+
+    "
+        stx_libjava testSuite
+
+    "
+
+    "Created: / 07-05-2011 / 19:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-06-2011 / 17:23:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-02-2013 / 10:24:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libjava_tests class methodsFor:'description'!
+
+excludedFromPreRequisites
+    "list packages which are to be explicitely excluded from the automatic constructed
+     prerequisites list. If empty, everything that is found along the inheritance of any of
+     my classes is considered to be a prerequisite package."
+
+    ^ #(
+    )
+!
+
+mandatoryPreRequisites
+    "list packages which are mandatory as a prerequisite.
+     This are packages containing superclasses of my classes and classes which
+     are extended by myself.
+     They are mandatory, because we need these packages as a prerequisite for loading and compiling.
+     This method is generated automatically,
+     by searching along the inheritance chain of all of my classes."
+
+    ^ #(
+        #'stx:libbasic'    "LibraryDefinition - superclass of stx_libjava_tests"
+    )
+!
+
+referencedPreRequisites
+    "list packages which are a prerequisite, because they contain
+     classes which are referenced by my classes.
+     We do not need these packages as a prerequisite for loading or compiling.
+     This method is generated automatically,
+     by searching all classes (and their packages) which are referenced by my classes."
+
+    ^ #(
+        #'stx:goodies/sunit'    "TestSuite - referenced by stx_libjava_tests class>>testSuite"
+        #'stx:libjava'    "Java - referenced by stx_libjava_tests class>>testSuite"
+	#'stx:libjava/tests'
+    )
+!
+
+subProjects
+    "list packages which are known as subprojects.
+     The generated makefile will enter those and make there as well.
+     However: they are not forced to be loaded when a package is loaded;
+     for those, redefine requiredPrerequisites."
+
+    ^ #(
+    )
+! !
+
+!stx_libjava_tests class methodsFor:'description - contents'!
+
+classNamesAndAttributes
+    "lists the classes which are to be included in the project.
+     Each entry in the list may be: a single class-name (symbol),
+     or an array-literal consisting of class name and attributes.
+     Attributes are: #autoload or #<os> where os is one of win32, unix,..."
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        #'stx_libjava_tests'
+    )
+!
+
+extensionMethodNames
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
+
+    ^ #(
+    )
+! !
+
+!stx_libjava_tests class methodsFor:'description - java'!
+
+javaBundle
+
+    ^JavaCodeBundle standardPackageBundleFor: self package
+
+    "Created: / 15-01-2013 / 17:35:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libjava_tests class methodsFor:'description - project information'!
+
+companyName
+    "Returns a company string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'eXept Software AG'
+!
+
+description
+    "Returns a description string which will appear in nt.def / bc.def"
+
+    ^ 'Smalltalk/X Class library'
+!
+
+legalCopyright
+    "Returns a copyright string which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info"
+
+    ^ 'Copyright Claus Gittinger 1988-2015\nCopyright eXept Software AG 1998-2015'
+!
+
+productName
+    "Returns a product name which will appear in <lib>.rc.
+     Under win32, this is placed into the dlls file-info.
+     This method is usually redefined in a concrete application definition"
+
+    ^ 'Smalltalk/X'
+! !
+
+!stx_libjava_tests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/tests.rc	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: stx_libjava_tests.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,5,0
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "eXept Software AG\0"
+      VALUE "FileDescription", "Smalltalk/X Class library (LIB)\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "InternalName", "stx:libjava/tests\0"
+      VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2015\nCopyright eXept Software AG 1998-2015\0"
+      VALUE "ProductName", "Smalltalk/X\0"
+      VALUE "ProductVersion", "6.2.5.0\0"
+      VALUE "ProductDate", "Wed, 21 Jan 2015 12:13:58 GMT\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/vcmake.bat	Wed Jan 21 13:19:06 2015 +0100
@@ -0,0 +1,20 @@
+@REM -------
+@REM make using Microsoft Visual C compiler
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+
+@if not defined VSINSTALLDIR (
+    pushd ..\..\rules
+    call vcsetup.bat
+    popd
+)
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
+
+
--- a/tools/tools.rc	Wed Jan 21 11:28:10 2015 +0100
+++ b/tools/tools.rc	Wed Jan 21 13:19:06 2015 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.5.0\0"
-      VALUE "ProductDate", "Wed, 21 Jan 2015 10:26:54 GMT\0"
+      VALUE "ProductDate", "Wed, 21 Jan 2015 12:14:26 GMT\0"
     END
 
   END