merge heads development
authorMarcel Hlopko <marcel.hlopko@gmail.com>
Sun, 22 Sep 2013 21:12:02 +0200
branchdevelopment
changeset 2754 c6f2c3b4a45b
parent 2753 7cdd959123dd (current diff)
parent 2744 7c283887f8c4 (diff)
child 2755 2158564a90d1
merge heads
JavaClass.st
experiments/JavaCompilerProblemRegistry.st
experiments/Make.proto
experiments/Make.spec
experiments/bc.mak
experiments/experiments.rc
experiments/libInit.cc
experiments/stx_libjava_experiments.st
--- a/Java.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/Java.st	Sun Sep 22 21:12:02 2013 +0200
@@ -1209,41 +1209,13 @@
 !
 
 removeClass:aJavaClass
-    "/ remove it from myself
-
-    |javaName sym cls p ns|
-
-"/    self breakPoint: #jv.
-"/    self breakPoint: #mh.
-
-    javaName := aJavaClass fullName.
+    "Remove the class from the system, as well as all its subclasses
+     (or users of the interface, if class is interface)"
 
-    sym := javaName asSymbolIfInterned.
-    sym notNil ifTrue:[
-        cls := JavaVM classForName: sym definedBy: aJavaClass classLoader.
-    ].
-    (cls notNil and:[cls == aJavaClass]) ifTrue:[
-        self updateClassRefsFrom:aJavaClass to:nil.
-    ].
-    Smalltalk removeKey:('JAVA::' , javaName) asSymbol.
-    Smalltalk removeKey:javaName asSymbol.
-    Smalltalk removeKey:((javaName , '') copyReplaceAll:$/ with:$.) asSymbol.
+    JavaVM unloadClass: aJavaClass.
 
-    "/ remove myself from the JAVA::-::-:: namespace
-    "/ (which exists for convenient smalltalk access only)
-
-    p := aJavaClass nameSpacePath.
-    p knownAsSymbol ifTrue:[
-        ns := Smalltalk at:p asSymbol.
-        (ns notNil and:[ns isNameSpace]) ifTrue:[
-            Smalltalk removeKey:(p , '::' , aJavaClass lastName) asSymbol
-        ]
-    ].
-
-    JavaVM registry unregisterClass: aJavaClass.
-
-    "Modified: / 17-04-2013 / 21:29:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-07-2013 / 19:48:40 / cg"
+    "Modified: / 19-10-1998 / 20:58:49 / cg"
+    "Modified (comment): / 14-09-2013 / 23:51:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 unresolvedClassRefFor:aClassName
@@ -1275,125 +1247,139 @@
 
 !Java class methodsFor:'source management'!
 
-classSource:filename package:package in:dirOrZipFile
-    |fn pn zar f |
+classSourceStreamFor: aClass 
+    | jpackage  dirName  sourceFileName  sourceFile  loader  codeBaseURL  protocol  codeBaseURLIdx  src |
 
