Make mirror classes public builtin-class-support
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 24 May 2013 10:58:19 +0100
branchbuiltin-class-support
changeset 2624 44507f0c37aa
parent 2621 c74b6d1cb175
child 2625 a91a1db9718e
Make mirror classes public This workarounds a bug in stc which does not generate correct code in case there are multiple private classes that use same pool (such as JavaVMData).
JavaAlienMirror.st
JavaArrayMirror.st
JavaClassMirror.st
JavaMirror.st
JavaPrimitiveMirror.st
Make.proto
Make.spec
abbrev.stc
bc.mak
bmake.bat
lccmake.bat
libInit.cc
libjava.rc
mingwmake.bat
stx_libjava.st
vcmake.bat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaAlienMirror.st	Fri May 24 10:58:19 2013 +0100
@@ -0,0 +1,278 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaAlienMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Classes'
+!
+
+!JavaAlienMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+!
+
+documentation
+"
+    Specialized mirror for Smalltalk (and all other 
+    non-Java classes)
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaAlienMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ (JavaVM classForName:'stx.libjava.ClassLoader' definedBy: nil) instVarNamed: #scl.
+
+    "Modified: / 18-05-2013 / 10:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    "Here, return onlu default constructor. Later, all methods annotated
+     with <jsignature: #'<init>(...)V'> wil be returned as well"
+
+    | ctors |
+
+    ctors := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (self isJavaConstructor: mthd selector: sel) ifTrue:[
+            ctors add: (self getDeclaredConstructorFor: mthd).
+        ].
+    ].
+
+    ctors isEmpty ifTrue:[
+        "/If no constructor is found, fake default one...    
+        ctors add: (self getDeclaredConstructorFor: (klass lookupMethodFor: #initialize)).
+    ].
+
+    ^(JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass withAll: ctors
+
+    "Modified: / 18-05-2013 / 10:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    | fields |    
+
+    fields := OrderedCollection new.
+
+    klass instVarNames withIndexDo:[:nm :index|
+        | field |
+
+        field := JavaField new.
+        field 
+            setAccessFlags: JavaConstants ACC_PROTECTED;
+            setClass: klass;
+            setIndex: klass superclass instSize + index;
+            setDescriptor: #'Ljava/lang/Object;';
+            setName: nm.
+
+        fields add: (self createFieldFor: field)
+    ].
+
+    ^ (JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass 
+        withAll:fields
+
+    "Modified: / 18-05-2013 / 10:57:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+
+    | methods |
+
+    methods := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (self isJavaMethod: mthd selector: sel) ifTrue:[
+            methods add: (self getDeclaredMethodFor: mthd).
+        ].
+    ].
+    ^(JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass withAll: methods
+
+    "Modified: / 18-05-2013 / 10:57:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ Array with: (JavaVM classForName: 'java.lang.Cloneable'  definedBy: nil)
+
+    "Modified: / 18-05-2013 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:01:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getName
+    "Returns name of the class"
+    ^'SMALLTALK.' , klass name
+
+    "Created: / 22-08-2012 / 10:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror methodsFor:'accessing-private'!
+
+getDeclaredConstructorFor: method
+    ^ self 
+        createConstructorFor: klass 
+                      method: method 
+                   signature: (self getSignatureForConstructor: method)
+                   modifiers: JavaConstants ACC_PUBLIC 
+              parameterTyoes: #() 
+              exceptionTypes: #() 
+                 annotations: JavaMethodAnnotationContainer new
+
+    "Created: / 22-08-2012 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethodFor:method
+    | signature name java_lang_Object |
+
+    signature := self getSignatureForMethod: method short: false.
+    name := signature upTo: $(.
+    java_lang_Object := JavaVM classNamed: 'java.lang.Object'.
+    ^ self 
+        createMethodFor: klass 
+                      method: method 
+                        name: name
+                   signature: signature
+                   modifiers: JavaConstants ACC_PUBLIC 
+              parameterTyoes: ((1 to: method selector numArgs) collect:[:i|java_lang_Object])
+                  returnType: java_lang_Object
+              exceptionTypes: #() 
+                 annotations: JavaMethodAnnotationContainer new
+
+    "Created: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getSignatureForConstructor: method
+    | signature |
+
+    signature :=
+        (String streamContents:[:s|
+            s nextPutAll: '<init>('.
+            method selector numArgs timesRepeat:[
+                s nextPutAll:'Ljava/lang/Object;'.
+            ].
+            s nextPutAll: ')V'.
+        ]) asSymbol.
+    ^signature
+
+    "Created: / 22-08-2012 / 11:40:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getSignatureForMethod: method short: short
+    | selector signature |
+
+    selector := method selector.
+    signature :=
+        (String streamContents:[:s|
+            short ifTrue:[
+                s nextPutAll: (selector upTo: $:)
+            ] ifFalse:[
+                selector numArgs == 1 ifTrue:[
+                    s nextPutAll: (selector copyTo: selector size - 1)
+                ] ifFalse:[
+                    s nextPutAll: (selector copyReplaceAll: $: with: $_)
+                ]
+            ].
+            s nextPut: $(.
+            method selector numArgs timesRepeat:[
+                s nextPutAll:'Ljava/lang/Object;'.
+            ].
+            s nextPutAll: ')'.
+            s nextPutAll:'Ljava/lang/Object;'.
+        ]) asSymbol.
+    ^signature
+
+    "Created: / 22-08-2012 / 11:46:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror methodsFor:'testing-private'!
+
+isJavaConstructor: mthd selector: sel
+
+    ^sel startsWith: #initialize
+
+    "Created: / 22-08-2012 / 11:47:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isJavaMethod: mthd selector: sel
+
+    ^sel isBinarySelector not 
+        and:[(self isJavaConstructor: mthd selector: sel) not]
+
+    "Created: / 22-08-2012 / 11:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaArrayMirror.st	Fri May 24 10:58:19 2013 +0100
@@ -0,0 +1,117 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaArrayMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Classes'
+!
+
+!JavaArrayMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+! !
+
+!JavaArrayMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ klass javaComponentClass javaMirror getClassLoader
+
+    "Modified: / 31-07-2012 / 18:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    ^ (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    ^(JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+    
+    ^ (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ Array 
+        with: (JavaVM classForName: 'java.lang.Cloneable' definedBy: nil)
+        with: (JavaVM classForName: 'java.io.Serializable' definedBy: nil)
+
+    "Modified: / 18-05-2013 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaArrayMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaClassMirror.st	Fri May 24 10:58:19 2013 +0100
@@ -0,0 +1,212 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaClassMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Classes'
+!
+
+!JavaClassMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+!
+
+documentation
+"
+    A specialized mirror for all Java classes
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaClassMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ klass classLoader
+
+    "Modified: / 31-07-2012 / 18:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    | ctors |
+
+    ctors := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (mthd isJavaConstructor and:[publicOnly not or:[mthd isPublic]]) ifTrue:[
+            ctors add: (self getDeclaredConstructorFor: mthd).
+        ].
+    ].
+    ^(JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass withAll: ctors
+
+    "Modified: / 18-05-2013 / 10:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    | fields |    
+
+    fields := klass fields , klass staticFields.
+    publicOnly ifTrue:[ fields := fields select:[:f | f isPublic ] ].
+    JavaClassReader classLoaderQuerySignal answer: klass classLoader do:[
+        fields := fields collect:[:f | self createFieldFor:f ].
+    ].
+    ^ (JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass 
+        withAll:fields
+
+    "Modified: / 18-05-2013 / 10:57:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    | methods |
+
+    methods := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        mthd isJavaMethod and:[
+            (mthd isJavaConstructor not 
+                and:[mthd isJavaStaticInitializer not
+                and:[publicOnly not or:[mthd isPublic]]]) ifTrue:[
+                methods add: (self getDeclaredMethodFor: mthd).
+            ]
+        ].
+    ].
+    ^(JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass withAll: methods
+
+    "Modified: / 18-05-2013 / 10:57:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getGenericSignature
+    "Returns Java generic signature (if a generic class) or nil"
+
+    ^klass signatureJ
+
+    "Created: / 22-08-2012 / 11:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ klass interfaces
+
+    "Modified: / 22-08-2012 / 11:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    | modifiers |    
+
+    "According to OpenJDK JVM, strip ACC_SUPER"
+    modifiers := (klass accessFlags & JavaConstants ACC_SUPER bitInvert) & 16r7FFF.
+    "JV@2011-10-30: It seems that private inner classes has no
+     private bit set, sigh"
+    (modifiers & 16r0007) == 0 ifTrue:[
+        modifiers := modifiers | JavaConstants ACC_PRIVATE.
+    ].
+    ^modifiers
+
+    "Modified: / 22-08-2012 / 11:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getProtectionDomain
+    ^klass protectionDomain
+
+    "Created: / 22-08-2012 / 12:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaClassMirror methodsFor:'accessing-private'!
+
+getDeclaredConstructorFor: method
+
+    ^self createConstructorFor: method javaClass
+                        method: method
+                     signature: method signature
+                     modifiers: method accessFlags
+                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
+                exceptionTypes: method exceptionClasses
+                   annotations: method method annotations.
+
+    "Created: / 01-08-2012 / 00:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethodFor: method
+
+    ^self      createMethodFor: method javaClass
+                        method: method
+                          name: (method selector upTo: $()
+                     signature: method signature
+                     modifiers: method accessFlags
+                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
+                    returnType: (method descriptor returnClassUsingClassLoader: method javaClass classLoader)
+                exceptionTypes: method exceptionClasses
+                   annotations: method method annotations.
+
+    "Created: / 01-08-2012 / 11:11:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaClassMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/JavaMirror.st	Thu May 23 09:57:12 2013 +0100
+++ b/JavaMirror.st	Fri May 24 10:58:19 2013 +0100
@@ -23,38 +23,10 @@
 Object subclass:#JavaMirror
 	instanceVariableNames:'klass reflection'
 	classVariableNames:''
-	poolDictionaries:'JavaVMData'
+	poolDictionaries:''
 	category:'Languages-Java-Classes'
 !
 
-JavaMirror subclass:#AlienClassMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:'JavaVMData'
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaArrayMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:'JavaVMData'
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaClassMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:'JavaVMData'
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaPrimitiveMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:'JavaVMData'
-	privateIn:JavaMirror
-!
-
 !JavaMirror class methodsFor:'documentation'!
 
 copyright
@@ -117,9 +89,10 @@
 !JavaMirror class methodsFor:'accessing'!
 
 mirrorClassForAlienClass
-    ^ AlienClassMirror
+    ^ JavaAlienMirror
 
     "Created: / 31-07-2012 / 17:36:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-05-2013 / 10:54:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 mirrorClassForJavaArray
@@ -273,7 +246,7 @@
     "
 
     | ctor |
-    ctor := self create: java_lang_reflect_Constructor
+    ctor := self create: (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil)
                     for: class
                  method: method
               signature: signature 
@@ -309,7 +282,7 @@
     type := JavaVM javaClassObjectForClass:
                 ((JavaDescriptor fromString: javaField descriptor)  javaClassUsingClassLoader: javaField javaClass classLoader).
     modifiers := javaField accessFlags.
-    field := java_lang_reflect_Field new.
+    field := (JavaVM classForName: 'java.lang.reflect.Field' definedBy: nil) new.
     field
         instVarNamed: #clazz put: clazz;
         instVarNamed: #name put: name;
@@ -343,7 +316,7 @@
     "
 
     | mthd |
-    mthd := self create: java_lang_reflect_Method
+    mthd := self create: (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil)
                     for: class
                  method: method
               signature: signature 
@@ -363,484 +336,6 @@
     "Modified: / 18-05-2013 / 10:55:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaMirror::AlienClassMirror class methodsFor:'documentation'!
-
-documentation
-"
-    Specialized mirror for Smalltalk (and all other 
-    non-Java classes)
-
-    [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
-
-    [instance variables:]
-
-    [class variables:]
-
-    [see also:]
-
-"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ (JavaVM classForName:'stx.libjava.ClassLoader' definedBy: nil) instVarNamed: #scl.
-
-    "Modified: / 18-05-2013 / 10:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    "Here, return onlu default constructor. Later, all methods annotated
-     with <jsignature: #'<init>(...)V'> wil be returned as well"
-
-    | ctors |
-
-    ctors := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (self isJavaConstructor: mthd selector: sel) ifTrue:[
-            ctors add: (self getDeclaredConstructorFor: mthd).
-        ].
-    ].
-
-    ctors isEmpty ifTrue:[
-        "/If no constructor is found, fake default one...    
-        ctors add: (self getDeclaredConstructorFor: (klass lookupMethodFor: #initialize)).
-    ].
-
-    ^java_lang_reflect_Constructor javaArrayClass withAll: ctors
-
-    "Modified: / 18-05-2013 / 10:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    | fields |    
-
-    fields := OrderedCollection new.
-
-    klass instVarNames withIndexDo:[:nm :index|
-        | field |
-
-        field := JavaField new.
-        field 
-            setAccessFlags: JavaConstants ACC_PROTECTED;
-            setClass: klass;
-            setIndex: klass superclass instSize + index;
-            setDescriptor: #'Ljava/lang/Object;';
-            setName: nm.
-
-        fields add: (self createFieldFor: field)
-    ].
-
-    ^ java_lang_reflect_Field javaArrayClass 
-        withAll:fields
-
-    "Modified: / 18-05-2013 / 10:57:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-
-    | methods |
-
-    methods := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (self isJavaMethod: mthd selector: sel) ifTrue:[
-            methods add: (self getDeclaredMethodFor: mthd).
-        ].
-    ].
-    ^java_lang_reflect_Method javaArrayClass withAll: methods
-
-    "Modified: / 18-05-2013 / 10:57:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ Array with: (JavaVM classForName: 'java.lang.Cloneable'  definedBy: nil)
-
-    "Modified: / 18-05-2013 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:01:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getName
-    "Returns name of the class"
-    ^'SMALLTALK.' , klass name
-
-    "Created: / 22-08-2012 / 10:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'accessing-private'!
-
-getDeclaredConstructorFor: method
-    ^ self 
-        createConstructorFor: klass 
-                      method: method 
-                   signature: (self getSignatureForConstructor: method)
-                   modifiers: JavaConstants ACC_PUBLIC 
-              parameterTyoes: #() 
-              exceptionTypes: #() 
-                 annotations: JavaMethodAnnotationContainer new
-
-    "Created: / 22-08-2012 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethodFor:method
-    | signature name java_lang_Object |
-
-    signature := self getSignatureForMethod: method short: false.
-    name := signature upTo: $(.
-    java_lang_Object := JavaVM classNamed: 'java.lang.Object'.
-    ^ self 
-        createMethodFor: klass 
-                      method: method 
-                        name: name
-                   signature: signature
-                   modifiers: JavaConstants ACC_PUBLIC 
-              parameterTyoes: ((1 to: method selector numArgs) collect:[:i|java_lang_Object])
-                  returnType: java_lang_Object
-              exceptionTypes: #() 
-                 annotations: JavaMethodAnnotationContainer new
-
-    "Created: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getSignatureForConstructor: method
-    | signature |
-
-    signature :=
-        (String streamContents:[:s|
-            s nextPutAll: '<init>('.
-            method selector numArgs timesRepeat:[
-                s nextPutAll:'Ljava/lang/Object;'.
-            ].
-            s nextPutAll: ')V'.
-        ]) asSymbol.
-    ^signature
-
-    "Created: / 22-08-2012 / 11:40:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getSignatureForMethod: method short: short
-    | selector signature |
-
-    selector := method selector.
-    signature :=
-        (String streamContents:[:s|
-            short ifTrue:[
-                s nextPutAll: (selector upTo: $:)
-            ] ifFalse:[
-                selector numArgs == 1 ifTrue:[
-                    s nextPutAll: (selector copyTo: selector size - 1)
-                ] ifFalse:[
-                    s nextPutAll: (selector copyReplaceAll: $: with: $_)
-                ]
-            ].
-            s nextPut: $(.
-            method selector numArgs timesRepeat:[
-                s nextPutAll:'Ljava/lang/Object;'.
-            ].
-            s nextPutAll: ')'.
-            s nextPutAll:'Ljava/lang/Object;'.
-        ]) asSymbol.
-    ^signature
-
-    "Created: / 22-08-2012 / 11:46:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'testing-private'!
-
-isJavaConstructor: mthd selector: sel
-
-    ^sel startsWith: #initialize
-
-    "Created: / 22-08-2012 / 11:47:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isJavaMethod: mthd selector: sel
-
-    ^sel isBinarySelector not 
-        and:[(self isJavaConstructor: mthd selector: sel) not]
-
-    "Created: / 22-08-2012 / 11:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaArrayMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ klass javaComponentClass javaMirror getClassLoader
-
-    "Modified: / 31-07-2012 / 18:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    ^ java_lang_reflect_Constructor javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    ^java_lang_reflect_Field javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:57:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-    
-    ^ java_lang_reflect_Method javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:57:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ Array 
-        with: (JavaVM classForName: 'java.lang.Cloneable' definedBy: nil)
-        with: (JavaVM classForName: 'java.io.Serializable' definedBy: nil)
-
-    "Modified: / 18-05-2013 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaClassMirror class methodsFor:'documentation'!
-
-documentation
-"
-    A specialized mirror for all Java classes
-
-    [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
-
-    [instance variables:]
-
-    [class variables:]
-
-    [see also:]
-
-"
-! !
-
-!JavaMirror::JavaClassMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ klass classLoader
-
-    "Modified: / 31-07-2012 / 18:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    | ctors |
-
-    ctors := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (mthd isJavaConstructor and:[publicOnly not or:[mthd isPublic]]) ifTrue:[
-            ctors add: (self getDeclaredConstructorFor: mthd).
-        ].
-    ].
-    ^java_lang_reflect_Constructor javaArrayClass withAll: ctors
-
-    "Modified: / 18-05-2013 / 10:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    | fields |    
-
-    fields := klass fields , klass staticFields.
-    publicOnly ifTrue:[ fields := fields select:[:f | f isPublic ] ].
-    JavaClassReader classLoaderQuerySignal answer: klass classLoader do:[
-        fields := fields collect:[:f | self createFieldFor:f ].
-    ].
-    ^ java_lang_reflect_Field javaArrayClass 
-        withAll:fields
-
-    "Modified: / 18-05-2013 / 10:57:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    | methods |
-
-    methods := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        mthd isJavaMethod and:[
-            (mthd isJavaConstructor not 
-                and:[mthd isJavaStaticInitializer not
-                and:[publicOnly not or:[mthd isPublic]]]) ifTrue:[
-                methods add: (self getDeclaredMethodFor: mthd).
-            ]
-        ].
-    ].
-    ^java_lang_reflect_Method javaArrayClass withAll: methods
-
-    "Modified: / 18-05-2013 / 10:57:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getGenericSignature
-    "Returns Java generic signature (if a generic class) or nil"
-
-    ^klass signatureJ
-
-    "Created: / 22-08-2012 / 11:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ klass interfaces
-
-    "Modified: / 22-08-2012 / 11:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    | modifiers |    
-
-    "According to OpenJDK JVM, strip ACC_SUPER"
-    modifiers := (klass accessFlags & JavaConstants ACC_SUPER bitInvert) & 16r7FFF.
-    "JV@2011-10-30: It seems that private inner classes has no
-     private bit set, sigh"
-    (modifiers & 16r0007) == 0 ifTrue:[
-        modifiers := modifiers | JavaConstants ACC_PRIVATE.
-    ].
-    ^modifiers
-
-    "Modified: / 22-08-2012 / 11:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getProtectionDomain
-    ^klass protectionDomain
-
-    "Created: / 22-08-2012 / 12:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaClassMirror methodsFor:'accessing-private'!
-
-getDeclaredConstructorFor: method
-
-    ^self createConstructorFor: method javaClass
-                        method: method
-                     signature: method signature
-                     modifiers: method accessFlags
-                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
-                exceptionTypes: method exceptionClasses
-                   annotations: method method annotations.
-
-    "Created: / 01-08-2012 / 00:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethodFor: method
-
-    ^self      createMethodFor: method javaClass
-                        method: method
-                          name: (method selector upTo: $()
-                     signature: method signature
-                     modifiers: method accessFlags
-                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
-                    returnType: (method descriptor returnClassUsingClassLoader: method javaClass classLoader)
-                exceptionTypes: method exceptionClasses
-                   annotations: method method annotations.
-
-    "Created: / 01-08-2012 / 11:11:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaPrimitiveMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ nil
-
-    "Modified: / 31-07-2012 / 18:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    ^ java_lang_reflect_Constructor javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    ^java_lang_reflect_Field javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-    
-    ^ java_lang_reflect_Method javaArrayClass new:0.
-
-    "Modified: / 18-05-2013 / 10:58:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ #()
-
-    "Modified: / 22-08-2012 / 11:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !JavaMirror class methodsFor:'documentation'!
 
 version_CVS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaPrimitiveMirror.st	Fri May 24 10:58:19 2013 +0100
@@ -0,0 +1,115 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaPrimitiveMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Classes'
+!
+
+!JavaPrimitiveMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+! !
+
+!JavaPrimitiveMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ nil
+
+    "Modified: / 31-07-2012 / 18:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    ^ (JavaVM classForName:'java.lang.reflect.Constructor' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    ^(JavaVM classForName:'java.lang.reflect.Field' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+    
+    ^ (JavaVM classForName:'java.lang.reflect.Method' definedBy: nil) javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:58:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ #()
+
+    "Modified: / 22-08-2012 / 11:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaPrimitiveMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/Make.proto	Thu May 23 09:57:12 2013 +0100
+++ b/Make.proto	Fri May 24 10:58:19 2013 +0100
@@ -21,7 +21,7 @@
 INCLUDE_TOP=$(TOP)/..
 
 # subdirectories where targets are to be made:
-SUBDIRS= experiments
+SUBDIRS= tools experiments
 
 
 # subdirectories where Makefiles are to be made:
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport/fdlibm -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libview
+LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport/fdlibm -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview
 
 
 # if you need any additional defines for embedded C code,
@@ -144,8 +144,6 @@
 	cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -231,17 +229,20 @@
 $(OUTDIR)stx_libjava.$(O) stx_libjava.$(H): stx_libjava.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GroovyMetaclass.$(O) GroovyMetaclass.$(H): GroovyMetaclass.st $(INCLUDE_TOP)/stx/libjava/JavaMetaclass.$(H) $(INCLUDE_TOP)/stx/libbasic/Metaclass.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Java.$(O) Java.$(H): Java.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationArrayValue.$(O) JavaAnnotationArrayValue.$(H): JavaAnnotationArrayValue.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationClassValue.$(O) JavaAnnotationClassValue.$(H): JavaAnnotationClassValue.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationEnumValue.$(O) JavaAnnotationEnumValue.$(H): JavaAnnotationEnumValue.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationNestedAnnotationValue.$(O) JavaAnnotationNestedAnnotationValue.$(H): JavaAnnotationNestedAnnotationValue.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationPrimitiveValue.$(O) JavaAnnotationPrimitiveValue.$(H): JavaAnnotationPrimitiveValue.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaBehavior.$(O) JavaBehavior.$(H): JavaBehavior.st $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeDisassembler.$(O) JavaByteCodeDisassembler.$(H): JavaByteCodeDisassembler.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeEnumerator.$(O) JavaByteCodeEnumerator.$(H): JavaByteCodeEnumerator.st $(INCLUDE_TOP)/stx/libjava/JavaDecompiler.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeProcessorAdapter.$(O) JavaByteCodeProcessorAdapter.$(H): JavaByteCodeProcessorAdapter.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassAnnotationContainer.$(O) JavaClassAnnotationContainer.$(H): JavaClassAnnotationContainer.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassContentRef2.$(O) JavaClassContentRef2.$(H): JavaClassContentRef2.st $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassReader.$(O) JavaClassReader.$(H): JavaClassReader.st $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassRef2.$(O) JavaClassRef2.$(H): JavaClassRef2.st $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassRegistry.$(O) JavaClassRegistry.$(H): JavaClassRegistry.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -256,6 +257,7 @@
 $(OUTDIR)JavaMethodAnnotationContainer.$(O) JavaMethodAnnotationContainer.$(H): JavaMethodAnnotationContainer.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)/stx/libjava/JavaDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_OpenJDK6.$(O) JavaNativeMethodImpl_OpenJDK6.$(H): JavaNativeMethodImpl_OpenJDK6.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaPrimitiveMirror.$(O) JavaPrimitiveMirror.$(H): JavaPrimitiveMirror.st $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaRelease.$(O) JavaRelease.$(H): JavaRelease.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaUnhandledExceptionError.$(O) JavaUnhandledExceptionError.$(H): JavaUnhandledExceptionError.st $(INCLUDE_TOP)/stx/libjava/JavaError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Thu May 23 09:57:12 2013 +0100
+++ b/Make.spec	Fri May 24 10:58:19 2013 +0100
@@ -116,17 +116,20 @@
 	stx_libjava \
 	GroovyMetaclass \
 	Java \
+	JavaAlienMirror \
 	JavaAnnotationArrayValue \
 	JavaAnnotationClassValue \
 	JavaAnnotationEnumValue \
 	JavaAnnotationNestedAnnotationValue \
 	JavaAnnotationPrimitiveValue \
+	JavaArrayMirror \
 	JavaBehavior \
 	JavaByteCodeDisassembler \
 	JavaByteCodeEnumerator \
 	JavaByteCodeProcessorAdapter \
 	JavaClassAnnotationContainer \
 	JavaClassContentRef2 \
+	JavaClassMirror \
 	JavaClassReader \
 	JavaClassRef2 \
 	JavaClassRegistry \
@@ -141,6 +144,7 @@
 	JavaMethodAnnotationContainer \
 	JavaMethodDescriptor \
 	JavaNativeMethodImpl_OpenJDK6 \
+	JavaPrimitiveMirror \
 	JavaRelease \
 	JavaStringRef2 \
 	JavaUnhandledExceptionError \
@@ -243,17 +247,20 @@
     $(OUTDIR_SLASH)stx_libjava.$(O) \
     $(OUTDIR_SLASH)GroovyMetaclass.$(O) \
     $(OUTDIR_SLASH)Java.$(O) \
+    $(OUTDIR_SLASH)JavaAlienMirror.$(O) \
     $(OUTDIR_SLASH)JavaAnnotationArrayValue.$(O) \
     $(OUTDIR_SLASH)JavaAnnotationClassValue.$(O) \
     $(OUTDIR_SLASH)JavaAnnotationEnumValue.$(O) \
     $(OUTDIR_SLASH)JavaAnnotationNestedAnnotationValue.$(O) \
     $(OUTDIR_SLASH)JavaAnnotationPrimitiveValue.$(O) \
+    $(OUTDIR_SLASH)JavaArrayMirror.$(O) \
     $(OUTDIR_SLASH)JavaBehavior.$(O) \
     $(OUTDIR_SLASH)JavaByteCodeDisassembler.$(O) \
     $(OUTDIR_SLASH)JavaByteCodeEnumerator.$(O) \
     $(OUTDIR_SLASH)JavaByteCodeProcessorAdapter.$(O) \
     $(OUTDIR_SLASH)JavaClassAnnotationContainer.$(O) \
     $(OUTDIR_SLASH)JavaClassContentRef2.$(O) \
+    $(OUTDIR_SLASH)JavaClassMirror.$(O) \
     $(OUTDIR_SLASH)JavaClassReader.$(O) \
     $(OUTDIR_SLASH)JavaClassRef2.$(O) \
     $(OUTDIR_SLASH)JavaClassRegistry.$(O) \
@@ -268,6 +275,7 @@
     $(OUTDIR_SLASH)JavaMethodAnnotationContainer.$(O) \
     $(OUTDIR_SLASH)JavaMethodDescriptor.$(O) \
     $(OUTDIR_SLASH)JavaNativeMethodImpl_OpenJDK6.$(O) \
+    $(OUTDIR_SLASH)JavaPrimitiveMirror.$(O) \
     $(OUTDIR_SLASH)JavaRelease.$(O) \
     $(OUTDIR_SLASH)JavaStringRef2.$(O) \
     $(OUTDIR_SLASH)JavaUnhandledExceptionError.$(O) \
--- a/abbrev.stc	Thu May 23 09:57:12 2013 +0100
+++ b/abbrev.stc	Fri May 24 10:58:19 2013 +0100
@@ -0,0 +1,156 @@
+# 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.
+GroovyCompiler GroovyCompiler stx:libjava 'Languages-Groovy-Compiler' 0
+GroovyEvaluator GroovyEvaluator stx:libjava 'Languages-Groovy-Compiler' 0
+GroovyLanguage GroovyLanguage stx:libjava 'Languages-Groovy-Support' 1
+GroovySourceFileWriter GroovySourceFileWriter stx:libjava 'Languages-Groovy-Support' 0
+JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaAnnotation JavaAnnotation stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAnnotationContainer JavaAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
+JavaAnnotationDefault JavaAnnotationDefault stx:libjava 'Languages-Java-Annotations' 1
+JavaAnnotationDictionary JavaAnnotationDictionary stx:libjava 'Languages-Java-Annotations' 1
+JavaAnnotationValue JavaAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
+JavaArray JavaArray stx:libjava 'Languages-Java-Classes' 1
+JavaByte JavaByte stx:libjava 'Languages-Java-Support' 0
+JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
+JavaByteCodeProcessor JavaByteCodeProcessor stx:libjava 'Languages-Java-Bytecode' 0
+JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
+JavaClassAccessor JavaClassAccessor stx:libjava 'Languages-Java-Classes' 0
+JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
+JavaClassQuery JavaClassQuery stx:libjava 'Languages-Java-Classes' 1
+JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaClassReloader JavaClassReloader stx:libjava 'Languages-Java-Support' 0
+JavaCodeLibraryOrBundle JavaCodeLibraryOrBundle stx:libjava 'Languages-Java-Support-Libraries' 0
+JavaCompiler_Eclipse JavaCompiler_Eclipse stx:libjava 'Languages-Java-Tools-Eclipse' 0
+JavaConstantPool JavaConstantPool stx:libjava 'Languages-Java-Reader-Support' 0
+JavaConstants JavaConstants stx:libjava 'Languages-Java-Support' 0
+JavaContext JavaContext stx:libjava 'Languages-Java-Support' 0
+JavaDecompiler JavaDecompiler stx:libjava 'Languages-Java-Support-Decompiling' 0
+JavaDescriptor JavaDescriptor stx:libjava 'Languages-Java-Support' 0
+JavaError JavaError stx:libjava 'Languages-Java-Support' 1
+JavaExceptionTable JavaExceptionTable stx:libjava 'Languages-Java-Support' 0
+JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
+JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
+JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaFinalizationRegistry JavaFinalizationRegistry stx:libjava 'Languages-Java-Support' 0
+JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
+JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 2
+JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
+JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
+JavaLibraries JavaLibraries stx:libjava 'Languages-Java-Support' 0
+JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
+JavaLocalVariableTable JavaLocalVariableTable stx:libjava 'Languages-Java-Support' 0
+JavaLocalVariableTableEntry JavaLocalVariableTableEntry stx:libjava 'Languages-Java-Support' 0
+JavaLookup JavaLookup stx:libjava 'Languages-Java-Interop' 0
+JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaLookupTestsResource JavaLookupTestsResource stx:libjava 'Languages-Java-Tests-Interop' 3
+JavaMathSupport JavaMathSupport stx:libjava 'Languages-Java-Support-Native' 0
+JavaMetaclass JavaMetaclass stx:libjava 'Languages-Java-Classes' 0
+JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaMirror JavaMirror stx:libjava 'Languages-Java-Classes' 0
+JavaMonitor JavaMonitor stx:libjava 'Languages-Java-Support' 0
+JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
+JavaNameAndType2 JavaNameAndType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaNativeMemory JavaNativeMemory stx:libjava 'Languages-Java-Support' 0
+JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
+JavaNioSupport JavaNioSupport stx:libjava 'Languages-Java-Support-Native' 0
+JavaObject JavaObject stx:libjava 'Languages-Java-Classes' 0
+JavaObjectDictionary JavaObjectDictionary stx:libjava 'Languages-Java-Support' 0
+JavaPackage JavaPackage stx:libjava 'Languages-Java-Support' 0
+JavaPopUpView JavaPopUpView stx:libjava 'Languages-Java-Views-Support' 2
+JavaProcess JavaProcess stx:libjava 'Languages-Java-Classes' 0
+JavaRef2 JavaRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
+JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaResolver JavaResolver stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaShort JavaShort stx:libjava 'Languages-Java-Support' 0
+JavaSlotIndexCache JavaSlotIndexCache stx:libjava 'Languages-Java-Support' 0
+JavaSocket JavaSocket stx:libjava 'Languages-Java-Support' 0
+JavaSourceCodeCache JavaSourceCodeCache stx:libjava 'Languages-Java-Support' 1
+JavaSourceFileWriter JavaSourceFileWriter stx:libjava 'Languages-Java-Support' 0
+JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
+JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
+JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
+JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
+JavaUnresolvedCompilationError JavaUnresolvedCompilationError stx:libjava 'Languages-Java-Support' 1
+JavaUnresolvedConstant JavaUnresolvedConstant stx:libjava 'Languages-Java-Reader-Support' 0
+JavaUtilities JavaUtilities stx:libjava 'Languages-Java-Utilities' 0
+JavaVMData JavaVMData stx:libjava 'Languages-Java-Support' 0
+JavaView JavaView stx:libjava 'Languages-Java-Views-Support' 2
+JavaZipSupport JavaZipSupport stx:libjava 'Languages-Java-Support-Native' 0
+ProxyMethod ProxyMethod stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodCompiler ProxyMethodCompiler stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodNode ProxyMethodNode stx:libjava 'System-Compiler-Interop' 0
+SmalltalkAppletContext SmalltalkAppletContext stx:libjava 'Languages-Java-Views-Support' 0
+SmalltalkAppletStub SmalltalkAppletStub stx:libjava 'Languages-Java-Views-Support' 0
+TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+stx_libjava stx_libjava stx:libjava '* Projects & Packages *' 3
+GroovyMetaclass GroovyMetaclass stx:libjava 'Languages-Groovy-Classes' 0
+Java Java stx:libjava 'Languages-Java-Support' 0
+JavaAlienMirror JavaAlienMirror stx:libjava 'Languages-Java-Classes' 0
+JavaAnnotationArrayValue JavaAnnotationArrayValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAnnotationClassValue JavaAnnotationClassValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAnnotationEnumValue JavaAnnotationEnumValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAnnotationNestedAnnotationValue JavaAnnotationNestedAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaAnnotationPrimitiveValue JavaAnnotationPrimitiveValue stx:libjava 'Languages-Java-Reader-Support' 0
+JavaArrayMirror JavaArrayMirror stx:libjava 'Languages-Java-Classes' 0
+JavaBehavior JavaBehavior stx:libjava 'Languages-Java-Classes' 0
+JavaByteCodeDisassembler JavaByteCodeDisassembler stx:libjava 'Languages-Java-Bytecode' 0
+JavaByteCodeEnumerator JavaByteCodeEnumerator stx:libjava 'Languages-Java-Support-Decompiling' 0
+JavaByteCodeProcessorAdapter JavaByteCodeProcessorAdapter stx:libjava 'Languages-Java-Bytecode' 0
+JavaClassAnnotationContainer JavaClassAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
+JavaClassContentRef2 JavaClassContentRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaClassMirror JavaClassMirror stx:libjava 'Languages-Java-Classes' 0
+JavaClassReader JavaClassReader stx:libjava 'Languages-Java-Support' 0
+JavaClassRef2 JavaClassRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaClassRegistry JavaClassRegistry stx:libjava 'Languages-Java-Support' 0
+JavaCodeBundle JavaCodeBundle stx:libjava 'Languages-Java-Support-Libraries' 0
+JavaCodeLibrary JavaCodeLibrary stx:libjava 'Languages-Java-Support-Libraries' 0
+JavaEmbeddedFrameView JavaEmbeddedFrameView stx:libjava 'Languages-Java-Views-Support' 2
+JavaFieldAnnotationContainer JavaFieldAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
+JavaFieldDescriptor JavaFieldDescriptor stx:libjava 'Languages-Java-Support' 0
+JavaFieldDescriptorWithUnionType JavaFieldDescriptorWithUnionType stx:libjava 'Languages-Java-Support' 0
+JavaInvalidRefError JavaInvalidRefError stx:libjava 'Languages-Java-Support' 1
+JavaMethod JavaMethod stx:libjava 'Languages-Java-Classes' 0
+JavaMethodAnnotationContainer JavaMethodAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
+JavaMethodDescriptor JavaMethodDescriptor stx:libjava 'Languages-Java-Support' 0
+JavaNativeMethodImpl_OpenJDK6 JavaNativeMethodImpl_OpenJDK6 stx:libjava 'Languages-Java-Support-OpenJDK6' 0
+JavaPrimitiveMirror JavaPrimitiveMirror stx:libjava 'Languages-Java-Classes' 0
+JavaRelease JavaRelease stx:libjava 'Languages-Java-Support' 1
+JavaStringRef2 JavaStringRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaUnhandledExceptionError JavaUnhandledExceptionError stx:libjava 'Languages-Java-Support' 1
+JavaUnresolvedClassConstant JavaUnresolvedClassConstant stx:libjava 'Languages-Java-Reader-Support' 0
+JavaUnresolvedStringConstant JavaUnresolvedStringConstant stx:libjava 'Languages-Java-Reader-Support' 0
+JavaVM JavaVM stx:libjava 'Languages-Java-Support' 0
+ProxyMethodConditionNode ProxyMethodConditionNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodGuardNode ProxyMethodGuardNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodInvocationNode ProxyMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodJavaFieldAccessor ProxyMethodJavaFieldAccessor stx:libjava 'Languages-Java-Interop' 0
+JavaByteCodePreresolver JavaByteCodePreresolver stx:libjava 'Languages-Java-Bytecode' 0
+JavaClass JavaClass stx:libjava 'Languages-Java-Classes' 0
+JavaClassPathBundle JavaClassPathBundle stx:libjava 'Languages-Java-Support-Libraries' 0
+JavaFieldRef2 JavaFieldRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaMethodRef2 JavaMethodRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaMethodWithException JavaMethodWithException stx:libjava 'Languages-Java-Classes' 0
+JavaNativeMethodImpl_OpenJDK7 JavaNativeMethodImpl_OpenJDK7 stx:libjava 'Languages-Java-Support-OpenJDK7' 0
+JavaNativeMethodImpl_SunJDK6 JavaNativeMethodImpl_SunJDK6 stx:libjava 'Languages-Java-Support-OpenJDK6' 0
+ProxyMethodAndNode ProxyMethodAndNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodBlockInvocationNode ProxyMethodBlockInvocationNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodJavaFieldGetter ProxyMethodJavaFieldGetter stx:libjava 'Languages-Java-Interop' 0
+ProxyMethodJavaFieldSetter ProxyMethodJavaFieldSetter stx:libjava 'Languages-Java-Interop' 0
+ProxyMethodMethodInvocationNode ProxyMethodMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
+ProxyMethodTypeCheckNode ProxyMethodTypeCheckNode stx:libjava 'System-Compiler-Interop' 0
+GroovyClass GroovyClass stx:libjava 'Languages-Groovy-Classes' 0
+JavaInterfaceMethodRef2 JavaInterfaceMethodRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
+JavaMethodWithHandler JavaMethodWithHandler stx:libjava 'Languages-Java-Classes' 0
+JavaNativeMethodImpl_SunJDK7 JavaNativeMethodImpl_SunJDK7 stx:libjava 'Languages-Java-Support-OpenJDK7' 0
+ProxyMethodJavaMethodInvocationNode ProxyMethodJavaMethodInvocationNode stx:libjava 'Languages-Java-Interop' 0
+ProxyMethodJavaTypeCheckNode ProxyMethodJavaTypeCheckNode stx:libjava 'Languages-Java-Interop' 0
+JavaNativeMethod JavaNativeMethod stx:libjava 'Languages-Java-Classes' 0
--- a/bc.mak	Thu May 23 09:57:12 2013 +0100
+++ b/bc.mak	Fri May 24 10:58:19 2013 +0100
@@ -34,7 +34,7 @@
 
 
 
-LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport\fdlibm -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libview
+LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport\fdlibm -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -54,8 +54,6 @@
 	pushd ..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -164,17 +162,20 @@
 $(OUTDIR)stx_libjava.$(O) stx_libjava.$(H): stx_libjava.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GroovyMetaclass.$(O) GroovyMetaclass.$(H): GroovyMetaclass.st $(INCLUDE_TOP)\stx\libjava\JavaMetaclass.$(H) $(INCLUDE_TOP)\stx\libbasic\Metaclass.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Java.$(O) Java.$(H): Java.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationArrayValue.$(O) JavaAnnotationArrayValue.$(H): JavaAnnotationArrayValue.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationClassValue.$(O) JavaAnnotationClassValue.$(H): JavaAnnotationClassValue.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationEnumValue.$(O) JavaAnnotationEnumValue.$(H): JavaAnnotationEnumValue.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationNestedAnnotationValue.$(O) JavaAnnotationNestedAnnotationValue.$(H): JavaAnnotationNestedAnnotationValue.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaAnnotationPrimitiveValue.$(O) JavaAnnotationPrimitiveValue.$(H): JavaAnnotationPrimitiveValue.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaBehavior.$(O) JavaBehavior.$(H): JavaBehavior.st $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeDisassembler.$(O) JavaByteCodeDisassembler.$(H): JavaByteCodeDisassembler.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeEnumerator.$(O) JavaByteCodeEnumerator.$(H): JavaByteCodeEnumerator.st $(INCLUDE_TOP)\stx\libjava\JavaDecompiler.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeProcessorAdapter.$(O) JavaByteCodeProcessorAdapter.$(H): JavaByteCodeProcessorAdapter.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassAnnotationContainer.$(O) JavaClassAnnotationContainer.$(H): JavaClassAnnotationContainer.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassContentRef2.$(O) JavaClassContentRef2.$(H): JavaClassContentRef2.st $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassReader.$(O) JavaClassReader.$(H): JavaClassReader.st $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassRef2.$(O) JavaClassRef2.$(H): JavaClassRef2.st $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassRegistry.$(O) JavaClassRegistry.$(H): JavaClassRegistry.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -189,6 +190,7 @@
 $(OUTDIR)JavaMethodAnnotationContainer.$(O) JavaMethodAnnotationContainer.$(H): JavaMethodAnnotationContainer.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)\stx\libjava\JavaDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_OpenJDK6.$(O) JavaNativeMethodImpl_OpenJDK6.$(H): JavaNativeMethodImpl_OpenJDK6.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaPrimitiveMirror.$(O) JavaPrimitiveMirror.$(H): JavaPrimitiveMirror.st $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaRelease.$(O) JavaRelease.$(H): JavaRelease.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaUnhandledExceptionError.$(O) JavaUnhandledExceptionError.$(H): JavaUnhandledExceptionError.st $(INCLUDE_TOP)\stx\libjava\JavaError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/bmake.bat	Thu May 23 09:57:12 2013 +0100
+++ b/bmake.bat	Fri May 24 10:58:19 2013 +0100
@@ -10,6 +10,13 @@
 make.exe -N -f bc.mak  %DEFINES% %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/tools
+@echo "***********************************"
+@cd tools
+@call bmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/experiments
 @echo "***********************************"
 @cd experiments
--- a/lccmake.bat	Thu May 23 09:57:12 2013 +0100
+++ b/lccmake.bat	Fri May 24 10:58:19 2013 +0100
@@ -6,6 +6,13 @@
 make.exe -N -f bc.mak -DUSELCC=1 %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/tools
+@echo "***********************************"
+@cd tools
+@call lccmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/experiments
 @echo "***********************************"
 @cd experiments
--- a/libInit.cc	Thu May 23 09:57:12 2013 +0100
+++ b/libInit.cc	Fri May 24 10:58:19 2013 +0100
@@ -93,17 +93,20 @@
 _stx_137libjava_Init(pass,__pRT__,snd);
 _GroovyMetaclass_Init(pass,__pRT__,snd);
 _Java_Init(pass,__pRT__,snd);
+_JavaAlienMirror_Init(pass,__pRT__,snd);
 _JavaAnnotationArrayValue_Init(pass,__pRT__,snd);
 _JavaAnnotationClassValue_Init(pass,__pRT__,snd);
 _JavaAnnotationEnumValue_Init(pass,__pRT__,snd);
 _JavaAnnotationNestedAnnotationValue_Init(pass,__pRT__,snd);
 _JavaAnnotationPrimitiveValue_Init(pass,__pRT__,snd);
+_JavaArrayMirror_Init(pass,__pRT__,snd);
 _JavaBehavior_Init(pass,__pRT__,snd);
 _JavaByteCodeDisassembler_Init(pass,__pRT__,snd);
 _JavaByteCodeEnumerator_Init(pass,__pRT__,snd);
 _JavaByteCodeProcessorAdapter_Init(pass,__pRT__,snd);
 _JavaClassAnnotationContainer_Init(pass,__pRT__,snd);
 _JavaClassContentRef2_Init(pass,__pRT__,snd);
+_JavaClassMirror_Init(pass,__pRT__,snd);
 _JavaClassReader_Init(pass,__pRT__,snd);
 _JavaClassRef2_Init(pass,__pRT__,snd);
 _JavaClassRegistry_Init(pass,__pRT__,snd);
@@ -118,6 +121,7 @@
 _JavaMethodAnnotationContainer_Init(pass,__pRT__,snd);
 _JavaMethodDescriptor_Init(pass,__pRT__,snd);
 _JavaNativeMethodImpl_137OpenJDK6_Init(pass,__pRT__,snd);
+_JavaPrimitiveMirror_Init(pass,__pRT__,snd);
 _JavaRelease_Init(pass,__pRT__,snd);
 _JavaStringRef2_Init(pass,__pRT__,snd);
 _JavaUnhandledExceptionError_Init(pass,__pRT__,snd);
--- a/libjava.rc	Thu May 23 09:57:12 2013 +0100
+++ b/libjava.rc	Fri May 24 10:58:19 2013 +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.3.0\0"
-      VALUE "ProductDate", "Wed, 22 May 2013 20:13:57 GMT\0"
+      VALUE "ProductDate", "Fri, 24 May 2013 09:56:29 GMT\0"
     END
 
   END
--- a/mingwmake.bat	Thu May 23 09:57:12 2013 +0100
+++ b/mingwmake.bat	Fri May 24 10:58:19 2013 +0100
@@ -14,6 +14,13 @@
 make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/tools
+@echo "***********************************"
+@cd tools
+@call mingwmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/experiments
 @echo "***********************************"
 @cd experiments
--- a/stx_libjava.st	Thu May 23 09:57:12 2013 +0100
+++ b/stx_libjava.st	Fri May 24 10:58:19 2013 +0100
@@ -158,7 +158,6 @@
      exclude individual packages in the #excludedFromPreRequisites method."
 
     ^ #(
-        #'stx:goodies/sunit'    "TestAsserter - superclass of JavaByteCodeProcessorTests "
         #'stx:libbasic'    "AbstractNumberVector - extended "
         #'stx:libbasic2'    "BitArray - extended "
         #'stx:libbasic3'    "WrappedMethod - extended "
@@ -175,6 +174,7 @@
      exclude individual packages in the #excludedFromPreRequisites method."
 
     ^ #(
+        #'stx:goodies/sunit'    "TestSuite - referenced by JavaTestsLoader class>>buildSuiteFrom: "
         #'stx:libcomp'    "BlockNode - referenced by JavaNativeMethod>>numberOfArgs: "
         #'stx:libhtml'    "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
         #'stx:libjava/experiments'    "JavaByteCodeInterpreter - referenced by JavaMethod>>interpretWithReceiver:arguments: "
@@ -193,6 +193,7 @@
      for those, redefine requiredPrerequisites"
 
     ^ #(
+        #'stx:libjava/tools'
         #'stx:libjava/experiments'
     )
 ! !
@@ -399,17 +400,20 @@
         #'stx_libjava'
         GroovyMetaclass
         Java
+        JavaAlienMirror
         JavaAnnotationArrayValue
         JavaAnnotationClassValue
         JavaAnnotationEnumValue
         JavaAnnotationNestedAnnotationValue
         JavaAnnotationPrimitiveValue
+        JavaArrayMirror
         JavaBehavior
         JavaByteCodeDisassembler
         JavaByteCodeEnumerator
         JavaByteCodeProcessorAdapter
         JavaClassAnnotationContainer
         JavaClassContentRef2
+        JavaClassMirror
         JavaClassReader
         JavaClassRef2
         JavaClassRegistry
@@ -424,6 +428,7 @@
         JavaMethodAnnotationContainer
         JavaMethodDescriptor
         #'JavaNativeMethodImpl_OpenJDK6'
+        JavaPrimitiveMirror
         JavaRelease
         JavaStringRef2
         JavaUnhandledExceptionError
--- a/vcmake.bat	Thu May 23 09:57:12 2013 +0100
+++ b/vcmake.bat	Fri May 24 10:58:19 2013 +0100
@@ -18,6 +18,13 @@
 
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/tools
+@echo "***********************************"
+@cd tools
+@call vcmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/experiments
 @echo "***********************************"
 @cd experiments