-    fn := dirOrZipFile asFilename.
-    pn := dirOrZipFile asString.
-    fn isDirectory
-	ifTrue:
-	    [ package notNil
-		ifTrue:[ (f:= fn / package / filename) exists ifTrue:[ ^ f contents asString ]. ].
-	    (f := fn / filename) exists ifTrue:[ ^ f contents asString ]. ]
-	ifFalse:
-	    [ ((pn last == $p and: [fn hasSuffix:'zip']) or:
-	      [(pn last == $r and: [fn hasSuffix:'jar'])])
-		ifTrue:
-		    [ zar := SourceArchiveCache
-				at: dirOrZipFile
-				ifAbsentPut:[ZipArchive oldFileNamed:fn pathName].
-		    zar notNil
-			ifTrue:
-			    [   package notNil
-				ifTrue:[
-				    OperatingSystem fileSeparator ~~ $/ ifTrue: [
-					f := (package copyReplaceAll: OperatingSystem fileSeparator with: $/) , '/' , filename
-				    ] ifFalse:[
-					f := package , '/' , filename.
-				    ]]
-				ifFalse:[ f := filename].
-			    (zar findMember: f) ifNotNil:
-				[
-				    "Kludge because of broken ZipArchive"
-				    |  cache |
-				    cache := Java cacheDirectory / Release name / 'src'.
-				    cache exists ifFalse:[cache recursiveMakeDirectory].
-				    (cache / f) exists ifTrue:[^(cache / f) contents asString].
-				    OperatingSystem
-					executeCommand:('unzip "%1" "%2"' bindWith: fn asAbsoluteFilename asString
-							    with: f asString)
-					inDirectory: cache asString.
-				    (f := cache / f) exists ifTrue:[^f contents asString]
-				].
-			    zar closeFile.
-			    ]]].
-
-    ^ nil
-
-    "
-	Java classSource: 'Object.java' package:'java/lang' in:'/home/jv/Projects/JavaX/java-6-openjdk/src'
-	Java classSource: 'Object.java' package:'java/lang' in:'/usr/lib/jvm/java-6-openjdk/src.zip'
-
-    "
-
-    "Modified: / 29-03-1998 / 21:46:40 / cg"
-    "Created: / 30-11-2010 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-12-2012 / 00:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-classSourceOf:aClass
-    |jpackage dirName sourceFileName sourceFile loader codeBaseURL protocol codeBaseURLIdx src |
-
-    aClass isNil ifTrue:[
+    aClass isNil ifTrue: [
         ^ nil
     ].
+    
     "/ look at the cache"
-    SourceCache at: aClass ifPresent: [:src|^src].
-
 
     "/ maybe it was loaded by a java classLoader ...
-    (loader := aClass classLoader) notNil ifTrue:[
-        codeBaseURLIdx := loader class instVarOffsetOf:'codeBaseURL'.
-        codeBaseURLIdx notNil ifTrue:[
-            (codeBaseURL := loader instVarAt:codeBaseURLIdx) notNil ifTrue:[
-                (protocol := codeBaseURL instVarNamed:'protocol') notNil ifTrue:[
-                    (Java as_ST_String:protocol) = 'file' ifTrue:[
-                        dirName := Java as_ST_String:(codeBaseURL instVarNamed:'file').
+    
+    (loader := aClass classLoader) notNil ifTrue: [
+        codeBaseURLIdx := loader class instVarOffsetOf: 'codeBaseURL'.
+        codeBaseURLIdx notNil ifTrue: [
+            (codeBaseURL := loader instVarAt: codeBaseURLIdx) notNil ifTrue: [
+                (protocol := codeBaseURL instVarNamed: 'protocol') notNil ifTrue: [
+                    (Java as_ST_String: protocol) = 'file' ifTrue: [
+                        dirName := Java as_ST_String: (codeBaseURL instVarNamed: 'file').
                         dirName := dirName asFilename.
-                        dirName exists ifTrue:[
-                            aClass sourceFile notNil ifTrue:[
-                                sourceFile := sourceFileName := dirName construct:aClass sourceFile.
+                        dirName exists ifTrue: [
+                            aClass sourceFile notNil ifTrue: [
+                                sourceFile := sourceFileName := dirName construct: aClass sourceFile.
                             ]
                         ]
                     ]
                 ]
             ]
         ].
+        
         "/ HACK HACK HACK: The eXpecco JImport plugin load the Java class and
         "/ sets fake classloader - an instance of Expecco::JIClassLoaderPlaceholder
         "/ which in turn references codelibrary in an instvar. If that's the case,
         "/ ask that library for source
-        loader class name == #'Expecco::JIClassLoaderPlaceholder' ifTrue:[
-            ^ loader library classSourceOf: aClass name.
+        
+        loader class name == #'Expecco::JIClassLoaderPlaceholder' ifTrue: [
+            ^ (loader library classSourceOf: aClass name) readStream.
         ]
     ].
-
+    
     "/ if that fails, look in standard places
-
-    (sourceFile isNil or:[sourceFile exists not]) ifTrue:[
+    
+    (sourceFile isNil or: [ sourceFile exists not ]) ifTrue: [
         sourceFile := aClass sourceFile.
-        sourceFile isNil ifTrue:[
+        sourceFile isNil ifTrue: [
             "Hmm, hmm...just a guess"
             sourceFile := (aClass lastName upTo: $$) , '.java'.
         ].
         jpackage := aClass javaPackageAsDirname.
-        self effectiveSourceDirectories do:[:dir|
-            src := self classSource: sourceFile package: jpackage in: dir.
-            src notNil ifTrue:[ SourceCache at: aClass put: src. ^ src]
+        self effectiveSourceDirectories do: [:dir | 
+            src := self 
+                         classSourceStreamForFile: sourceFile
+                         package: jpackage
+                         in: dir.
+            src notNil ifTrue: [
+                ^ src
+            ]
         ]
     ].
-
-    sourceFile isFilename ifFalse:[^nil].
+    sourceFile isFilename ifFalse: [
+        ^ nil
+    ].
     src := sourceFile contentsOfEntireFile asString.
-    SourceCache at: aClass put: src. 
     ^ src
 
     "
-        Java classSourceOf: JAVA::java::lang::Object
-    "
+        Java classSourceOf: JAVA::java::lang::Object"
 
     "Modified: / 27-01-1999 / 20:40:30 / cg"
-    "Modified: / 08-09-2013 / 10:38:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 12:48:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classSourceStreamForFile: filename package: jpackage in: dirOrZipFile 
+    | fn  pn  zar  f |
+
+    fn := dirOrZipFile asFilename.
+    pn := dirOrZipFile asString.
+    fn isDirectory ifTrue: [
+        jpackage notNil ifTrue: [
+            (f := fn / jpackage / filename) exists ifTrue: [
+                ^ f readStream
+            ].
+        ].
+        (f := fn / filename) exists ifTrue: [
+            ^ f readStream
+        ].
+    ] ifFalse: [
+        ((pn last == $p and: [ fn hasSuffix: 'zip' ]) 
+            or: [ (pn last == $r and: [ fn hasSuffix: 'jar' ]) ]) 
+                ifTrue: [
+                    zar := SourceArchiveCache at: dirOrZipFile
+                            ifAbsentPut: [ ZipArchive oldFileNamed: fn pathName ].
+                    zar notNil ifTrue: [
+                        jpackage notNil ifTrue: [
+                            OperatingSystem fileSeparator ~~ $/ ifTrue: [
+                                f := (jpackage copyReplaceAll: OperatingSystem fileSeparator with: $/) 
+                                        , '/' , filename
+                            ] ifFalse: [
+                                f := jpackage , '/' , filename.
+                            ]
+                        ] ifFalse: [
+                            f := filename
+                        ].
+                        (zar findMember: f) notNil ifTrue: [
+                            | "Kludge because of broken ZipArchive" cache |
+
+                            cache := Java cacheDirectory / Release name / 'src'.
+                            cache exists ifFalse: [
+                                cache recursiveMakeDirectory
+                            ].
+                            (cache / f) exists ifTrue: [
+                                ^ (cache / f) readStream
+                            ].
+                            OperatingSystem 
+                                executeCommand: ('unzip "%1" "%2"' bindWith: fn asAbsoluteFilename asString
+                                        with: f asString)
+                                inDirectory: cache asString.
+                            (f := cache / f) exists ifTrue: [
+                                ^ f readStream
+                            ]
+                        ].
+                        zar closeFile.
+                    ]
+                ]
+    ].
+    ^ nil
+
+    "
+ Java classSource: 'Object.java' package:'java/lang' in:'/home/jv/Projects/JavaX/java-6-openjdk/src'
+ Java classSource: 'Object.java' package:'java/lang' in:'/usr/lib/jvm/java-6-openjdk/src.zip'"
+
+    "Modified: / 29-03-1998 / 21:46:40 / cg"
+    "Created: / 30-11-2010 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 12:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceDirectories
--- a/JavaClass.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaClass.st	Sun Sep 22 21:12:02 2013 +0200
@@ -696,9 +696,10 @@
     enclosingMethodAttr isNil ifTrue:[ ^ nil ].
     enclosingMethodAttr second isNil ifTrue:[ ^ nil ].
     enclosingClass := enclosingMethodAttr first resolve: false.
-    enclosingClass compiledMethodAt: enclosingMethodAttr second selector
+    ^ enclosingClass compiledMethodAt: enclosingMethodAttr second selector
 
     "Created: / 13-09-2013 / 01:28:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-09-2013 / 12:14:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 ensureHasAnnotations
@@ -876,9 +877,18 @@
 !
 
 source
-    ^ sourceString notNil 
-            ifTrue: [  sourceString ]
-            ifFalse:[ Java classSourceOf:self ]
+    | stream |
+    sourceString notNil ifTrue: [ ^ sourceString ].
+    ^ [
+        stream := self sourceStream.
+        stream notNil ifTrue:[
+            stream contents asString.
+        ] ifFalse:[
+            nil
+        ].
+    ] ensure:[
+        stream notNil ifTrue:[stream close]
+    ].
 
     "
      (Java at:'java.awt.Frame') source
@@ -887,13 +897,27 @@
     "
 
     "Modified: / 30-07-1997 / 14:31:01 / cg"
-    "Modified: / 18-02-2012 / 19:10:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-09-2013 / 03:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceFile
     ^ sourceFile
 !
 
+sourceStream
+    ^ sourceString notNil 
+        ifTrue:[ sourceString readStream ]
+        ifFalse:[Java classSourceStreamFor: self ]
+    
+    "
+     (Java at:'java.awt.Frame') source
+     (Java at:'ArcTest') source
+     (Java at:'ArcCanvas') source
+    "
+
+    "Created: / 19-09-2013 / 12:41:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 sourceString
     ^sourceString
 
--- a/JavaClassReloader.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaClassReloader.st	Sun Sep 22 21:12:02 2013 +0200
@@ -303,7 +303,7 @@
      simply copy methods and other info from new class to old one. 
      References must be flushed anyway!!"
 
-    | oldMethods newMethods problems |
+    | oldMethods newMethods |
 
     oldMethods := oldClass methodDictionary.
     newMethods := newClass methodDictionary copy.
@@ -329,18 +329,8 @@
     "Flush all proxies, they mau refer to old static methods"
     oldClass class setMethodDictionary: MethodDictionary new.
 
-    "Also, transfer all problems of newClass to newClass so
-     the highligher shows them..."
-    JavaCompiler notNil ifTrue:[
-        problems := JavaCompiler problems at: newClass ifAbsent:[nil].
-        problems notNil ifTrue:[
-            JavaCompiler problems removeKey: newClass.
-            JavaCompiler problems at: oldClass put: problems.
-        ]
-    ].
-
     "Created: / 16-12-2012 / 17:36:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 11-08-2013 / 13:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-09-2013 / 13:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaClassReloader::SingleClassReloader methodsFor:'reloading'!
--- a/JavaConstantPool.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaConstantPool.st	Sun Sep 22 21:12:02 2013 +0200
@@ -78,7 +78,7 @@
 invalidateForClass: internalJavaClassName 
     "Only alias, everybody calls invalidateForClass so why not me :)"
     
-    ^self invalidateReferencesToClass: internalJavaClassName.
+    ^ self invalidateReferencesToClass: internalJavaClassName.
 
     "Created: / 08-04-2011 / 16:52:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
@@ -152,24 +152,6 @@
     "Created: / 13-05-2011 / 09:05:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
-!JavaConstantPool methodsFor:'invalidation'!
-
-invalidateForClass: slashedJavaClassName
-    "Invalidate all resolved references to given class.
-     Returns true if at least one ref has been invalidated,
-     false otherwise"
-
-    | anyInvalidated |
-    anyInvalidated := false.
-    self do:[:ref|
-        (ref notNil and:[ref isString not and:[ref isNumber not]]) ifTrue:[
-            anyInvalidated := anyInvalidated | (ref invalidateForClass: slashedJavaClassName)].
-        ].
-    ^anyInvalidated
-
-    "Created: / 08-04-2011 / 16:11:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 22-02-2012 / 20:53:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
 
 !JavaConstantPool methodsFor:'printing & storing'!
 
--- a/JavaVM.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaVM.st	Sun Sep 22 21:12:02 2013 +0200
@@ -1717,13 +1717,15 @@
                                   'libmanagement.so'        "/ Management Beans - req'd by Tomcat
                                   'libjpeg.so' 'liblcms.so' "/ Some UI stuff - req'd by Tomcat !!?!!
                                   'libfontmanager.so'       "/ req'd by java.text.Bidi
+                                  'libj2pkcs11.so'          "/ req'd by Smack and some crypto stuff
                                     ).
         ^ self.
     ].
     OperatingSystem isMSWINDOWSlike ifTrue: [
         SimulatedNativeLibs := #( 'awt.dll' 'net.dll' 'cmm.dll' 'zip.dll' 'nio.so'
-                                  'management.dll'          "/ Management Beans - req'd by Tomcat
-                                  'fontmanager.dll'          "/ req'd by java.text.Bidi
+                                  'management.dll'        "/ Management Beans - req'd by Tomcat
+                                  'fontmanager.dll'       "/ req'd by java.text.Bidi
+                                  'j2pkcs11.dll'          "/ req'd by Smack and some crypto stuff
                                 ).
         ^ self.
     ].
@@ -1735,7 +1737,7 @@
     "Modified: / 27-01-1998 / 18:43:10 / cg"
     "Modified: / 03-11-2011 / 19:00:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 21-12-2011 / 23:03:35 / jv"
-    "Modified: / 12-05-2012 / 12:52:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-09-2013 / 12:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeSimulatedNativeMemory
@@ -2747,6 +2749,18 @@
 
     "Created: / 14-09-2013 / 23:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-09-2013 / 00:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unloadClass: class
+    "Remove given `class` from the system, i.e., remove it from
+     the class registry as well as from system dictionary (Smalltalk). 
+
+     Note, that this method also removes all dependent classes and
+     invalidates all references"
+
+    ClassRegistry unregisterClass: class.
+
+    "Created: / 14-09-2013 / 23:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaVM class methodsFor:'debugging support'!
--- a/Make.proto	Fri Sep 20 00:10:48 2013 +0200
+++ b/Make.proto	Sun Sep 22 21:12:02 2013 +0200
@@ -21,7 +21,7 @@
 INCLUDE_TOP=$(TOP)/..
 
 # subdirectories where targets are to be made:
-SUBDIRS= experiments tools
+SUBDIRS= examples experiments tools examples/jabber
 
 
 # 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/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/goodies/sunit -I$(INCLUDE_TOP)/stx/libview
 
 
 # if you need any additional defines for embedded C code,
@@ -144,6 +144,8 @@
 	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)"
 
 
 
--- a/bc.mak	Fri Sep 20 00:10:48 2013 +0200
+++ b/bc.mak	Sun Sep 22 21:12:02 2013 +0200
@@ -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\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\goodies\sunit -I$(INCLUDE_TOP)\stx\libview
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -54,6 +54,8 @@
 	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) "
 
 
 
--- a/bmake.bat	Fri Sep 20 00:10:48 2013 +0200
+++ b/bmake.bat	Sun Sep 22 21:12:02 2013 +0200
@@ -10,6 +10,20 @@
 make.exe -N -f bc.mak  %DEFINES% %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call bmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call bmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/tools
 @echo "***********************************"
 @cd tools
--- a/experiments/JavaCompilerProblemRegistry.st	Fri Sep 20 00:10:48 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-"
-"{ Package: 'stx:libjava/experiments' }"
-
-Object subclass:#JavaCompilerProblemRegistry
-	instanceVariableNames:'problems'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Languages-Java-Support-Compiling'
-!
-
-JavaCompilerProblemRegistry class instanceVariableNames:'theOneAndOnlyInstance'
-
-"
- No other class instance variables are inherited by this class.
-"
-!
-
-!JavaCompilerProblemRegistry class methodsFor:'documentation'!
-
-copyright
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
-"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'instance creation'!
-
-flush
-    "flushes the cached singleton"
-
-    theOneAndOnlyInstance := nil
-
-    "
-     self flushSingleton
-    "
-
-    "Created: / 06-08-2013 / 10:19:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-instance
-    "returns a singleton"
-
-    theOneAndOnlyInstance isNil ifTrue:[
-        theOneAndOnlyInstance := self basicNew initialize.
-    ].
-    ^ theOneAndOnlyInstance.
-
-    "Created: / 06-08-2013 / 10:19:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-new
-    "returns a singleton"
-
-    ^ self instance.
-
-    "Modified: / 06-08-2013 / 10:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'accessing'!
-
-problemsFor: jclass
-    ^ self instance problemsFor: jclass.
-
-    "Created: / 06-08-2013 / 10:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsFor: jclass put: problems
-    ^ self instance problemsFor: jclass put: problems
-
-    "Created: / 06-08-2013 / 10:29:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry methodsFor:'accessing'!
-
-problemsFor: jclass
-    ^ problems at: jclass ifAbsent:[nil]
-
-    "Created: / 06-08-2013 / 10:24:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsFor: jclass put: problemsForClass
-    problemsForClass isNil ifTrue:[
-        problems removeKey: jclass ifAbsent:[nil].
-    ] ifFalse:[
-        problems at: jclass put: problemsForClass.
-    ].
-    self changed: #problems with: jclass.
-
-    "Created: / 06-08-2013 / 10:25:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry methodsFor:'initialization'!
-
-initialize
-    "Invoked when a new instance is created."
-
-    problems := WeakIdentityDictionary new.
-
-    "Modified: / 06-08-2013 / 10:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'documentation'!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/experiments/JavaCompilerProblemRegistry.st,v 1.1 2013-09-06 00:44:04 vrany Exp $'
-! !
-
--- a/experiments/Make.proto	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/Make.proto	Sun Sep 22 21:12:02 2013 +0200
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/goodies/sunit
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libjava/tools
 
 
 # if you need any additional defines for embedded C code,
@@ -134,12 +134,20 @@
 # build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 	cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/petitparser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../tools && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -160,7 +168,6 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaByteCodeInterpreter.$(O) JavaByteCodeInterpreter.$(H): JavaByteCodeInterpreter.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaCompilerProblemRegistry.$(O) JavaCompilerProblemRegistry.$(H): JavaCompilerProblemRegistry.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWrapperCompiler.$(O) JavaMethodWrapperCompiler.$(H): JavaMethodWrapperCompiler.st $(INCLUDE_TOP)/stx/libjava/Java.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)NoReflectionObject.$(O) NoReflectionObject.$(H): NoReflectionObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PersonSample.$(O) PersonSample.$(H): PersonSample.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -168,7 +175,7 @@
 $(OUTDIR)SetSample.$(O) SetSample.$(H): SetSample.st $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libjava_experiments.$(O) stx_libjava_experiments.$(H): stx_libjava_experiments.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeSteppableInterpreter.$(O) JavaByteCodeSteppableInterpreter.$(H): JavaByteCodeSteppableInterpreter.st $(INCLUDE_TOP)/stx/libjava/experiments/JavaByteCodeInterpreter.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libjava/JavaClassContentRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstantPool.$(H) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libjava/JavaNameAndType2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaStringRef2.$(H) $(INCLUDE_TOP)/stx/libjava/Java.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassReloader.$(H) $(INCLUDE_TOP)/stx/libjava/JavaVM.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libjava/JavaClassContentRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstantPool.$(H) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libjava/JavaNameAndType2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaStringRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassReloader.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/experiments/Make.spec	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/Make.spec	Sun Sep 22 21:12:02 2013 +0200
@@ -51,7 +51,6 @@
 
 COMMON_CLASSES= \
 	JavaByteCodeInterpreter \
-	JavaCompilerProblemRegistry \
 	JavaMethodWrapperCompiler \
 	NoReflectionObject \
 	PersonSample \
@@ -65,7 +64,6 @@
 
 COMMON_OBJS= \
     $(OUTDIR_SLASH)JavaByteCodeInterpreter.$(O) \
-    $(OUTDIR_SLASH)JavaCompilerProblemRegistry.$(O) \
     $(OUTDIR_SLASH)JavaMethodWrapperCompiler.$(O) \
     $(OUTDIR_SLASH)NoReflectionObject.$(O) \
     $(OUTDIR_SLASH)PersonSample.$(O) \
--- a/experiments/abbrev.stc	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/abbrev.stc	Sun Sep 22 21:12:02 2013 +0200
@@ -5,7 +5,6 @@
 JavaByteCodeInterpreter JavaByteCodeInterpreter stx:libjava/experiments 'Languages-Java-Bytecode' 0
 JavaByteCodeInterpreterTests JavaByteCodeInterpreterTests stx:libjava/experiments 'Languages-Java-Tests' 1
 JavaClassReloaderTests JavaClassReloaderTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
-JavaCompilerProblemRegistry JavaCompilerProblemRegistry stx:libjava/experiments 'Languages-Java-Support-Compiling' 1
 JavaCompilerTests JavaCompilerTests stx:libjava/experiments 'Languages-Java-Tests-Compiling' 1
 JavaMethodWrapperCompiler JavaMethodWrapperCompiler stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
 NoReflectionObject NoReflectionObject stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
--- a/experiments/bc.mak	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/bc.mak	Sun Sep 22 21:12:02 2013 +0200
@@ -34,7 +34,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\goodies\sunit
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libjava\tools
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -51,12 +51,20 @@
 # build all mandatory prerequisite packages (containing superclasses) for this package
 prereq:
 	pushd ..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\petitparser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\tools & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -84,7 +92,6 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaByteCodeInterpreter.$(O) JavaByteCodeInterpreter.$(H): JavaByteCodeInterpreter.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaCompilerProblemRegistry.$(O) JavaCompilerProblemRegistry.$(H): JavaCompilerProblemRegistry.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWrapperCompiler.$(O) JavaMethodWrapperCompiler.$(H): JavaMethodWrapperCompiler.st $(INCLUDE_TOP)\stx\libjava\Java.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)NoReflectionObject.$(O) NoReflectionObject.$(H): NoReflectionObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PersonSample.$(O) PersonSample.$(H): PersonSample.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -92,7 +99,7 @@
 $(OUTDIR)SetSample.$(O) SetSample.$(H): SetSample.st $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libjava_experiments.$(O) stx_libjava_experiments.$(H): stx_libjava_experiments.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodeSteppableInterpreter.$(O) JavaByteCodeSteppableInterpreter.$(H): JavaByteCodeSteppableInterpreter.st $(INCLUDE_TOP)\stx\libjava\experiments\JavaByteCodeInterpreter.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libjava\JavaClassContentRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstantPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libjava\JavaNameAndType2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaStringRef2.$(H) $(INCLUDE_TOP)\stx\libjava\Java.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassReloader.$(H) $(INCLUDE_TOP)\stx\libjava\JavaVM.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libjava\JavaClassContentRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstantPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libjava\JavaNameAndType2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaStringRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassReloader.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/experiments/extensions.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/extensions.st	Sun Sep 22 21:12:02 2013 +0200
@@ -1,17 +1,5 @@
 "{ Package: 'stx:libjava/experiments' }"!
 
-!Java class methodsFor:'registering java classes'!
-
-removeClass:aJavaClass
-    "Remove the class from the system, as well as all its subclasses
-     (or users of the interface, if class is interface)"
-
-    JavaVM unloadClass: aJavaClass.
-
-    "Modified: / 19-10-1998 / 20:58:49 / cg"
-    "Modified (comment): / 14-09-2013 / 23:51:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !JavaClassContentRef2 methodsFor:'resolving'!
 
 invalidateForClass: class 
@@ -77,26 +65,6 @@
     "Modified: / 22-02-2012 / 20:53:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaConstantPool class methodsFor:'special'!
-
-invalidateForClass: internalJavaClassName 
-    "Only alias, everybody calls invalidateForClass so why not me :)"
-    
-    ^ self invalidateReferencesToClass: internalJavaClassName.
-
-    "Created: / 08-04-2011 / 16:52:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
-!JavaConstantPool class methodsFor:'special'!
-
-invalidateReferencesToClass: internalJavaClassName 
-    "Go over all constant pools and call invalidateForClass on all 
-     references. (usable when given class was unloaded etc)"
-    ConstantPools do: [:each | each invalidateForClass: internalJavaClassName].
-
-    "Created: / 08-04-2011 / 16:09:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
 !JavaNameAndType2 methodsFor:'* As yet uncategorized *'!
 
 invalidateForClass: aSymbol 
@@ -135,20 +103,6 @@
     "Modified: / 22-02-2012 / 20:52:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaVM class methodsFor:'class loading/unloading'!
-
-unloadClass: class
-    "Remove given `class` from the system, i.e., remove it from
-     the class registry as well as from system dictionary (Smalltalk). 
-
-     Note, that this method also removes all dependent classes and
-     invalidates all references"
-
-    ClassRegistry unregisterClass: class.
-
-    "Created: / 14-09-2013 / 23:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !stx_libjava_experiments class methodsFor:'documentation'!
 
 extensionsVersion_HG
--- a/experiments/libInit.cc	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/libInit.cc	Sun Sep 22 21:12:02 2013 +0200
@@ -28,7 +28,6 @@
 OBJ snd; struct __vmData__ *__pRT__; {
 __BEGIN_PACKAGE2__("libstx_libjava_experiments", _libstx_libjava_experiments_Init, "stx:libjava/experiments");
 _JavaByteCodeInterpreter_Init(pass,__pRT__,snd);
-_JavaCompilerProblemRegistry_Init(pass,__pRT__,snd);
 _JavaMethodWrapperCompiler_Init(pass,__pRT__,snd);
 _NoReflectionObject_Init(pass,__pRT__,snd);
 _PersonSample_Init(pass,__pRT__,snd);
--- a/experiments/stx_libjava_experiments.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/stx_libjava_experiments.st	Sun Sep 22 21:12:02 2013 +0200
@@ -186,7 +186,6 @@
         JavaByteCodeInterpreter
         (JavaByteCodeInterpreterTests autoload)
         (JavaClassReloaderTests autoload)
-        JavaCompilerProblemRegistry
         (JavaCompilerTests autoload)
         JavaMethodWrapperCompiler
         NoReflectionObject
@@ -201,7 +200,7 @@
 
 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."
+     Entries are pairwise elements, consisting of class-name and selector."
 
     ^ #(
         JavaClassContentRef2 invalidateForClass:
@@ -210,11 +209,7 @@
         JavaNameAndType2 invalidateForClass:
         JavaRef2 invalidateForClass:
         JavaStringRef2 invalidateForClass:
-        'Java class' removeClass:
         'JavaClassReloader class' unload:
-        'JavaConstantPool class' invalidateForClass:
-        'JavaConstantPool class' invalidateReferencesToClass:
-        'JavaVM class' unloadClass:
     )
 ! !
 
--- a/lccmake.bat	Fri Sep 20 00:10:48 2013 +0200
+++ b/lccmake.bat	Sun Sep 22 21:12:02 2013 +0200
@@ -6,6 +6,20 @@
 make.exe -N -f bc.mak -DUSELCC=1 %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call lccmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call lccmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/tools
 @echo "***********************************"
 @cd tools
--- a/libjava.rc	Fri Sep 20 00:10:48 2013 +0200
+++ b/libjava.rc	Sun Sep 22 21:12:02 2013 +0200
@@ -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", "Mon, 16 Sep 2013 12:58:24 GMT\0"
+      VALUE "ProductDate", "Fri, 20 Sep 2013 01:02:02 GMT\0"
     END
 
   END
--- a/mingwmake.bat	Fri Sep 20 00:10:48 2013 +0200
+++ b/mingwmake.bat	Sun Sep 22 21:12:02 2013 +0200
@@ -14,6 +14,20 @@
 make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call mingwmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call mingwmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/tools
 @echo "***********************************"
 @cd tools
--- a/stx_libjava.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/stx_libjava.st	Sun Sep 22 21:12:02 2013 +0200
@@ -160,6 +160,7 @@
      (the browser has a menu function for that)"
 
     ^ #(
+        #'stx:goodies/sunit'    "TestAsserter - superclass of JavaByteCodeProcessorTests "
         #'stx:libbasic'    "AbstractNumberVector - extended "
         #'stx:libbasic2'    "BitArray - extended "
         #'stx:libbasic3'    "WrappedMethod - extended "
@@ -176,7 +177,6 @@
      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:libtool'    "DebugView - referenced by Java class>>flushClasses "
@@ -193,8 +193,10 @@
      for those, redefine requiredPrerequisites"
 
     ^ #(
+        #'stx:libjava/examples'
         #'stx:libjava/experiments'
         #'stx:libjava/tools'
+        #'stx:libjava/examples/jabber'
     )
 ! !
 
--- a/tools/JavaCompiler.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaCompiler.st	Sun Sep 22 21:12:02 2013 +0200
@@ -29,18 +29,11 @@
 Object subclass:#JavaCompiler
 	instanceVariableNames:'className imports packageName sourceCode sourceDir requestor
 		classloader problems'
-	classVariableNames:'Problems'
+	classVariableNames:'SynchronizationSemaphore'
 	poolDictionaries:''
 	category:'Languages-Java-Support-Compiling'
 !
 
-JavaParserII subclass:#ClassSourceAnalyzer
-	instanceVariableNames:'source package imports name terminator'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:JavaCompiler
-!
-
 !JavaCompiler class methodsFor:'documentation'!
 
 copyright
@@ -105,9 +98,9 @@
 
     "/ please change as required (and remove this comment)
 
-    Problems := WeakIdentityDictionary new.
+    SynchronizationSemaphore := Semaphore forMutualExclusion
 
-    "Modified: / 15-04-2013 / 21:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 10:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCompiler class methodsFor:'instance creation'!
@@ -117,26 +110,14 @@
 
     "Created: / 15-12-2012 / 16:48:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-04-2013 / 20:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-newAnalyzer
-    ^ClassSourceAnalyzer new
-
-    "Created: / 15-12-2012 / 16:58:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCompiler class methodsFor:'accessing'!
 
-problems
-    ^Problems
+synchronizationSemaphore
+    ^ SynchronizationSemaphore
 
-    "Created: / 15-04-2013 / 21:39:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsForClass: aClass
-    ^Problems at: aClass ifAbsent:[#()].
-
-    "Created: / 15-04-2013 / 22:07:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-09-2013 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCompiler class methodsFor:'compiler interface'!
@@ -296,8 +277,10 @@
         ]
     ].
 
-    javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter') new: 
+    JavaCompiler synchronized:[    
+        javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter') new: 
                classloader.
+    ].
 
     javac compile: source.
 
@@ -319,164 +302,7 @@
 
     "Created: / 15-12-2012 / 23:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 16-12-2012 / 15:36:16 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 16-09-2013 / 13:54:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer class methodsFor:'accessing'!
-
-ignoredNames
-    ^super ignoredNames , self instVarNames
-
-    "Created: / 15-12-2012 / 17:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 29-03-2013 / 23:08:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer class methodsFor:'documentation'!
-
-copyright
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
-"
-!
-
-history
-
-    "Created: #imports / 08-12-2012 / 20:01:41 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: #imports / 09-12-2012 / 09:21:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-!
-
-version_SVN
-    ^ 'Id::                                                                                                                        '
-! !
-
-!JavaCompiler::ClassSourceAnalyzer class methodsFor:'instance creation'!
-
-analyze: javaSourceCode
-
-    ^ self new analyze: javaSourceCode.
-
-    "Created: / 08-12-2012 / 18:47:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified (format): / 15-12-2012 / 16:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-new
-    ^self newStartingAt: #compilationUnit
-
-    "Created: / 15-12-2012 / 17:15:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'accessing'!
-
-className
-    <resource: #obsolete>
-    ^ name
-
-    "Created: / 08-12-2012 / 18:53:53 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 15-12-2012 / 17:04:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-fullName
-    ^package isNil 
-        ifTrue:[name]
-        ifFalse:[package , '.' , name]
-
-    "Created: / 29-03-2013 / 23:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-imports
-    ^imports ? #()
-
-    "Created: / 08-12-2012 / 20:01:41 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 09-12-2012 / 09:21:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 15-12-2012 / 17:20:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-name
-    ^ name
-!
-
-package
-    ^ package
-!
-
-packageName
-    <resource: #obsolete>
-    ^package
-
-    "Created: / 08-12-2012 / 18:50:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 15-12-2012 / 17:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar'!
-
-importDeclaration 
-"
-    ^ ((self importKW) , (self staticKW) optional , qualifiedNameForImport 
-        , (self tokenFor:';')).
-        "
-    ^ super importDeclaration ==> [:nodes | 
-            imports isNil ifTrue:[imports := OrderedCollection new].
-            imports add: (nodes at:3) value.
-    ].
-
-    "Created: / 15-12-2012 / 17:28:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-packageDeclaration 
-
-"/        ^ (self  packageKW) , qualifiedName , (self tokenFor:';')
-    ^super packageDeclaration ==> [:nodes| package := nodes second ].
-
-    "Created: / 15-12-2012 / 22:44:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar-classes'!
-
-typeNameIdentifier
-    "    
-    ^identifier
-    "
-    ^super typeNameIdentifier  ==> [:ident | 
-            name := ident.
-            terminator value
-    ]
-
-    "Created: / 15-04-2013 / 21:24:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'parsing'!
-
-analyze: aString 
-    source := aString.
-    terminator := [ ^ self ].
-    self parse: source.
-
-    "Created: / 08-12-2012 / 18:48:56 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: / 15-12-2012 / 17:04:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 10:57:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCompiler class methodsFor:'documentation'!
--- a/tools/JavaLintHighlighter.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaLintHighlighter.st	Sun Sep 22 21:12:02 2013 +0200
@@ -46,7 +46,10 @@
 !
 
 problems:aCollection
+    self reset.
     problems := aCollection.
+
+    "Modified: / 20-09-2013 / 03:16:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaLintHighlighter methodsFor:'accessing-emphasis'!
@@ -168,14 +171,14 @@
 !JavaLintHighlighter methodsFor:'formatting-private'!
 
 format: text
-    ^ (class isNil"not yet accepted" or:[class isJavaClass]) ifTrue:[
+    ^ problems notEmptyOrNil ifTrue:[
         self format: text problems: problems
     ] ifFalse:[
         text
     ]
 
     "Created: / 04-08-2011 / 23:51:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-09-2013 / 10:04:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-09-2013 / 05:07:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 format: source problem: problem
--- a/tools/JavaLintService.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaLintService.st	Sun Sep 22 21:12:02 2013 +0200
@@ -148,11 +148,11 @@
     | lang |
 
     ((lang := codeView language) isNil or:[lang isJava not]) ifTrue:[ ^ self ].
-    highlighter reset.
+"/    highlighter reset.
     super sourceChanged:force.
 
     "Created: / 18-02-2012 / 22:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-09-2013 / 09:41:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-09-2013 / 03:14:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaLintService methodsFor:'event handling'!
@@ -275,7 +275,10 @@
 
                             compiler := JavaCompiler new.
                             newProblems := compiler check: oldCode.
-                            rehighlight := newProblems notEmpty or:[ problems notEmpty ].
+                            rehighlight := newProblems notEmptyOrNil or:[ problems notEmptyOrNil ].
+                            rehighlight ifTrue:[
+                                 problems := newProblems.
+                            ].
                             highlighter problem: problems ? #()
                         ].
                         rehighlight ifTrue:[
@@ -292,7 +295,7 @@
     ]
 
     "Created: / 24-01-2012 / 12:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-09-2013 / 00:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-09-2013 / 03:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 rehighlight: delayed
@@ -303,13 +306,13 @@
         service := self service: Tools::CodeHighlightingService name
     ].
     service notNil ifTrue:[
-        highlighter reset.
+        "/highlighter reset.
         highlighter problems: problems.
         service sourceChanged: true.
     ]
 
     "Created: / 27-01-2012 / 17:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-09-2013 / 13:33:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-09-2013 / 03:12:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showInfoWindowForLine: lineNo 
--- a/tools/JavaParseNode.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaParseNode.st	Sun Sep 22 21:12:02 2013 +0200
@@ -104,12 +104,12 @@
         | v |
 
         v := self instVarAt: i.
-        (v isKindOf: JavaParseNode) ifTrue:[
+        (v isKindOf: ParseNode) ifTrue:[
             aBlock value: n value: v
         ] ifFalse:[
             (v isSequenceable) ifTrue:[
                 v withIndexDo:[ :v2 :i2|
-                    (v2 isKindOf: JavaParseNode) ifTrue:[
+                    (v2 isKindOf: ParseNode) ifTrue:[
                         aBlock value: (n, '[' , i2 printString , ']') value: v2.
                     ]
                 ]
@@ -117,7 +117,7 @@
         ]
     ]
 
-    "Modified: / 25-08-2013 / 10:50:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 18:18:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaParseNode methodsFor:'evaluation'!
--- a/tools/JavaSourceDocument.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaSourceDocument.st	Sun Sep 22 21:12:02 2013 +0200
@@ -88,17 +88,17 @@
     ^ javaClass
 !
 
-javaClass:aJavaClass
+javaClass:aJavaClass    
     aJavaClass == javaClass ifTrue:[
         ^ self
     ].
-    javaClass notNil ifTrue:[
-        self error: 'Class already set!!'
-    ].
+    self assert: javaClass isNil message: 'javaClass already set'.
+    self assert: aJavaClass isJavaClass message: 'aJavaClass not a Java class'.
+
     javaClass := aJavaClass.
     self initializeSourceTree.
 
-    "Modified: / 06-09-2013 / 17:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-09-2013 / 04:42:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceLineToOffset: lineNr
@@ -239,13 +239,16 @@
 initializeSourceRefsInMethods
     | enclosingMethod typeName typeNode |
 
+
     enclosingMethod := javaClass enclosingMethod.
     (enclosingMethod isNil and:[javaClass isAnonymous]) ifTrue:[
         enclosingMethod := javaClass topEnclosingClass compiledMethodAt: #'<clinit>()V'. 
     ].
     enclosingMethod notNil ifTrue:[
         javaClass methodDictionary  keysAndValuesDo: [:selector :method | 
-            method setSource: (enclosingMethod source; getSource).
+            "/ ensure class is parsed...
+            enclosingMethod sourceDocument sourceTree.
+            method setSource: (enclosingMethod getSource).
         ].
         ^ self
     ].
@@ -341,7 +344,7 @@
         ]
 
     "Created: / 07-09-2013 / 01:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-09-2013 / 11:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-09-2013 / 12:19:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeSourceTree
@@ -357,8 +360,10 @@
             source notNil ifTrue: [
                 unit := (Java classForName: 'stx.libjava.tools.Source') new.
                 unit setContents: source.
-                parser := (Java classForName: 'stx.libjava.tools.parser.Parser') 
-                        new.
+                JavaCompiler synchronized:[
+                    parser := (Java classForName: 'stx.libjava.tools.parser.Parser') 
+                            new.
+                ].
                 sourceTree := parser parse: unit diet: true resolve: false.
                 sourceLineEnds := parser scanner getLineEnds.
                 self initializeSourceRefsInMethods.
@@ -372,7 +377,7 @@
     task resume.
 
     "Created: / 06-09-2013 / 17:50:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-09-2013 / 17:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-09-2013 / 10:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaSourceDocument methodsFor:'printing & storing'!
--- a/tools/JavaSourceHighlighter.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaSourceHighlighter.st	Sun Sep 22 21:12:02 2013 +0200
@@ -96,6 +96,18 @@
 
 !JavaSourceHighlighter class methodsFor:'formatting'!
 
+_formatClassDefinition:newCode line: ln number: lnr in:cls
+    ^self new formatClassDefinition:newCode line: ln number: lnr in:cls.
+
+    "Created: / 21-09-2013 / 04:22:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
+    ^ self new formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
+
+    "Created: / 21-09-2013 / 04:22:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 formatClass: javaClass
 
     ^self new formatClassDefinition: javaClass source in: javaClass
@@ -117,12 +129,6 @@
     "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-formatClassDefinition:newCode line: ln number: lnr in:cls
-    ^self new formatClassDefinition:newCode line: ln number: lnr in:cls.
-
-    "Created: / 04-08-2013 / 00:25:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 formatExpression:source in:class
 
     ^self new formatExpression:source in:class
@@ -156,32 +162,11 @@
     ^self new formatMethod:mth source:source in:class using: preferences elementsInto: elements
 
     "Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
-    ^ self new formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
-
-    "Created: / 04-08-2013 / 00:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaSourceHighlighter methodsFor:'formatting'!
 
-formatClassDefinition:source in:class
-
-    ^ self format: source kind: #start in: class
-
-    "Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatClassDefinition:source in:class elementsInto: els
-
-    sourceIndex := els.
-    ^self formatClassDefinition:source in:class
-
-    "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatClassDefinition:newCode line: line number: lnr in:cls
+_formatClassDefinition:newCode line: line number: lnr in:cls
     | scanner |
 
     line isEmptyOrNil ifTrue:[ ^  nil ].
@@ -199,8 +184,44 @@
     ].
     ^ sourceText
 
-    "Created: / 04-08-2013 / 00:25:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 05-09-2013 / 02:54:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-09-2013 / 04:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_formatMethod:mthd source:newCode line: line number: lnr in:cls using:syntaxPreferences
+    | scanner |
+
+    line isEmptyOrNil ifTrue:[ ^  nil ].
+
+    sourceText := line asText.
+    preferences := syntaxPreferences.
+    preferences isNil ifTrue:[
+        preferences := UserPreferences current.
+    ]. 
+    scanner := Scanner for: line asString.
+    scanner highlighter: self.
+    [
+        [ scanner nextToken ~~ #EOF ] whileTrue.
+    ] on: Error do:[
+
+    ].
+    ^ sourceText
+
+    "Created: / 21-09-2013 / 04:20:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+formatClassDefinition:source in:class
+
+    ^ self format: source kind: #start in: class
+
+    "Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+formatClassDefinition:source in:class elementsInto: els
+
+    sourceIndex := els.
+    ^self formatClassDefinition:source in:class
+
+    "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 formatExpression:source in:class
@@ -315,7 +336,7 @@
     preferences isNil ifTrue:[
         preferences := UserPreferences current.
     ].
-    cacheIt := kind == #start and: [class notNil].
+    cacheIt := kind == #start and: [class notNil and:[class isJavaClass]].
     cacheIt ifTrue:[
         document := JavaSourceDocument cachedDocumentFor: class theNonMetaclass.
         document notNil ifTrue:[
@@ -350,7 +371,9 @@
     ] ifFalse:[
         sourceUnit := (Java classForName:'stx.libjava.tools.Source') new.
         sourceUnit setContents: source string.
-        parser := (Java classForName:'stx.libjava.tools.text.Highlighter') new.
+        JavaCompiler synchronized:[
+            parser := (Java classForName:'stx.libjava.tools.text.Highlighter') new.
+        ].
         parser setMarker: marker.
         (sourceIndex notNil and:[sourceIndex isKindOf: SmallSense::ParseTreeIndex]) ifTrue:[
             | indexer |
@@ -375,7 +398,7 @@
     ]
 
     "Created: / 17-03-2012 / 14:02:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-09-2013 / 01:31:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-09-2013 / 04:46:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaSourceHighlighter methodsFor:'queries'!
--- a/tools/Make.proto	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/Make.proto	Sun Sep 22 21:12:02 2013 +0200
@@ -141,9 +141,10 @@
 	cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../goodies/petitparser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
@@ -167,6 +168,7 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintPopupWindow.$(O) JavaLintPopupWindow.$(H): JavaLintPopupWindow.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -192,7 +194,6 @@
 $(OUTDIR)JavaParserII.$(O) JavaParserII.$(H): JavaParserII.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParserI.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaScanner.$(O) JavaScanner.$(H): JavaScanner.st $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaSourceFile.$(O) JavaSourceFile.$(H): JavaSourceFile.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParserII.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParserI.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodLikeDeclarationNode.$(O) JavaMethodLikeDeclarationNode.$(H): JavaMethodLikeDeclarationNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaDeclarationNode.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParserII.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParserI.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaSourceHighlighter.$(O) JavaSourceHighlighter.$(H): JavaSourceHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(STCHDR)
--- a/tools/Make.spec	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/Make.spec	Sun Sep 22 21:12:02 2013 +0200
@@ -52,6 +52,7 @@
 COMMON_CLASSES= \
 	JavaCodeBundleEditor \
 	JavaCodeLibraryEditor \
+	JavaCompiler \
 	JavaLintAnnotation \
 	JavaLintHighlighter \
 	JavaLintPopupWindow \
@@ -77,7 +78,6 @@
 	JavaParserII \
 	JavaScanner \
 	JavaSourceFile \
-	JavaCompiler \
 	JavaMethodLikeDeclarationNode \
 	JavaParser \
 	JavaSourceHighlighter \
@@ -96,6 +96,7 @@
 COMMON_OBJS= \
     $(OUTDIR_SLASH)JavaCodeBundleEditor.$(O) \
     $(OUTDIR_SLASH)JavaCodeLibraryEditor.$(O) \
+    $(OUTDIR_SLASH)JavaCompiler.$(O) \
     $(OUTDIR_SLASH)JavaLintAnnotation.$(O) \
     $(OUTDIR_SLASH)JavaLintHighlighter.$(O) \
     $(OUTDIR_SLASH)JavaLintPopupWindow.$(O) \
@@ -121,7 +122,6 @@
     $(OUTDIR_SLASH)JavaParserII.$(O) \
     $(OUTDIR_SLASH)JavaScanner.$(O) \
     $(OUTDIR_SLASH)JavaSourceFile.$(O) \
-    $(OUTDIR_SLASH)JavaCompiler.$(O) \
     $(OUTDIR_SLASH)JavaMethodLikeDeclarationNode.$(O) \
     $(OUTDIR_SLASH)JavaParser.$(O) \
     $(OUTDIR_SLASH)JavaSourceHighlighter.$(O) \
--- a/tools/abbrev.stc	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/abbrev.stc	Sun Sep 22 21:12:02 2013 +0200
@@ -3,6 +3,7 @@
 # it provides information about a classes filename, category and especially namespace.
 JavaCodeBundleEditor JavaCodeBundleEditor stx:libjava/tools 'Languages-Java-Tools' 1
 JavaCodeLibraryEditor JavaCodeLibraryEditor stx:libjava/tools 'Languages-Java-Tools' 1
+JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
 JavaLintAnnotation JavaLintAnnotation stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
 JavaLintHighlighter JavaLintHighlighter stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
 JavaLintPopupWindow JavaLintPopupWindow stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 1
@@ -34,7 +35,6 @@
 JavaParserII JavaParserII stx:libjava/tools 'Languages-Java-Parser' 0
 JavaScanner JavaScanner stx:libjava/tools 'Languages-Java-Parser' 3
 JavaSourceFile JavaSourceFile stx:libjava/tools 'Languages-Java-Parser-AST' 0
-JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
 JavaMethodLikeDeclarationNode JavaMethodLikeDeclarationNode stx:libjava/tools 'Languages-Java-Parser-AST' 0
 JavaParser JavaParser stx:libjava/tools 'Languages-Java-Parser' 0
 JavaSourceHighlighter JavaSourceHighlighter stx:libjava/tools 'Languages-Java-Tools-Source' 0
--- a/tools/bc.mak	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/bc.mak	Sun Sep 22 21:12:02 2013 +0200
@@ -58,9 +58,10 @@
 	pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\goodies\petitparser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
@@ -91,6 +92,7 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintPopupWindow.$(O) JavaLintPopupWindow.$(H): JavaLintPopupWindow.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -116,7 +118,6 @@
 $(OUTDIR)JavaParserII.$(O) JavaParserII.$(H): JavaParserII.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParserI.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaScanner.$(O) JavaScanner.$(H): JavaScanner.st $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaSourceFile.$(O) JavaSourceFile.$(H): JavaSourceFile.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParserII.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParserI.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodLikeDeclarationNode.$(O) JavaMethodLikeDeclarationNode.$(H): JavaMethodLikeDeclarationNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaDeclarationNode.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParserII.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParserI.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaSourceHighlighter.$(O) JavaSourceHighlighter.$(H): JavaSourceHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(STCHDR)
--- a/tools/libInit.cc	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/libInit.cc	Sun Sep 22 21:12:02 2013 +0200
@@ -29,6 +29,7 @@
 __BEGIN_PACKAGE2__("libstx_libjava_tools", _libstx_libjava_tools_Init, "stx:libjava/tools");
 _JavaCodeBundleEditor_Init(pass,__pRT__,snd);
 _JavaCodeLibraryEditor_Init(pass,__pRT__,snd);
+_JavaCompiler_Init(pass,__pRT__,snd);
 _JavaLintAnnotation_Init(pass,__pRT__,snd);
 _JavaLintHighlighter_Init(pass,__pRT__,snd);
 _JavaLintPopupWindow_Init(pass,__pRT__,snd);
@@ -54,7 +55,6 @@
 _JavaParserII_Init(pass,__pRT__,snd);
 _JavaScanner_Init(pass,__pRT__,snd);
 _JavaSourceFile_Init(pass,__pRT__,snd);
-_JavaCompiler_Init(pass,__pRT__,snd);
 _JavaMethodLikeDeclarationNode_Init(pass,__pRT__,snd);
 _JavaParser_Init(pass,__pRT__,snd);
 _JavaSourceHighlighter_Init(pass,__pRT__,snd);
--- a/tools/stx_libjava_tools.st	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/stx_libjava_tools.st	Sun Sep 22 21:12:02 2013 +0200
@@ -27,7 +27,7 @@
      (the browser has a menu function for that)"
 
     ^ #(
-        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of JavaCompiler::ClassSourceAnalyzer "
+        #'stx:goodies/petitparser'    "PPCompositeParser - superclass of JavaParser "
         #'stx:libbasic'    "Autoload - superclass of JavaParserIITests "
         #'stx:libcomp'    "ParseNode - superclass of JavaAnnotationDeclarationNode "
         #'stx:libjava'    "JavaObject - extended "
@@ -146,6 +146,7 @@
         "<className> or (<className> attributes...) in load order"
         JavaCodeBundleEditor
         JavaCodeLibraryEditor
+        JavaCompiler
         JavaLintAnnotation
         JavaLintHighlighter
         JavaLintPopupWindow
@@ -177,7 +178,6 @@
         JavaParserII
         JavaScanner
         JavaSourceFile
-        JavaCompiler
         JavaMethodLikeDeclarationNode
         JavaParser
         JavaSourceHighlighter
--- a/tools/tools.rc	Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/tools.rc	Sun Sep 22 21:12:02 2013 +0200
@@ -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.3.0\0"
-      VALUE "ProductDate", "Tue, 17 Sep 2013 10:11:48 GMT\0"
+      VALUE "ProductDate", "Sat, 21 Sep 2013 04:20:50 GMT\0"
     END
 
   END
--- a/vcmake.bat	Fri Sep 20 00:10:48 2013 +0200
+++ b/vcmake.bat	Sun Sep 22 21:12:02 2013 +0200
@@ -18,6 +18,20 @@
 
 
 @echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call vcmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call vcmake %1 %2
+@cd ..
+
+@echo "***********************************"
 @echo "Buildung stx/libjava/tools
 @echo "***********************************"
 @cd tools