Jelajahi Sumber

Merge branch 'master' into helios

Conflicts:
	js/Kernel-Collections.deploy.js
	js/Kernel-Collections.js
	js/Kernel-Methods.deploy.js
	js/Kernel-Methods.js
Nicolas Petton 12 tahun lalu
induk
melakukan
a654937085
69 mengubah file dengan 9056 tambahan dan 5235 penghapusan
  1. 3 1
      .travis.yml
  2. 12 36
      Gruntfile.js
  3. 17 3
      README.md
  4. 8 8
      bin/amberc.js
  5. 1 1
      grunt/tasks/grunt-amberc.js
  6. 17 0
      grunt/tasks/grunt-css2js.js
  7. 29 0
      grunt/tasks/grunt-peg.js
  8. 82 59
      js/Benchfib.deploy.js
  9. 88 65
      js/Benchfib.js
  10. 206 103
      js/Canvas.deploy.js
  11. 206 103
      js/Canvas.js
  12. 218 109
      js/Compiler-AST.deploy.js
  13. 218 109
      js/Compiler-AST.js
  14. 138 67
      js/Compiler-Core.deploy.js
  15. 138 67
      js/Compiler-Core.js
  16. 22 11
      js/Compiler-Exceptions.deploy.js
  17. 22 11
      js/Compiler-Exceptions.js
  18. 245 123
      js/Compiler-IR.deploy.js
  19. 247 125
      js/Compiler-IR.js
  20. 269 213
      js/Compiler-Inlining.deploy.js
  21. 267 240
      js/Compiler-Inlining.js
  22. 260 158
      js/Compiler-Interpreter.deploy.js
  23. 264 170
      js/Compiler-Interpreter.js
  24. 246 124
      js/Compiler-Semantic.deploy.js
  25. 247 125
      js/Compiler-Semantic.js
  26. 256 104
      js/Compiler-Tests.deploy.js
  27. 271 104
      js/Compiler-Tests.js
  28. 18 9
      js/Examples.deploy.js
  29. 18 9
      js/Examples.js
  30. 246 121
      js/IDE.deploy.js
  31. 246 121
      js/IDE.js
  32. 159 77
      js/Importer-Exporter.deploy.js
  33. 159 77
      js/Importer-Exporter.js
  34. 56 28
      js/Kernel-Announcements.deploy.js
  35. 56 28
      js/Kernel-Announcements.js
  36. 265 138
      js/Kernel-Classes.deploy.js
  37. 264 140
      js/Kernel-Classes.js
  38. 257 128
      js/Kernel-Collections.deploy.js
  39. 257 128
      js/Kernel-Collections.js
  40. 65 32
      js/Kernel-Exceptions.deploy.js
  41. 65 32
      js/Kernel-Exceptions.js
  42. 172 84
      js/Kernel-Methods.deploy.js
  43. 172 84
      js/Kernel-Methods.js
  44. 225 122
      js/Kernel-Objects.deploy.js
  45. 234 134
      js/Kernel-Objects.js
  46. 335 174
      js/Kernel-Tests.deploy.js
  47. 335 174
      js/Kernel-Tests.js
  48. 26 12
      js/Kernel-Transcript.deploy.js
  49. 26 12
      js/Kernel-Transcript.js
  50. 120 62
      js/SUnit-Tests.deploy.js
  51. 120 62
      js/SUnit-Tests.js
  52. 193 96
      js/SUnit.deploy.js
  53. 193 96
      js/SUnit.js
  54. 49 24
      js/Spaces.deploy.js
  55. 49 24
      js/Spaces.js
  56. 8 19
      js/boot.js
  57. 318 160
      js/parser.js
  58. 10 6
      js/parser.pegjs
  59. 5 1
      package.json
  60. 4 4
      server/FileServer.st
  61. 221 196
      server/server.js
  62. 23 7
      st/Compiler-IR.st
  63. 11 59
      st/Compiler-Inlining.st
  64. 5 1
      st/Compiler-Semantic.st
  65. 22 0
      st/Compiler-Tests.st
  66. 5 6
      st/Kernel-Classes.st
  67. 6 139
      st/Kernel-Collections.st
  68. 35 39
      st/Kernel-Objects.st
  69. 6 131
      st/Kernel-Tests.st

+ 3 - 1
.travis.yml

@@ -1,3 +1,5 @@
 language: node_js
 language: node_js
 node_js:
 node_js:
-  - 0.8
+  - 0.8
+before_script:
+  - npm install -g grunt-cli

+ 12 - 36
grunt.js → Gruntfile.js

@@ -2,25 +2,28 @@ module.exports = function(grunt) {
 
 
   grunt.loadTasks('./grunt/tasks');
   grunt.loadTasks('./grunt/tasks');
 
 
-  grunt.loadNpmTasks('grunt-image-embed');
-  grunt.loadNpmTasks('grunt-contrib-mincss');
+  grunt.loadNpmTasks('grunt-contrib-jshint');
+//  grunt.loadNpmTasks('grunt-image-embed');
+//  grunt.loadNpmTasks('grunt-contrib-mincss');
 
 
-  grunt.registerTask('default', 'pegjs amberc:all');
+  grunt.registerTask('default', ['peg', 'amberc:all']);
 
 
   grunt.initConfig({
   grunt.initConfig({
-    pkg: '<json:package.json>',
+    pkg: grunt.file.readJSON('package.json'),
 
 
     meta: {
     meta: {
       banner: '/*!\n <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> \n License: <%= pkg.license.type %> \n*/\n'
       banner: '/*!\n <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> \n License: <%= pkg.license.type %> \n*/\n'
     },
     },
 
 
-    pegjs: {
+    peg: {
       amber_parser: {
       amber_parser: {
+        options: {
+          trackLineAndColumn: true,
+          cache: true,
+          export_var: 'smalltalk.parser'
+        },
         src: 'js/parser.pegjs',
         src: 'js/parser.pegjs',
         dest: 'js/parser.js',
         dest: 'js/parser.js',
-        trackLineAndColumn: true,
-        cache: true,
-        export_var: 'smalltalk.parser'
       }
       }
     },
     },
 
 
@@ -108,7 +111,7 @@ module.exports = function(grunt) {
       }
       }
     },
     },
 
 
-    lint: {
+    jshint: {
       amber: ['js/*.js'],
       amber: ['js/*.js'],
       server: ['server/*.js'],
       server: ['server/*.js'],
       repl: ['repl/*.js'],
       repl: ['repl/*.js'],
@@ -174,31 +177,4 @@ module.exports = function(grunt) {
     }
     }
 */
 */
   });
   });
-
-  grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
-    var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read);
-    var content =
-      'var css="' + cssContent + '";' +
-      'var cssTag = document.createElement("link");' +
-      'document.head = document.head || document.getElementsByTagName("head")[0];' +
-      'cssTag.href = "data:text/css,"+css;' +
-      'cssTag.rel = "stylesheet";' +
-      'document.head.appendChild(cssTag);';
-
-    grunt.file.write(this.data.dest, content);
-
-    grunt.log.writeln('File "' + this.data.dest + '" created.');
-  });
-
-  grunt.registerMultiTask('pegjs', 'Generate JavaScript parser from PEG.js description', function() {
-    var PEG = require('pegjs');
-    var pegOptions = {
-      cache: this.data.cache || false,
-      trackLineAndColumn: this.data.trackLineAndColumn || false
-    };
-    var export_var = this.data.export_var || 'module.exports';
-    var parser = PEG.buildParser(grunt.file.read(this.data.src), pegOptions);
-    var content = export_var + ' = ' + parser.toSource() + ';\n';
-    grunt.file.write(this.data.dest, content);
-  });
 };
 };

+ 17 - 3
README.md

@@ -27,12 +27,26 @@ Amber is released under the MIT license. All contributions made for inclusion ar
 Building Amber
 Building Amber
 --------------
 --------------
 
 
-Since 0.10.0 Amber uses [Grunt.js](http://gruntjs.com/) as build system.
-To compile Amber on the commandline execute the following commands:
+Amber uses [Grunt.js](http://gruntjs.com/) as build system since version `0.10.0`.
 
 
+If you already have Grunt.js v0.3.x installed locally run the following (otherwise ignore these lines):
+
+    cd ${Amber_DIR}
+    npm uninstall grunt
+
+To install Grunt.js v0.4.x on the commandline execute the following commands:
+    
+    npm install -g grunt-cli grunt-init
     cd ${Amber_DIR}
     cd ${Amber_DIR}
     npm install
     npm install
-    ./node_modules/grunt/bin/grunt
+
+And finally, compile Amber using the following command:
+
+    cd ${Amber_DIR}
+    grunt
+
+For Windows support check the [Grunt.js on Windows](http://gruntjs.com/frequently-asked-questions#does-grunt-work-on-windows) page.
+
 
 
 More infos
 More infos
 ----------
 ----------

+ 8 - 8
bin/amberc.js

@@ -183,7 +183,7 @@ AmberC.prototype.check_for_closure_compiler = function(callback) {
 				callback();
 				callback();
 				return;
 				return;
 			}
 			}
-			path.exists(self.closure_jar, function(exists) {
+			fs.exists(self.closure_jar, function(exists) {
 				if (!exists) {
 				if (!exists) {
 					console.warn('Can not find Closure compiler at: ' + self.closure_jar);
 					console.warn('Can not find Closure compiler at: ' + self.closure_jar);
 					defaults.closure = false;
 					defaults.closure = false;
@@ -214,11 +214,11 @@ AmberC.prototype.resolve_js = function(filename, callback) {
 	var jsFile = baseName + this.defaults.loadsuffix + '.js';
 	var jsFile = baseName + this.defaults.loadsuffix + '.js';
 	var amberJsFile = path.join(this.amber_dir, 'js', jsFile);
 	var amberJsFile = path.join(this.amber_dir, 'js', jsFile);
 	console.log('Resolving: ' + jsFile);
 	console.log('Resolving: ' + jsFile);
-	path.exists(jsFile, function(exists) {
+	fs.exists(jsFile, function(exists) {
 		if (exists) {
 		if (exists) {
 			callback(jsFile);
 			callback(jsFile);
 		} else {
 		} else {
-			path.exists(amberJsFile, function(exists) {
+			fs.exists(amberJsFile, function(exists) {
 				if (exists) {
 				if (exists) {
 					callback(amberJsFile);
 					callback(amberJsFile);
 				} else {
 				} else {
@@ -273,11 +273,11 @@ AmberC.prototype.collect_st_files = function(stFiles, callback) {
 		console.log('Checking: ' + stFile);
 		console.log('Checking: ' + stFile);
 		var category = path.basename(stFile, '.st');
 		var category = path.basename(stFile, '.st');
 		var amberStFile = path.join(self.amber_dir, 'st', stFile);
 		var amberStFile = path.join(self.amber_dir, 'st', stFile);
-		path.exists(stFile, function(exists) {
+		fs.exists(stFile, function(exists) {
 			if (exists) {
 			if (exists) {
 				_callback(stFile, category);
 				_callback(stFile, category);
 			} else {
 			} else {
-				path.exists(amberStFile, function(exists) {
+				fs.exists(amberStFile, function(exists) {
 					if (exists) {
 					if (exists) {
 						_callback(amberStFile, category);
 						_callback(amberStFile, category);
 					} else {
 					} else {
@@ -491,7 +491,7 @@ AmberC.prototype.verify = function() {
 	console.log('Verifying if all .st files were compiled');
 	console.log('Verifying if all .st files were compiled');
 	var self = this;
 	var self = this;
 	async_map(this.defaults.compiled, function(file, callback) {
 	async_map(this.defaults.compiled, function(file, callback) {
-			path.exists(file, function(exists) {
+			fs.exists(file, function(exists) {
 				if (exists)
 				if (exists)
 					callback(null, null);
 					callback(null, null);
 				else
 				else
@@ -545,7 +545,7 @@ AmberC.prototype.compose_js_files = function() {
 	});
 	});
 
 
 	program_files.forEach(function(file) {
 	program_files.forEach(function(file) {
-		if(path.existsSync(file)) {
+		if(fs.existsSync(file)) {
 			console.log('Adding : ' + file);
 			console.log('Adding : ' + file);
 			fileStream.write(fs.readFileSync(file));
 			fileStream.write(fs.readFileSync(file));
 		} else {
 		} else {
@@ -558,7 +558,7 @@ AmberC.prototype.compose_js_files = function() {
 		fileStream.write('smalltalk.' + defaults.main + '._main()');
 		fileStream.write('smalltalk.' + defaults.main + '._main()');
 	}
 	}
 
 
-	if (undefined !== defaults.mainfile && path.existsSync(defaults.mainfile)) {
+	if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) {
 		console.log('Adding main file: ' + defaults.mainfile);
 		console.log('Adding main file: ' + defaults.mainfile);
 		fileStream.write(fs.readFileSync(defaults.mainfile));
 		fileStream.write(fs.readFileSync(defaults.mainfile));
 	}
 	}

+ 1 - 1
grunt/tasks/amberc-grunt.js → grunt/tasks/grunt-amberc.js

@@ -136,7 +136,7 @@ module.exports = function(grunt) {
     });
     });
 
 
     compiledFiles.forEach(function(file) {
     compiledFiles.forEach(function(file) {
-      if (path.existsSync(file)) {
+      if (fs.existsSync(file)) {
         console.log('Move: ' + file + ' -> ' + path.join(target_dir, file));
         console.log('Move: ' + file + ' -> ' + path.join(target_dir, file));
         fs.renameSync(file, path.join(target_dir, file));
         fs.renameSync(file, path.join(target_dir, file));
       }
       }

+ 17 - 0
grunt/tasks/grunt-css2js.js

@@ -0,0 +1,17 @@
+module.exports = function(grunt) {
+  grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
+    var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read);
+    var content =
+      'var css="' + cssContent + '";' +
+      'var cssTag = document.createElement("link");' +
+      'document.head = document.head || document.getElementsByTagName("head")[0];' +
+      'cssTag.href = "data:text/css,"+css;' +
+      'cssTag.rel = "stylesheet";' +
+      'document.head.appendChild(cssTag);';
+
+    grunt.file.write(this.data.dest, content);
+
+    grunt.log.writeln('File "' + this.data.dest + '" created.');
+  });
+
+};

+ 29 - 0
grunt/tasks/grunt-peg.js

@@ -0,0 +1,29 @@
+module.exports = function(grunt) {
+
+  var PEG = require('pegjs');
+
+  /**
+    Full config looks like this:
+    pegjs: {
+       my_parser: {
+         options: {                       // optional
+           trackLineAndColumn: true,      // default: false
+           cache: true,                   // default: false
+           export_var: 'smalltalk.parser' // default: module.exports
+         },
+         src: 'parser.pegjs',
+         dest: 'parser.js',
+       }
+     },
+   */
+  grunt.registerMultiTask('peg', 'Generate JavaScript parser from PEG.js grammar description', function() {
+    var options = this.options({
+      cache: false,
+      trackLineAndColumn: false,
+      export_var: 'module.exports'
+    });
+    var parser = PEG.buildParser(grunt.file.read(this.data.src), options);
+    var content = options.export_var + ' = ' + parser.toSource() + ';\n';
+    grunt.file.write(this.data.dest, content);
+  });
+};

+ 82 - 59
js/Benchfib.deploy.js

@@ -8,9 +8,10 @@ selector: "main",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var result;
 var result;
-return smalltalk.withContext(function($ctx1) { 
result=_st((0))._tinyBenchmarks();
+return smalltalk.withContext(function($ctx1) { 
+result=_st((0))._tinyBenchmarks();
 _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
 _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
-return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result}, smalltalk.Benchfib.klass)})},
+return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result},smalltalk.Benchfib.klass)})},
 messageSends: ["tinyBenchmarks", "log:", ","]}),
 messageSends: ["tinyBenchmarks", "log:", ","]}),
 smalltalk.Benchfib.klass);
 smalltalk.Benchfib.klass);
 
 
@@ -21,7 +22,8 @@ smalltalk.method({
 selector: "benchFib",
 selector: "benchFib",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self).__lt((2));
 $2=_st(self).__lt((2));
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=(1);
 $1=(1);
@@ -29,7 +31,7 @@ $1=(1);
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 };
 };
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"benchFib",{}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"benchFib",{},smalltalk.Number)})},
 messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"]}),
 messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"]}),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -40,42 +42,45 @@ selector: "benchmark",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var size,flags,prime,k,count;
 var size,flags,prime,k,count;
-return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$4,$2,$6;
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 size=(8190);
 size=(8190);
-$1=self;
-$2=(function(iter){
-return smalltalk.withContext(function($ctx2) {
count=(0);
+_st((1))._to_do_(self,(function(iter){
+return smalltalk.withContext(function($ctx2) {
+count=(0);
 count;
 count;
-flags=_st((smalltalk.Array || Array))._new();
+flags=_st($Array())._new();
 flags;
 flags;
 _st(size)._timesRepeat_((function(){
 _st(size)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(flags)._add_(true);
+return smalltalk.withContext(function($ctx3) {
+return _st(flags)._add_(true);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-$3=size;
-$4=(function(i){
-return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
-if(smalltalk.assert($5)){
+return _st((1))._to_do_(size,(function(i){
+return smalltalk.withContext(function($ctx3) {
+$1=_st(flags)._at_(i);
+if(smalltalk.assert($1)){
 prime=_st(i).__plus((1));
 prime=_st(i).__plus((1));
 prime;
 prime;
 k=_st(i).__plus(prime);
 k=_st(i).__plus(prime);
 k;
 k;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
+return smalltalk.withContext(function($ctx4) {
+return _st(k).__lt_eq(size);
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx4) {
_st(flags)._at_put_(k,false);
+return smalltalk.withContext(function($ctx4) {
+_st(flags)._at_put_(k,false);
 k=_st(k).__plus(prime);
 k=_st(k).__plus(prime);
 return k;
 return k;
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
 count=_st(count).__plus((1));
 count=_st(count).__plus((1));
 return count;
 return count;
 };
 };
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})});
-return _st((1))._to_do_($3,$4);
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})});
-_st((1))._to_do_($1,$2);
-$6=count;
-return $6;
-}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count}, smalltalk.Number)})},
+}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})}));
+$2=count;
+return $2;
+}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},smalltalk.Number)})},
 messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"]}),
 messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"]}),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -85,11 +90,12 @@ smalltalk.method({
 selector: "jsbenchFib",
 selector: "jsbenchFib",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
if (this < 2) {
+return smalltalk.withContext(function($ctx1) { 
+if (this < 2) {
 return 1;
 return 1;
 } else {
 } else {
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{}, smalltalk.Number)})},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},smalltalk.Number)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -99,29 +105,30 @@ smalltalk.method({
 selector: "jsbenchmark",
 selector: "jsbenchmark",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 var size = 8190;
 var size = 8190;
 var count;
 var count;
 for (var z=0;z<this;z++) {
 for (var z=0;z<this;z++) {
-  count = 0;
-  var flags = new Array();
-  for (var p=0; p<size; p++) {
-    flags[p] = true;
-  }
-  for (var i=1;i<=size;i++) {
-    if (flags[i-1]) {
-      var prime = i+1;
-      var k = i + prime;
-      while (k <= size) {
-        flags[k-1] = false;
-        k = k + prime;
-      }
-      count = count + 1;
-    }
-  }
+	count = 0;
+	var flags = new Array();
+	for (var p=0; p<size; p++) {
+	flags[p] = true;
+	}
+	for (var i=1;i<=size;i++) {
+		if (flags[i-1]) {
+			var prime = i+1;
+			var k = i + prime;
+			while (k <= size) {
+				flags[k-1] = false;
+				k = k + prime;
+			}
+			count = count + 1;
+		}
+	}
 }
 }
 return count;
 return count;
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{}, smalltalk.Number)})},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},smalltalk.Number)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -132,33 +139,41 @@ selector: "jstinyBenchmarks",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(n1)._jsbenchmark();
+return smalltalk.withContext(function($ctx2) {
+t1=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+return _st(n1)._jsbenchmark();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return smalltalk.withContext(function($ctx2) {
+n1=_st(n1).__star((2));
 return n1;
 return n1;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 n2=(28);
 n2=(28);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
r=_st(n2)._jsbenchFib();
+return smalltalk.withContext(function($ctx2) {
+t2=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+r=_st(n2)._jsbenchFib();
 return r;
 return r;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return smalltalk.withContext(function($ctx2) {
+n2=_st(n2).__plus((1));
 return n2;
 return n2;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"]}),
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"]}),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -169,33 +184,41 @@ selector: "tinyBenchmarks",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(n1)._benchmark();
+return smalltalk.withContext(function($ctx2) {
+t1=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+return _st(n1)._benchmark();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return smalltalk.withContext(function($ctx2) {
+n1=_st(n1).__star((2));
 return n1;
 return n1;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 n2=(16);
 n2=(16);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
r=_st(n2)._benchFib();
+return smalltalk.withContext(function($ctx2) {
+t2=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+r=_st(n2)._benchFib();
 return r;
 return r;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return smalltalk.withContext(function($ctx2) {
+n2=_st(n2).__plus((1));
 return n2;
 return n2;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"]}),
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"]}),
 smalltalk.Number);
 smalltalk.Number);
 
 

+ 88 - 65
js/Benchfib.js

@@ -9,9 +9,10 @@ category: 'not yet classified',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var result;
 var result;
-return smalltalk.withContext(function($ctx1) { 
result=_st((0))._tinyBenchmarks();
+return smalltalk.withContext(function($ctx1) { 
+result=_st((0))._tinyBenchmarks();
 _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
 _st(console)._log_(_st("0 tinyBenchmarks => ").__comma(result));
-return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result}, smalltalk.Benchfib.klass)})},
+return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result},smalltalk.Benchfib.klass)})},
 args: [],
 args: [],
 source: "main\x0a\x0a\x09| result |\x0a\x09result := 0 tinyBenchmarks.\x0a\x09console log: '0 tinyBenchmarks => ' , result",
 source: "main\x0a\x0a\x09| result |\x0a\x09result := 0 tinyBenchmarks.\x0a\x09console log: '0 tinyBenchmarks => ' , result",
 messageSends: ["tinyBenchmarks", "log:", ","],
 messageSends: ["tinyBenchmarks", "log:", ","],
@@ -27,7 +28,8 @@ selector: "benchFib",
 category: '*Benchfib',
 category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self).__lt((2));
 $2=_st(self).__lt((2));
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=(1);
 $1=(1);
@@ -35,9 +37,9 @@ $1=(1);
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 $1=_st(_st(_st(_st(self).__minus((1)))._benchFib()).__plus(_st(_st(self).__minus((2)))._benchFib())).__plus((1));
 };
 };
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"benchFib",{}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"benchFib",{},smalltalk.Number)})},
 args: [],
 args: [],
-source: "benchFib \x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22 | r t |\x0a\x09  t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09  (r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2 \x0a\x09\x09ifTrue: [1] \x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
+source: "benchFib\x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22\x09| r t |\x0a\x09\x09t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09\x09(r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2\x0a\x09\x09ifTrue: [1]\x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
 messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"],
 messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
@@ -51,44 +53,47 @@ category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var size,flags,prime,k,count;
 var size,flags,prime,k,count;
-return smalltalk.withContext(function($ctx1) { 
var $1,$3,$5,$4,$2,$6;
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 size=(8190);
 size=(8190);
-$1=self;
-$2=(function(iter){
-return smalltalk.withContext(function($ctx2) {
count=(0);
+_st((1))._to_do_(self,(function(iter){
+return smalltalk.withContext(function($ctx2) {
+count=(0);
 count;
 count;
-flags=_st((smalltalk.Array || Array))._new();
+flags=_st($Array())._new();
 flags;
 flags;
 _st(size)._timesRepeat_((function(){
 _st(size)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(flags)._add_(true);
+return smalltalk.withContext(function($ctx3) {
+return _st(flags)._add_(true);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-$3=size;
-$4=(function(i){
-return smalltalk.withContext(function($ctx3) {
$5=_st(flags)._at_(i);
-if(smalltalk.assert($5)){
+return _st((1))._to_do_(size,(function(i){
+return smalltalk.withContext(function($ctx3) {
+$1=_st(flags)._at_(i);
+if(smalltalk.assert($1)){
 prime=_st(i).__plus((1));
 prime=_st(i).__plus((1));
 prime;
 prime;
 k=_st(i).__plus(prime);
 k=_st(i).__plus(prime);
 k;
 k;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx4) {
return _st(k).__lt_eq(size);
+return smalltalk.withContext(function($ctx4) {
+return _st(k).__lt_eq(size);
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx4) {
_st(flags)._at_put_(k,false);
+return smalltalk.withContext(function($ctx4) {
+_st(flags)._at_put_(k,false);
 k=_st(k).__plus(prime);
 k=_st(k).__plus(prime);
 return k;
 return k;
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
 count=_st(count).__plus((1));
 count=_st(count).__plus((1));
 return count;
 return count;
 };
 };
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})});
-return _st((1))._to_do_($3,$4);
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})});
-_st((1))._to_do_($1,$2);
-$6=count;
-return $6;
-}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count}, smalltalk.Number)})},
+}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})}));
+$2=count;
+return $2;
+}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},smalltalk.Number)})},
 args: [],
 args: [],
-source: "benchmark \x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a    | size flags prime k count |\x0a    size := 8190.\x0a    1 to: self do:\x0a        [:iter |\x0a        count := 0.\x0a        flags := Array new.\x0a        size timesRepeat: [ flags add: true].\x0a        1 to: size do:\x0a            [:i | (flags at: i) ifTrue:\x0a                [prime := i+1.\x0a                k := i + prime.\x0a                [k <= size] whileTrue:\x0a                    [flags at: k put: false.\x0a                    k := k + prime].\x0a                count := count + 1]]].\x0a    ^ count",
+source: "benchmark\x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a\x09| size flags prime k count |\x0a\x09size := 8190.\x0a\x091 to: self do:\x0a\x09\x09[:iter |\x0a\x09\x09count := 0.\x0a\x09\x09flags := Array new.\x0a\x09\x09size timesRepeat: [ flags add: true].\x0a\x09\x091 to: size do:\x0a\x09\x09\x09[:i | (flags at: i) ifTrue:\x0a\x09\x09\x09\x09[prime := i+1.\x0a\x09\x09\x09\x09k := i + prime.\x0a\x09\x09\x09\x09[k <= size] whileTrue:\x0a\x09\x09\x09\x09\x09[flags at: k put: false.\x0a\x09\x09\x09\x09\x09k := k + prime].\x0a\x09\x09\x09\x09count := count + 1]]].\x0a\x09^ count",
 messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"],
 messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"],
 referencedClasses: ["Array"]
 referencedClasses: ["Array"]
 }),
 }),
@@ -101,13 +106,14 @@ selector: "jsbenchFib",
 category: '*Benchfib',
 category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
if (this < 2) {
+return smalltalk.withContext(function($ctx1) { 
+if (this < 2) {
 return 1;
 return 1;
 } else {
 } else {
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
 return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{}, smalltalk.Number)})},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},smalltalk.Number)})},
 args: [],
 args: [],
-source: "jsbenchFib\x0a \x0a\x09<if (this < 2) {\x0areturn 1;\x0a} else {\x0areturn (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}>",
+source: "jsbenchFib\x0a\x0a\x09<if (this < 2) {\x0areturn 1;\x0a} else {\x0areturn (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;}>",
 messageSends: [],
 messageSends: [],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
@@ -120,31 +126,32 @@ selector: "jsbenchmark",
 category: '*Benchfib',
 category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 var size = 8190;
 var size = 8190;
 var count;
 var count;
 for (var z=0;z<this;z++) {
 for (var z=0;z<this;z++) {
-  count = 0;
-  var flags = new Array();
-  for (var p=0; p<size; p++) {
-    flags[p] = true;
-  }
-  for (var i=1;i<=size;i++) {
-    if (flags[i-1]) {
-      var prime = i+1;
-      var k = i + prime;
-      while (k <= size) {
-        flags[k-1] = false;
-        k = k + prime;
-      }
-      count = count + 1;
-    }
-  }
+	count = 0;
+	var flags = new Array();
+	for (var p=0; p<size; p++) {
+	flags[p] = true;
+	}
+	for (var i=1;i<=size;i++) {
+		if (flags[i-1]) {
+			var prime = i+1;
+			var k = i + prime;
+			while (k <= size) {
+				flags[k-1] = false;
+				k = k + prime;
+			}
+			count = count + 1;
+		}
+	}
 }
 }
 return count;
 return count;
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{}, smalltalk.Number)})},
+return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},smalltalk.Number)})},
 args: [],
 args: [],
-source: "jsbenchmark\x0a\x0a<\x0avar size = 8190;\x0avar count;\x0afor (var z=0;z<this;z++) {\x0a  count = 0;\x0a  var flags = new Array();\x0a  for (var p=0; p<size; p++) {\x0a    flags[p] = true;\x0a  }\x0a  for (var i=1;i<=size;i++) {\x0a    if (flags[i-1]) {\x0a      var prime = i+1;\x0a      var k = i + prime;\x0a      while (k <= size) {\x0a        flags[k-1] = false;\x0a        k = k + prime;\x0a      }\x0a      count = count + 1;\x0a    }\x0a  }\x0a}\x0areturn count>",
+source: "jsbenchmark\x0a\x0a<\x0avar size = 8190;\x0avar count;\x0afor (var z=0;z<this;z++) {\x0a\x09count = 0;\x0a\x09var flags = new Array();\x0a\x09for (var p=0; p<size; p++) {\x0a\x09flags[p] = true;\x0a\x09}\x0a\x09for (var i=1;i<=size;i++) {\x0a\x09\x09if (flags[i-1]) {\x0a\x09\x09\x09var prime = i+1;\x0a\x09\x09\x09var k = i + prime;\x0a\x09\x09\x09while (k <= size) {\x0a\x09\x09\x09\x09flags[k-1] = false;\x0a\x09\x09\x09\x09k = k + prime;\x0a\x09\x09\x09}\x0a\x09\x09\x09count = count + 1;\x0a\x09\x09}\x0a\x09}\x0a}\x0areturn count>",
 messageSends: [],
 messageSends: [],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
@@ -158,35 +165,43 @@ category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(n1)._jsbenchmark();
+return smalltalk.withContext(function($ctx2) {
+t1=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+return _st(n1)._jsbenchmark();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return smalltalk.withContext(function($ctx2) {
+n1=_st(n1).__star((2));
 return n1;
 return n1;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 n2=(28);
 n2=(28);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
r=_st(n2)._jsbenchFib();
+return smalltalk.withContext(function($ctx2) {
+t2=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+r=_st(n2)._jsbenchFib();
 return r;
 return r;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return smalltalk.withContext(function($ctx2) {
+n2=_st(n2).__plus((1));
 return n2;
 return n2;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 args: [],
 args: [],
-source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1]. \x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09  ((r * 1000) / t2) printString, ' sends/sec'",
+source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"],
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"],
 referencedClasses: ["Date"]
 referencedClasses: ["Date"]
 }),
 }),
@@ -200,35 +215,43 @@ category: '*Benchfib',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var t1,t2,r,n1,n2;
 var t1,t2,r,n1,n2;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 n1=(1);
 n1=(1);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t1=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(n1)._benchmark();
+return smalltalk.withContext(function($ctx2) {
+t1=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+return _st(n1)._benchmark();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t1;
 t1;
 return _st(t1).__lt((1000));
 return _st(t1).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n1=_st(n1).__star((2));
+return smalltalk.withContext(function($ctx2) {
+n1=_st(n1).__star((2));
 return n1;
 return n1;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 n2=(16);
 n2=(16);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
t2=_st((smalltalk.Date || Date))._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
r=_st(n2)._benchFib();
+return smalltalk.withContext(function($ctx2) {
+t2=_st($Date())._millisecondsToRun_((function(){
+return smalltalk.withContext(function($ctx3) {
+r=_st(n2)._benchFib();
 return r;
 return r;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 t2;
 t2;
 return _st(t2).__lt((1000));
 return _st(t2).__lt((1000));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
n2=_st(n2).__plus((1));
+return smalltalk.withContext(function($ctx2) {
+n2=_st(n2).__plus((1));
 return n2;
 return n2;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 $1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
 return $1;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2}, smalltalk.Number)})},
+}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 args: [],
 args: [],
-source: "tinyBenchmarks \x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98:  18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1]. \x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09  ((r * 1000) / t2) printString, ' sends/sec'",
+source: "tinyBenchmarks\x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98: 18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"],
 messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"],
 referencedClasses: ["Date"]
 referencedClasses: ["Date"]
 }),
 }),

File diff ditekan karena terlalu besar
+ 206 - 103
js/Canvas.deploy.js


File diff ditekan karena terlalu besar
+ 206 - 103
js/Canvas.js


File diff ditekan karena terlalu besar
+ 218 - 109
js/Compiler-AST.deploy.js


File diff ditekan karena terlalu besar
+ 218 - 109
js/Compiler-AST.js


+ 138 - 67
js/Compiler-Core.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "classNameFor:",
 selector: "classNameFor:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
@@ -29,7 +30,8 @@ smalltalk.method({
 selector: "compileNode:",
 selector: "compileNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._subclassResponsibility();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._subclassResponsibility();
 return self}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},smalltalk.AbstractCodeGenerator)})},
 messageSends: ["subclassResponsibility"]}),
 messageSends: ["subclassResponsibility"]}),
 smalltalk.AbstractCodeGenerator);
 smalltalk.AbstractCodeGenerator);
@@ -40,7 +42,8 @@ smalltalk.method({
 selector: "currentClass",
 selector: "currentClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@currentClass"];
 $1=self["@currentClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.AbstractCodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.AbstractCodeGenerator)})},
@@ -53,7 +56,8 @@ smalltalk.method({
 selector: "currentClass:",
 selector: "currentClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@currentClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.AbstractCodeGenerator);
 smalltalk.AbstractCodeGenerator);
@@ -64,7 +68,10 @@ smalltalk.method({
 selector: "pseudoVariables",
 selector: "pseudoVariables",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return ["self", "super", "true", "false", "nil", "thisContext"];
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=["self", "super", "true", "false", "nil", "thisContext"];
+return $1;
 }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},smalltalk.AbstractCodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},smalltalk.AbstractCodeGenerator)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.AbstractCodeGenerator);
 smalltalk.AbstractCodeGenerator);
@@ -75,8 +82,10 @@ smalltalk.method({
 selector: "safeVariableNameFor:",
 selector: "safeVariableNameFor:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$2=_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._reservedWords())._includes_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=_st(_st(_st($Smalltalk())._current())._reservedWords())._includes_(aString);
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(aString).__comma("_");
 $1=_st(aString).__comma("_");
 } else {
 } else {
@@ -93,7 +102,8 @@ smalltalk.method({
 selector: "source",
 selector: "source",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@source"];
 $2=self["@source"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -111,7 +121,8 @@ smalltalk.method({
 selector: "source:",
 selector: "source:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@source"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.AbstractCodeGenerator);
 smalltalk.AbstractCodeGenerator);
@@ -126,7 +137,8 @@ selector: "compileNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
 var ir,stream;
 var ir,stream;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
 ir=_st(_st(self)._translator())._visit_(aNode);
 ir=_st(_st(self)._translator())._visit_(aNode);
 $2=_st(self)._irTranslator();
 $2=_st(self)._irTranslator();
@@ -144,8 +156,10 @@ smalltalk.method({
 selector: "irTranslator",
 selector: "irTranslator",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.IRJSTranslator || IRJSTranslator))._new();
+function $IRJSTranslator(){return smalltalk.IRJSTranslator||(typeof IRJSTranslator=="undefined"?nil:IRJSTranslator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($IRJSTranslator())._new();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.CodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.CodeGenerator)})},
 messageSends: ["new"]}),
 messageSends: ["new"]}),
@@ -157,8 +171,10 @@ smalltalk.method({
 selector: "semanticAnalyzer",
 selector: "semanticAnalyzer",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(_st(self)._currentClass());
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($SemanticAnalyzer())._on_(_st(self)._currentClass());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},smalltalk.CodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},smalltalk.CodeGenerator)})},
 messageSends: ["on:", "currentClass"]}),
 messageSends: ["on:", "currentClass"]}),
@@ -170,8 +186,10 @@ smalltalk.method({
 selector: "translator",
 selector: "translator",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$2=_st((smalltalk.IRASTTranslator || IRASTTranslator))._new();
+function $IRASTTranslator(){return smalltalk.IRASTTranslator||(typeof IRASTTranslator=="undefined"?nil:IRASTTranslator)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st($IRASTTranslator())._new();
 _st($2)._source_(_st(self)._source());
 _st($2)._source_(_st(self)._source());
 _st($2)._theClass_(_st(self)._currentClass());
 _st($2)._theClass_(_st(self)._currentClass());
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -190,10 +208,12 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 selector: "codeGeneratorClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@codeGeneratorClass"];
 $2=self["@codeGeneratorClass"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
-$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+$1=$InliningCodeGenerator();
 } else {
 } else {
 $1=$2;
 $1=$2;
 };
 };
@@ -208,7 +228,8 @@ smalltalk.method({
 selector: "codeGeneratorClass:",
 selector: "codeGeneratorClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@codeGeneratorClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@codeGeneratorClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:",{aClass:aClass},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:",{aClass:aClass},smalltalk.Compiler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Compiler);
 smalltalk.Compiler);
@@ -219,7 +240,8 @@ smalltalk.method({
 selector: "compile:",
 selector: "compile:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Compiler)})},
@@ -232,7 +254,8 @@ smalltalk.method({
 selector: "compile:forClass:",
 selector: "compile:forClass:",
 fn: function (aString,aClass){
 fn: function (aString,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._currentClass_(aClass);
 _st(self)._currentClass_(aClass);
 _st(self)._source_(aString);
 _st(self)._source_(aString);
 $1=_st(self)._compile_(aString);
 $1=_st(self)._compile_(aString);
@@ -247,8 +270,10 @@ smalltalk.method({
 selector: "compileExpression:",
 selector: "compileExpression:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(self)._currentClass_((smalltalk.DoIt || DoIt));
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+_st(self)._currentClass_($DoIt());
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 return $1;
 return $1;
@@ -262,7 +287,8 @@ smalltalk.method({
 selector: "compileExpression:on:",
 selector: "compileExpression:on:",
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._currentClass_(_st(anObject)._class());
 _st(self)._currentClass_(_st(anObject)._class());
 _st(self)._source_(_st(_st("xxxDoIt ^[").__comma(aString)).__comma("] value"));
 _st(self)._source_(_st(_st("xxxDoIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
@@ -278,7 +304,8 @@ selector: "compileNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
 var generator,result;
 var generator,result;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 generator=_st(_st(self)._codeGeneratorClass())._new();
 generator=_st(_st(self)._codeGeneratorClass())._new();
 $1=generator;
 $1=generator;
 _st($1)._source_(_st(self)._source());
 _st($1)._source_(_st(self)._source());
@@ -297,7 +324,8 @@ smalltalk.method({
 selector: "currentClass",
 selector: "currentClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@currentClass"];
 $1=self["@currentClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.Compiler)})},
@@ -310,7 +338,8 @@ smalltalk.method({
 selector: "currentClass:",
 selector: "currentClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@currentClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.Compiler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Compiler);
 smalltalk.Compiler);
@@ -321,7 +350,8 @@ smalltalk.method({
 selector: "eval:",
 selector: "eval:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return eval(aString);
+return smalltalk.withContext(function($ctx1) { 
+return eval(aString);
 return self}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},smalltalk.Compiler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Compiler);
 smalltalk.Compiler);
@@ -332,8 +362,10 @@ smalltalk.method({
 selector: "evaluateExpression:",
 selector: "evaluateExpression:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._evaluateExpression_on_(aString,_st((smalltalk.DoIt || DoIt))._new());
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._evaluateExpression_on_(aString,_st($DoIt())._new());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},smalltalk.Compiler)})},
 messageSends: ["evaluateExpression:on:", "new"]}),
 messageSends: ["evaluateExpression:on:", "new"]}),
@@ -346,7 +378,8 @@ selector: "evaluateExpression:on:",
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
 var result,method;
 var result,method;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 method=_st(self)._eval_(_st(self)._compileExpression_on_(aString,anObject));
 method=_st(self)._eval_(_st(self)._compileExpression_on_(aString,anObject));
 _st(method)._category_("xxxDoIt");
 _st(method)._category_("xxxDoIt");
 _st(_st(anObject)._class())._addCompiledMethod_(method);
 _st(_st(anObject)._class())._addCompiledMethod_(method);
@@ -364,8 +397,10 @@ smalltalk.method({
 selector: "install:forClass:category:",
 selector: "install:forClass:category:",
 fn: function (aString,aBehavior,anotherString){
 fn: function (aString,aBehavior,anotherString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._installMethod_forClass_category_(_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
+function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($ClassBuilder())._new())._installMethod_forClass_category_(_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
 messageSends: ["installMethod:forClass:category:", "eval:", "compile:forClass:", "new"]}),
 messageSends: ["installMethod:forClass:category:", "eval:", "compile:forClass:", "new"]}),
@@ -377,8 +412,10 @@ smalltalk.method({
 selector: "parse:",
 selector: "parse:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($Smalltalk())._current())._parse_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.Compiler)})},
 messageSends: ["parse:", "current"]}),
 messageSends: ["parse:", "current"]}),
@@ -390,7 +427,8 @@ smalltalk.method({
 selector: "parseExpression:",
 selector: "parseExpression:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
@@ -403,9 +441,11 @@ smalltalk.method({
 selector: "recompile:",
 selector: "recompile:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(_st(aClass)._methodDictionary())._do_((function(each){
 _st(_st(aClass)._methodDictionary())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
+return smalltalk.withContext(function($ctx2) {
+_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 $1=_st(aClass)._isMetaclass();
 $1=_st(aClass)._isMetaclass();
@@ -422,14 +462,19 @@ smalltalk.method({
 selector: "recompileAll",
 selector: "recompileAll",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=(smalltalk.Transcript || Transcript);
+function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+$1=$Transcript();
 _st($1)._show_(each);
 _st($1)._show_(each);
 $2=_st($1)._cr();
 $2=_st($1)._cr();
 $2;
 $2;
 return _st((function(){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._recompile_(each);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._valueWithTimeout_((100));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._valueWithTimeout_((100));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
@@ -442,7 +487,8 @@ smalltalk.method({
 selector: "source",
 selector: "source",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@source"];
 $2=self["@source"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -460,7 +506,8 @@ smalltalk.method({
 selector: "source:",
 selector: "source:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@source"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.Compiler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Compiler);
 smalltalk.Compiler);
@@ -471,7 +518,8 @@ smalltalk.method({
 selector: "unknownVariables",
 selector: "unknownVariables",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@unknownVariables"];
 $1=self["@unknownVariables"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.Compiler)})},
@@ -484,7 +532,8 @@ smalltalk.method({
 selector: "unknownVariables:",
 selector: "unknownVariables:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@unknownVariables"]=aCollection;
+return smalltalk.withContext(function($ctx1) { 
+self["@unknownVariables"]=aCollection;
 return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:",{aCollection:aCollection},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:",{aCollection:aCollection},smalltalk.Compiler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Compiler);
 smalltalk.Compiler);
@@ -496,7 +545,8 @@ smalltalk.method({
 selector: "recompile:",
 selector: "recompile:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._recompile_(aClass);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._new())._recompile_(aClass);
 return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler.klass)})},
 messageSends: ["recompile:", "new"]}),
 messageSends: ["recompile:", "new"]}),
 smalltalk.Compiler.klass);
 smalltalk.Compiler.klass);
@@ -507,8 +557,11 @@ smalltalk.method({
 selector: "recompileAll",
 selector: "recompileAll",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._recompile_(each);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._recompile_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
 messageSends: ["do:", "recompile:", "classes", "current"]}),
 messageSends: ["do:", "recompile:", "classes", "current"]}),
@@ -525,7 +578,8 @@ smalltalk.method({
 selector: "visit:",
 selector: "visit:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aNode)._accept_(self);
 $1=_st(aNode)._accept_(self);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -538,9 +592,11 @@ smalltalk.method({
 selector: "visitAll:",
 selector: "visitAll:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aCollection)._collect_((function(each){
 $1=_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._visit_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
@@ -553,7 +609,8 @@ smalltalk.method({
 selector: "visitAssignmentNode:",
 selector: "visitAssignmentNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -566,7 +623,8 @@ smalltalk.method({
 selector: "visitBlockNode:",
 selector: "visitBlockNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -579,7 +637,8 @@ smalltalk.method({
 selector: "visitBlockSequenceNode:",
 selector: "visitBlockSequenceNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitSequenceNode_(aNode);
 $1=_st(self)._visitSequenceNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -592,7 +651,8 @@ smalltalk.method({
 selector: "visitCascadeNode:",
 selector: "visitCascadeNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -605,7 +665,8 @@ smalltalk.method({
 selector: "visitClassReferenceNode:",
 selector: "visitClassReferenceNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitVariableNode_(aNode);
 $1=_st(self)._visitVariableNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -618,7 +679,8 @@ smalltalk.method({
 selector: "visitDynamicArrayNode:",
 selector: "visitDynamicArrayNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -631,7 +693,8 @@ smalltalk.method({
 selector: "visitDynamicDictionaryNode:",
 selector: "visitDynamicDictionaryNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -644,7 +707,8 @@ smalltalk.method({
 selector: "visitJSStatementNode:",
 selector: "visitJSStatementNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -657,7 +721,8 @@ smalltalk.method({
 selector: "visitMethodNode:",
 selector: "visitMethodNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -670,7 +735,8 @@ smalltalk.method({
 selector: "visitNode:",
 selector: "visitNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -683,7 +749,8 @@ smalltalk.method({
 selector: "visitReturnNode:",
 selector: "visitReturnNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -696,7 +763,8 @@ smalltalk.method({
 selector: "visitSendNode:",
 selector: "visitSendNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -709,7 +777,8 @@ smalltalk.method({
 selector: "visitSequenceNode:",
 selector: "visitSequenceNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -722,7 +791,8 @@ smalltalk.method({
 selector: "visitValueNode:",
 selector: "visitValueNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -735,7 +805,8 @@ smalltalk.method({
 selector: "visitVariableNode:",
 selector: "visitVariableNode:",
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.NodeVisitor)})},

+ 138 - 67
js/Compiler-Core.js

@@ -8,7 +8,8 @@ selector: "classNameFor:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
@@ -36,7 +37,8 @@ selector: "compileNode:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._subclassResponsibility();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._subclassResponsibility();
 return self}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},smalltalk.AbstractCodeGenerator)})},
 args: ["aNode"],
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09self subclassResponsibility",
 source: "compileNode: aNode\x0a\x09self subclassResponsibility",
@@ -52,7 +54,8 @@ selector: "currentClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@currentClass"];
 $1=self["@currentClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.AbstractCodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.AbstractCodeGenerator)})},
@@ -70,7 +73,8 @@ selector: "currentClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@currentClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
@@ -86,7 +90,10 @@ selector: "pseudoVariables",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return ["self", "super", "true", "false", "nil", "thisContext"];
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=["self", "super", "true", "false", "nil", "thisContext"];
+return $1;
 }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},smalltalk.AbstractCodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},smalltalk.AbstractCodeGenerator)})},
 args: [],
 args: [],
 source: "pseudoVariables\x0a\x09^#('self' 'super' 'true' 'false' 'nil' 'thisContext')",
 source: "pseudoVariables\x0a\x09^#('self' 'super' 'true' 'false' 'nil' 'thisContext')",
@@ -102,8 +109,10 @@ selector: "safeVariableNameFor:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-$2=_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._reservedWords())._includes_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=_st(_st(_st($Smalltalk())._current())._reservedWords())._includes_(aString);
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(aString).__comma("_");
 $1=_st(aString).__comma("_");
 } else {
 } else {
@@ -125,7 +134,8 @@ selector: "source",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@source"];
 $2=self["@source"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -148,7 +158,8 @@ selector: "source:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@source"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
 args: ["aString"],
 args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 source: "source: aString\x0a\x09source := aString",
@@ -169,7 +180,8 @@ category: 'compiling',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
 var ir,stream;
 var ir,stream;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
 _st(_st(self)._semanticAnalyzer())._visit_(aNode);
 ir=_st(_st(self)._translator())._visit_(aNode);
 ir=_st(_st(self)._translator())._visit_(aNode);
 $2=_st(self)._irTranslator();
 $2=_st(self)._irTranslator();
@@ -192,8 +204,10 @@ selector: "irTranslator",
 category: 'compiling',
 category: 'compiling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.IRJSTranslator || IRJSTranslator))._new();
+function $IRJSTranslator(){return smalltalk.IRJSTranslator||(typeof IRJSTranslator=="undefined"?nil:IRJSTranslator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($IRJSTranslator())._new();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.CodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.CodeGenerator)})},
 args: [],
 args: [],
@@ -210,8 +224,10 @@ selector: "semanticAnalyzer",
 category: 'compiling',
 category: 'compiling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(_st(self)._currentClass());
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($SemanticAnalyzer())._on_(_st(self)._currentClass());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},smalltalk.CodeGenerator)})},
 }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},smalltalk.CodeGenerator)})},
 args: [],
 args: [],
@@ -228,8 +244,10 @@ selector: "translator",
 category: 'compiling',
 category: 'compiling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$2=_st((smalltalk.IRASTTranslator || IRASTTranslator))._new();
+function $IRASTTranslator(){return smalltalk.IRASTTranslator||(typeof IRASTTranslator=="undefined"?nil:IRASTTranslator)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st($IRASTTranslator())._new();
 _st($2)._source_(_st(self)._source());
 _st($2)._source_(_st(self)._source());
 _st($2)._theClass_(_st(self)._currentClass());
 _st($2)._theClass_(_st(self)._currentClass());
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -254,10 +272,12 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@codeGeneratorClass"];
 $2=self["@codeGeneratorClass"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
-$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+$1=$InliningCodeGenerator();
 } else {
 } else {
 $1=$2;
 $1=$2;
 };
 };
@@ -277,7 +297,8 @@ selector: "codeGeneratorClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@codeGeneratorClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@codeGeneratorClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:",{aClass:aClass},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:",{aClass:aClass},smalltalk.Compiler)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
 source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
@@ -293,7 +314,8 @@ selector: "compile:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 $1=_st(self)._compileNode_(_st(self)._parse_(aString));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Compiler)})},
@@ -311,7 +333,8 @@ selector: "compile:forClass:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString,aClass){
 fn: function (aString,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._currentClass_(aClass);
 _st(self)._currentClass_(aClass);
 _st(self)._source_(aString);
 _st(self)._source_(aString);
 $1=_st(self)._compile_(aString);
 $1=_st(self)._compile_(aString);
@@ -331,8 +354,10 @@ selector: "compileExpression:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(self)._currentClass_((smalltalk.DoIt || DoIt));
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+_st(self)._currentClass_($DoIt());
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 _st(self)._source_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 return $1;
 return $1;
@@ -351,7 +376,8 @@ selector: "compileExpression:on:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._currentClass_(_st(anObject)._class());
 _st(self)._currentClass_(_st(anObject)._class());
 _st(self)._source_(_st(_st("xxxDoIt ^[").__comma(aString)).__comma("] value"));
 _st(self)._source_(_st(_st("xxxDoIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
 $1=_st(self)._compileNode_(_st(self)._parse_(_st(self)._source()));
@@ -372,7 +398,8 @@ category: 'compiling',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
 var generator,result;
 var generator,result;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 generator=_st(_st(self)._codeGeneratorClass())._new();
 generator=_st(_st(self)._codeGeneratorClass())._new();
 $1=generator;
 $1=generator;
 _st($1)._source_(_st(self)._source());
 _st($1)._source_(_st(self)._source());
@@ -396,7 +423,8 @@ selector: "currentClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@currentClass"];
 $1=self["@currentClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.Compiler)})},
@@ -414,7 +442,8 @@ selector: "currentClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@currentClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@currentClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.Compiler)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
 source: "currentClass: aClass\x0a\x09currentClass := aClass",
@@ -430,7 +459,8 @@ selector: "eval:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return eval(aString);
+return smalltalk.withContext(function($ctx1) { 
+return eval(aString);
 return self}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
 args: ["aString"],
 source: "eval: aString\x0a\x09<return eval(aString)>",
 source: "eval: aString\x0a\x09<return eval(aString)>",
@@ -446,8 +476,10 @@ selector: "evaluateExpression:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._evaluateExpression_on_(aString,_st((smalltalk.DoIt || DoIt))._new());
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._evaluateExpression_on_(aString,_st($DoIt())._new());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
 args: ["aString"],
@@ -465,7 +497,8 @@ category: 'compiling',
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
 var result,method;
 var result,method;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 method=_st(self)._eval_(_st(self)._compileExpression_on_(aString,anObject));
 method=_st(self)._eval_(_st(self)._compileExpression_on_(aString,anObject));
 _st(method)._category_("xxxDoIt");
 _st(method)._category_("xxxDoIt");
 _st(_st(anObject)._class())._addCompiledMethod_(method);
 _st(_st(anObject)._class())._addCompiledMethod_(method);
@@ -488,8 +521,10 @@ selector: "install:forClass:category:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString,aBehavior,anotherString){
 fn: function (aString,aBehavior,anotherString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._installMethod_forClass_category_(_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
+function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($ClassBuilder())._new())._installMethod_forClass_category_(_st(self)._eval_(_st(self)._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
 args: ["aString", "aBehavior", "anotherString"],
 args: ["aString", "aBehavior", "anotherString"],
@@ -506,8 +541,10 @@ selector: "parse:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($Smalltalk())._current())._parse_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
 args: ["aString"],
@@ -524,7 +561,8 @@ selector: "parseExpression:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 $1=_st(self)._parse_(_st(_st("doIt ^[").__comma(aString)).__comma("] value"));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
@@ -542,9 +580,11 @@ selector: "recompile:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(_st(aClass)._methodDictionary())._do_((function(each){
 _st(_st(aClass)._methodDictionary())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
+return smalltalk.withContext(function($ctx2) {
+_st(console)._log_(_st(_st(_st(aClass)._name()).__comma(" >> ")).__comma(_st(each)._selector()));
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
 return _st(self)._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 $1=_st(aClass)._isMetaclass();
 $1=_st(aClass)._isMetaclass();
@@ -566,14 +606,19 @@ selector: "recompileAll",
 category: 'compiling',
 category: 'compiling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=(smalltalk.Transcript || Transcript);
+function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+$1=$Transcript();
 _st($1)._show_(each);
 _st($1)._show_(each);
 $2=_st($1)._cr();
 $2=_st($1)._cr();
 $2;
 $2;
 return _st((function(){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._recompile_(each);
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._recompile_(each);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._valueWithTimeout_((100));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._valueWithTimeout_((100));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
@@ -591,7 +636,8 @@ selector: "source",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@source"];
 $2=self["@source"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -614,7 +660,8 @@ selector: "source:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@source"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@source"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
 args: ["aString"],
 source: "source: aString\x0a\x09source := aString",
 source: "source: aString\x0a\x09source := aString",
@@ -630,7 +677,8 @@ selector: "unknownVariables",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@unknownVariables"];
 $1=self["@unknownVariables"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.Compiler)})},
 }, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.Compiler)})},
@@ -648,7 +696,8 @@ selector: "unknownVariables:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@unknownVariables"]=aCollection;
+return smalltalk.withContext(function($ctx1) { 
+self["@unknownVariables"]=aCollection;
 return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:",{aCollection:aCollection},smalltalk.Compiler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:",{aCollection:aCollection},smalltalk.Compiler)})},
 args: ["aCollection"],
 args: ["aCollection"],
 source: "unknownVariables: aCollection\x0a\x09unknownVariables := aCollection",
 source: "unknownVariables: aCollection\x0a\x09unknownVariables := aCollection",
@@ -665,7 +714,8 @@ selector: "recompile:",
 category: 'compiling',
 category: 'compiling',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._recompile_(aClass);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._new())._recompile_(aClass);
 return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler.klass)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "recompile: aClass\x0a\x09self new recompile: aClass",
 source: "recompile: aClass\x0a\x09self new recompile: aClass",
@@ -681,8 +731,11 @@ selector: "recompileAll",
 category: 'compiling',
 category: 'compiling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._recompile_(each);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._recompile_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
 args: [],
 args: [],
@@ -706,7 +759,8 @@ selector: "visit:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aNode)._accept_(self);
 $1=_st(aNode)._accept_(self);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -724,9 +778,11 @@ selector: "visitAll:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aCollection)._collect_((function(each){
 $1=_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._visit_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._visit_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
@@ -744,7 +800,8 @@ selector: "visitAssignmentNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -762,7 +819,8 @@ selector: "visitBlockNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -780,7 +838,8 @@ selector: "visitBlockSequenceNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitSequenceNode_(aNode);
 $1=_st(self)._visitSequenceNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -798,7 +857,8 @@ selector: "visitCascadeNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -816,7 +876,8 @@ selector: "visitClassReferenceNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitVariableNode_(aNode);
 $1=_st(self)._visitVariableNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -834,7 +895,8 @@ selector: "visitDynamicArrayNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -852,7 +914,8 @@ selector: "visitDynamicDictionaryNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -870,7 +933,8 @@ selector: "visitJSStatementNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -888,7 +952,8 @@ selector: "visitMethodNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -906,7 +971,8 @@ selector: "visitNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 $1=_st(self)._visitAll_(_st(aNode)._nodes());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -924,7 +990,8 @@ selector: "visitReturnNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -942,7 +1009,8 @@ selector: "visitSendNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -960,7 +1028,8 @@ selector: "visitSequenceNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -978,7 +1047,8 @@ selector: "visitValueNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
@@ -996,7 +1066,8 @@ selector: "visitVariableNode:",
 category: 'visiting',
 category: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._visitNode_(aNode);
 $1=_st(self)._visitNode_(aNode);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
 }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.NodeVisitor)})},

+ 22 - 11
js/Compiler-Exceptions.deploy.js

@@ -18,7 +18,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.InvalidAssignmentError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.InvalidAssignmentError)})},
@@ -31,7 +32,8 @@ smalltalk.method({
 selector: "variableName",
 selector: "variableName",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.InvalidAssignmentError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.InvalidAssignmentError)})},
@@ -44,7 +46,8 @@ smalltalk.method({
 selector: "variableName:",
 selector: "variableName:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.InvalidAssignmentError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.InvalidAssignmentError)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.InvalidAssignmentError);
 smalltalk.InvalidAssignmentError);
@@ -58,7 +61,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
@@ -71,7 +75,8 @@ smalltalk.method({
 selector: "variableName",
 selector: "variableName",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.ShadowingVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.ShadowingVariableError)})},
@@ -84,7 +89,8 @@ smalltalk.method({
 selector: "variableName:",
 selector: "variableName:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.ShadowingVariableError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.ShadowingVariableError)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ShadowingVariableError);
 smalltalk.ShadowingVariableError);
@@ -98,7 +104,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st("Unknown Variable error: ").__comma(_st(self)._variableName())).__comma(" is not defined");
 $1=_st(_st("Unknown Variable error: ").__comma(_st(self)._variableName())).__comma(" is not defined");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
@@ -111,7 +118,8 @@ smalltalk.method({
 selector: "variableName",
 selector: "variableName",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.UnknownVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.UnknownVariableError)})},
@@ -124,7 +132,8 @@ smalltalk.method({
 selector: "variableName:",
 selector: "variableName:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.UnknownVariableError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.UnknownVariableError)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.UnknownVariableError);
 smalltalk.UnknownVariableError);
@@ -138,7 +147,8 @@ smalltalk.method({
 selector: "basicSignal:",
 selector: "basicSignal:",
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
throw anError;
+return smalltalk.withContext(function($ctx1) { 
+throw anError;
 return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.RethrowErrorHandler);
 smalltalk.RethrowErrorHandler);
@@ -149,7 +159,8 @@ smalltalk.method({
 selector: "handleError:",
 selector: "handleError:",
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.ErrorHandler.fn.prototype._handleError_.apply(_st(self), [anError]);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.ErrorHandler.fn.prototype._handleError_.apply(_st(self), [anError]);
 _st(self)._basicSignal_(anError);
 _st(self)._basicSignal_(anError);
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 messageSends: ["handleError:", "basicSignal:"]}),
 messageSends: ["handleError:", "basicSignal:"]}),

+ 22 - 11
js/Compiler-Exceptions.js

@@ -24,7 +24,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 $1=_st(" Invalid assignment to variable: ").__comma(_st(self)._variableName());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.InvalidAssignmentError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.InvalidAssignmentError)})},
@@ -42,7 +43,8 @@ selector: "variableName",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.InvalidAssignmentError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.InvalidAssignmentError)})},
@@ -60,7 +62,8 @@ selector: "variableName:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.InvalidAssignmentError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.InvalidAssignmentError)})},
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
@@ -80,7 +83,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 $1=_st(_st("Variable shadowing error: ").__comma(_st(self)._variableName())).__comma(" is already defined");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
@@ -98,7 +102,8 @@ selector: "variableName",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.ShadowingVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.ShadowingVariableError)})},
@@ -116,7 +121,8 @@ selector: "variableName:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.ShadowingVariableError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.ShadowingVariableError)})},
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
@@ -136,7 +142,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st("Unknown Variable error: ").__comma(_st(self)._variableName())).__comma(" is not defined");
 $1=_st(_st("Unknown Variable error: ").__comma(_st(self)._variableName())).__comma(" is not defined");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
@@ -154,7 +161,8 @@ selector: "variableName",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@variableName"];
 $1=self["@variableName"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.UnknownVariableError)})},
 }, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.UnknownVariableError)})},
@@ -172,7 +180,8 @@ selector: "variableName:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@variableName"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@variableName"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.UnknownVariableError)})},
 return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.UnknownVariableError)})},
 args: ["aString"],
 args: ["aString"],
 source: "variableName: aString\x0a\x09variableName := aString",
 source: "variableName: aString\x0a\x09variableName := aString",
@@ -192,7 +201,8 @@ selector: "basicSignal:",
 category: 'error handling',
 category: 'error handling',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
throw anError;
+return smalltalk.withContext(function($ctx1) { 
+throw anError;
 return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 args: ["anError"],
 args: ["anError"],
 source: "basicSignal: anError\x0a\x09<throw anError>",
 source: "basicSignal: anError\x0a\x09<throw anError>",
@@ -208,7 +218,8 @@ selector: "handleError:",
 category: 'error handling',
 category: 'error handling',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.ErrorHandler.fn.prototype._handleError_.apply(_st(self), [anError]);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.ErrorHandler.fn.prototype._handleError_.apply(_st(self), [anError]);
 _st(self)._basicSignal_(anError);
 _st(self)._basicSignal_(anError);
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.RethrowErrorHandler)})},
 args: ["anError"],
 args: ["anError"],

File diff ditekan karena terlalu besar
+ 245 - 123
js/Compiler-IR.deploy.js


File diff ditekan karena terlalu besar
+ 247 - 125
js/Compiler-IR.js


File diff ditekan karena terlalu besar
+ 269 - 213
js/Compiler-Inlining.deploy.js


File diff ditekan karena terlalu besar
+ 267 - 240
js/Compiler-Inlining.js


File diff ditekan karena terlalu besar
+ 260 - 158
js/Compiler-Interpreter.deploy.js


File diff ditekan karena terlalu besar
+ 264 - 170
js/Compiler-Interpreter.js


File diff ditekan karena terlalu besar
+ 246 - 124
js/Compiler-Semantic.deploy.js


File diff ditekan karena terlalu besar
+ 247 - 125
js/Compiler-Semantic.js


+ 256 - 104
js/Compiler-Tests.deploy.js

@@ -6,8 +6,10 @@ smalltalk.method({
 selector: "analyze:forClass:",
 selector: "analyze:forClass:",
 fn: function (aNode,aClass){
 fn: function (aNode,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+_st(_st($SemanticAnalyzer())._on_(aClass))._visit_(aNode);
 $1=aNode;
 $1=aNode;
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
@@ -20,8 +22,10 @@ smalltalk.method({
 selector: "interpret:",
 selector: "interpret:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._interpret_withArguments_(aString,_st((smalltalk.Dictionary || Dictionary))._new());
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._interpret_withArguments_(aString,_st($Dictionary())._new());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpret:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpret:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 messageSends: ["interpret:withArguments:", "new"]}),
 messageSends: ["interpret:withArguments:", "new"]}),
@@ -34,11 +38,14 @@ selector: "interpret:receiver:withArguments:",
 fn: function (aString,anObject,aDictionary){
 fn: function (aString,anObject,aDictionary){
 var self=this;
 var self=this;
 var ctx;
 var ctx;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-ctx=_st((smalltalk.AIContext || AIContext))._new();
+function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+ctx=_st($AIContext())._new();
 _st(ctx)._receiver_(anObject);
 _st(ctx)._receiver_(anObject);
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
+return smalltalk.withContext(function($ctx2) {
+return _st(ctx)._localAt_put_(key,value);
 }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
 $2=_st(self)._interpreter();
 $2=_st(self)._interpreter();
 _st($2)._context_(ctx);
 _st($2)._context_(ctx);
@@ -56,8 +63,10 @@ smalltalk.method({
 selector: "interpret:withArguments:",
 selector: "interpret:withArguments:",
 fn: function (aString,aDictionary){
 fn: function (aString,aDictionary){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._interpret_receiver_withArguments_(aString,_st((smalltalk.Object || Object))._new(),aDictionary);
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._interpret_receiver_withArguments_(aString,_st($Object())._new(),aDictionary);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:",{aString:aString,aDictionary:aDictionary},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:",{aString:aString,aDictionary:aDictionary},smalltalk.AbstractASTInterpreterTest)})},
 messageSends: ["interpret:receiver:withArguments:", "new"]}),
 messageSends: ["interpret:receiver:withArguments:", "new"]}),
@@ -69,7 +78,8 @@ smalltalk.method({
 selector: "interpreter",
 selector: "interpreter",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._subclassResponsibility();
 $1=_st(self)._subclassResponsibility();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AbstractASTInterpreterTest)})},
@@ -82,8 +92,10 @@ smalltalk.method({
 selector: "parse:",
 selector: "parse:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($Smalltalk())._current())._parse_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 messageSends: ["parse:", "current"]}),
 messageSends: ["parse:", "current"]}),
@@ -95,7 +107,8 @@ smalltalk.method({
 selector: "parse:forClass:",
 selector: "parse:forClass:",
 fn: function (aString,aClass){
 fn: function (aString,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
@@ -111,8 +124,10 @@ smalltalk.method({
 selector: "interpreter",
 selector: "interpreter",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
+function $ASTInterpreter(){return smalltalk.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($ASTInterpreter())._new();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["new"]}),
 messageSends: ["new"]}),
@@ -124,7 +139,8 @@ smalltalk.method({
 selector: "testBinarySend",
 selector: "testBinarySend",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
 return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:"]}),
 messageSends: ["assert:equals:", "interpret:"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -135,7 +151,8 @@ smalltalk.method({
 selector: "testBlockLiteral",
 selector: "testBlockLiteral",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.ASTInterpreterTest)})},
@@ -148,7 +165,9 @@ smalltalk.method({
 selector: "testCascade",
 selector: "testCascade",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st((smalltalk.OrderedCollection || OrderedCollection))._with_with_((2),(3)));
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st($OrderedCollection())._with_with_((2),(3)));
 return self}, function($ctx1) {$ctx1.fill(self,"testCascade",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCascade",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:", "with:with:"]}),
 messageSends: ["assert:equals:", "interpret:", "with:with:"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -159,7 +178,8 @@ smalltalk.method({
 selector: "testDynamicArray",
 selector: "testDynamicArray",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:"]}),
 messageSends: ["assert:equals:", "interpret:"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -170,7 +190,8 @@ smalltalk.method({
 selector: "testDynamicDictionary",
 selector: "testDynamicDictionary",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((1)),_st((2)).__minus_gt((3))]));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((1)),_st((2)).__minus_gt((3))]));
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:", "->"]}),
 messageSends: ["assert:equals:", "interpret:", "->"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -181,7 +202,8 @@ smalltalk.method({
 selector: "testInlinedJSStatement",
 selector: "testInlinedJSStatement",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
 return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:", "interpret:withArguments:", "->"]}),
 messageSends: ["assert:equals:", "interpret:", "interpret:withArguments:", "->"]}),
@@ -193,7 +215,8 @@ smalltalk.method({
 selector: "testInstVarAccess",
 selector: "testInstVarAccess",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ x",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ x",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -204,7 +227,9 @@ smalltalk.method({
 selector: "testInstVarAssignment",
 selector: "testInstVarAssignment",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st((smalltalk.Point || Point))._new(),smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((2))])),(2));
+function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st($Point())._new(),smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((2))])),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new", "->"]}),
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new", "->"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -215,7 +240,8 @@ smalltalk.method({
 selector: "testNonlocalReturn",
 selector: "testNonlocalReturn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:"]}),
 messageSends: ["assert:equals:", "interpret:"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -226,7 +252,8 @@ smalltalk.method({
 selector: "testReceiver",
 selector: "testReceiver",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ self",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),_st((2)).__at((3)));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ self",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),_st((2)).__at((3)));
 return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
 messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -237,7 +264,8 @@ smalltalk.method({
 selector: "testTempAssignment",
 selector: "testTempAssignment",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo | a | a := 2. ^ a"),(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo | a | a := 2. ^ a"),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.ASTInterpreterTest)})},
 messageSends: ["assert:equals:", "interpret:"]}),
 messageSends: ["assert:equals:", "interpret:"]}),
 smalltalk.ASTInterpreterTest);
 smalltalk.ASTInterpreterTest);
@@ -251,10 +279,12 @@ smalltalk.method({
 selector: "interpreter",
 selector: "interpreter",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $ASTSteppingInterpreter(){return smalltalk.ASTSteppingInterpreter||(typeof ASTSteppingInterpreter=="undefined"?nil:ASTSteppingInterpreter)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@interpreter"];
 $2=self["@interpreter"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
-self["@interpreter"]=_st((smalltalk.ASTSteppingInterpreter || ASTSteppingInterpreter))._new();
+self["@interpreter"]=_st($ASTSteppingInterpreter())._new();
 $1=self["@interpreter"];
 $1=self["@interpreter"];
 } else {
 } else {
 $1=$2;
 $1=$2;
@@ -270,7 +300,8 @@ smalltalk.method({
 selector: "testAtEnd",
 selector: "testAtEnd",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1 + 2");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1 + 2");
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
@@ -290,7 +321,8 @@ smalltalk.method({
 selector: "testMessageSend",
 selector: "testMessageSend",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1 + 2");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1 + 2");
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
@@ -309,7 +341,8 @@ smalltalk.method({
 selector: "testSimpleStepping",
 selector: "testSimpleStepping",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1");
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(self)._assert_(_st(_st(_st(self)._interpreter())._result())._isNil());
 _st(self)._assert_(_st(_st(_st(self)._interpreter())._result())._isNil());
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
@@ -327,8 +360,10 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 selector: "codeGeneratorClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.CodeGenerator || CodeGenerator);
+function $CodeGenerator(){return smalltalk.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$CodeGenerator();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.CodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.CodeGeneratorTest)})},
 messageSends: []}),
 messageSends: []}),
@@ -340,8 +375,10 @@ smalltalk.method({
 selector: "compiler",
 selector: "compiler",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$2=_st((smalltalk.Compiler || Compiler))._new();
+function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st($Compiler())._new();
 _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
 $1=$3;
 $1=$3;
@@ -356,7 +393,8 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=_st(_st(self)._targetClass())._new();
+return smalltalk.withContext(function($ctx1) { 
+self["@receiver"]=_st(_st(self)._targetClass())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["new", "targetClass"]}),
 messageSends: ["new", "targetClass"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -368,7 +406,8 @@ selector: "should:return:",
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
 var method,result;
 var method,result;
-return smalltalk.withContext(function($ctx1) { 
method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
+return smalltalk.withContext(function($ctx1) { 
+method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
 result=_st(self["@receiver"])._perform_(_st(method)._selector());
 result=_st(self["@receiver"])._perform_(_st(method)._selector());
 _st(_st(self)._targetClass())._removeCompiledMethod_(method);
 _st(_st(self)._targetClass())._removeCompiledMethod_(method);
 _st(self)._assert_equals_(anObject,result);
 _st(self)._assert_equals_(anObject,result);
@@ -382,8 +421,10 @@ smalltalk.method({
 selector: "targetClass",
 selector: "targetClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.DoIt || DoIt);
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$DoIt();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"targetClass",{},smalltalk.CodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"targetClass",{},smalltalk.CodeGeneratorTest)})},
 messageSends: []}),
 messageSends: []}),
@@ -395,7 +436,8 @@ smalltalk.method({
 selector: "tearDown",
 selector: "tearDown",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.CodeGeneratorTest)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.CodeGeneratorTest)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
@@ -405,20 +447,35 @@ smalltalk.method({
 selector: "testAssignment",
 selector: "testAssignment",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testBackslashSelectors",
+smalltalk.method({
+selector: "testBackslashSelectors",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("\x5c arg ^ 4",(4));
+_st(self)._should_return_("\x5c\x5c arg ^ 42",(42));
+return self}, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{},smalltalk.CodeGeneratorTest)})},
+messageSends: ["should:return:"]}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testBlockReturn",
 "_testBlockReturn",
 smalltalk.method({
 smalltalk.method({
 selector: "testBlockReturn",
 selector: "testBlockReturn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},smalltalk.CodeGeneratorTest)})},
@@ -431,7 +488,8 @@ smalltalk.method({
 selector: "testCascades",
 selector: "testCascades",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testCascades",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCascades",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -442,7 +500,8 @@ smalltalk.method({
 selector: "testDynamicArrayElementsOrdered",
 selector: "testDynamicArrayElementsOrdered",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -453,7 +512,8 @@ smalltalk.method({
 selector: "testDynamicDictionaryElementsOrdered",
 selector: "testDynamicDictionaryElementsOrdered",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'->1.\x0a\x09^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'->1.\x0a\x09^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:", "->"]}),
 messageSends: ["should:return:", "->"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -464,7 +524,9 @@ smalltalk.method({
 selector: "testInnerTemporalDependentElementsOrdered",
 selector: "testInnerTemporalDependentElementsOrdered",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((smalltalk.Array || Array)),_st("bar").__minus_gt((2))]);
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt($Array()),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
@@ -478,14 +540,15 @@ smalltalk.method({
 selector: "testLiterals",
 selector: "testLiterals",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1",(1));
 _st(self)._should_return_("foo ^ 'hello'","hello");
 _st(self)._should_return_("foo ^ 'hello'","hello");
 _st(self)._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ true",true);
 _st(self)._should_return_("foo ^ true",true);
 _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
-_st(self)._should_return_("foo ^ #hello",smalltalk.symbolFor("hello"));
+_st(self)._should_return_("foo ^ #hello","hello");
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
 return self}, function($ctx1) {$ctx1.fill(self,"testLiterals",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testLiterals",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:", "->"]}),
 messageSends: ["should:return:", "->"]}),
@@ -497,7 +560,8 @@ smalltalk.method({
 selector: "testLocalReturn",
 selector: "testLocalReturn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1",(1));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
@@ -512,7 +576,8 @@ smalltalk.method({
 selector: "testMessageSends",
 selector: "testMessageSends",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 asString","1");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 asString","1");
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
@@ -527,7 +592,8 @@ smalltalk.method({
 selector: "testMutableLiterals",
 selector: "testMutableLiterals",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -538,7 +604,8 @@ smalltalk.method({
 selector: "testNestedIfTrue",
 selector: "testNestedIfTrue",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
@@ -552,7 +619,8 @@ smalltalk.method({
 selector: "testNonLocalReturn",
 selector: "testNonLocalReturn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo [ ^ 1 ] value",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo [ ^ 1 ] value",(1));
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
@@ -560,14 +628,29 @@ return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{},smalltalk
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testPascalCaseGlobal",
+smalltalk.method({
+selector: "testPascalCaseGlobal",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^Object",_st(smalltalk)._at_("Object"));
+_st(self)._should_return_("foo ^NonExistent",nil);
+return self}, function($ctx1) {$ctx1.fill(self,"testPascalCaseGlobal",{},smalltalk.CodeGeneratorTest)})},
+messageSends: ["should:return:", "at:"]}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testSendReceiverAndArgumentsOrdered",
 "_testSendReceiverAndArgumentsOrdered",
 smalltalk.method({
 smalltalk.method({
 selector: "testSendReceiverAndArgumentsOrdered",
 selector: "testSendReceiverAndArgumentsOrdered",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
-_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]);
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[$Array(),(2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{},smalltalk.CodeGeneratorTest)})},
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
@@ -578,7 +661,8 @@ smalltalk.method({
 selector: "testifFalse",
 selector: "testifFalse",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
@@ -592,7 +676,8 @@ smalltalk.method({
 selector: "testifFalseIfTrue",
 selector: "testifFalseIfTrue",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
@@ -606,7 +691,8 @@ smalltalk.method({
 selector: "testifNil",
 selector: "testifNil",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
@@ -620,7 +706,8 @@ smalltalk.method({
 selector: "testifNilIfNotNil",
 selector: "testifNilIfNotNil",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
@@ -634,7 +721,8 @@ smalltalk.method({
 selector: "testifNotNil",
 selector: "testifNotNil",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
@@ -642,13 +730,31 @@ return self}, function($ctx1) {$ctx1.fill(self,"testifNotNil",{},smalltalk.CodeG
 messageSends: ["should:return:"]}),
 messageSends: ["should:return:"]}),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testifNotNilWithArgument",
+smalltalk.method({
+selector: "testifNotNilWithArgument",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil);
+_st(self)._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5));
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(5));
+return self}, function($ctx1) {$ctx1.fill(self,"testifNotNilWithArgument",{},smalltalk.CodeGeneratorTest)})},
+messageSends: ["should:return:"]}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testifTrue",
 "_testifTrue",
 smalltalk.method({
 smalltalk.method({
 selector: "testifTrue",
 selector: "testifTrue",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
@@ -662,7 +768,8 @@ smalltalk.method({
 selector: "testifTrueIfFalse",
 selector: "testifTrueIfFalse",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
@@ -679,8 +786,10 @@ smalltalk.method({
 selector: "codeGeneratorClass",
 selector: "codeGeneratorClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$InliningCodeGenerator();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.InliningCodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.InliningCodeGeneratorTest)})},
 messageSends: []}),
 messageSends: []}),
@@ -696,12 +805,15 @@ selector: "testClassRefVar",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node;
 var node;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.ClassReferenceNode || ClassReferenceNode))._new();
+function $ClassReferenceNode(){return smalltalk.ClassReferenceNode||(typeof ClassReferenceNode=="undefined"?nil:ClassReferenceNode)}
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($ClassReferenceNode())._new();
 _st($1)._value_("Object");
 _st($1)._value_("Object");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_(node);
+_st(_st($SemanticAnalyzer())._new())._visit_(node);
 _st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
 _st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},smalltalk.ScopeVarTest)})},
 messageSends: ["value:", "new", "yourself", "visit:", "assert:", "isClassRefVar", "binding"]}),
 messageSends: ["value:", "new", "yourself", "visit:", "assert:", "isClassRefVar", "binding"]}),
@@ -714,12 +826,15 @@ selector: "testInstanceVar",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,scope;
 var node,scope;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+scope=_st($MethodLexicalScope())._new();
 _st(scope)._addIVar_("bzzz");
 _st(scope)._addIVar_("bzzz");
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
@@ -733,15 +848,19 @@ selector: "testPseudoVar",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,pseudoVars;
 var node,pseudoVars;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 pseudoVars=["self", "super", "true", "false", "nil"];
 pseudoVars=["self", "super", "true", "false", "nil"];
 _st(pseudoVars)._do_((function(each){
 _st(pseudoVars)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.VariableNode || VariableNode))._new();
+return smalltalk.withContext(function($ctx2) {
+$1=_st($VariableNode())._new();
 _st($1)._value_(each);
 _st($1)._value_(each);
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
 node;
 node;
-return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
+return _st(self)._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isPseudoVar());
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},smalltalk.ScopeVarTest)})},
 messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"]}),
 messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"]}),
@@ -754,12 +873,15 @@ selector: "testTempVar",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,scope;
 var node,scope;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+scope=_st($MethodLexicalScope())._new();
 _st(scope)._addTemp_("bzzz");
 _st(scope)._addTemp_("bzzz");
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
@@ -773,12 +895,15 @@ selector: "testUnknownVar",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node;
 var node;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isNil());
+_st(self)._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},smalltalk.ScopeVarTest)})},
 messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"]}),
 messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"]}),
 smalltalk.ScopeVarTest);
 smalltalk.ScopeVarTest);
@@ -792,7 +917,10 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@analyzer"]=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_((smalltalk.Object || Object));
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+self["@analyzer"]=_st($SemanticAnalyzer())._on_($Object());
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["on:"]}),
 messageSends: ["on:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -804,11 +932,14 @@ selector: "testAssignment",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo self := 1";
+function $InvalidAssignmentError(){return smalltalk.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo self := 1";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$InvalidAssignmentError());
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -820,7 +951,8 @@ selector: "testNonLocalReturn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. ^ a";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. ^ a";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
 _st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
@@ -835,7 +967,8 @@ selector: "testNonLocalReturn2",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ ^ a] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ ^ a] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
 _st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
@@ -850,7 +983,8 @@ selector: "testScope",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := a ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
@@ -865,7 +999,8 @@ selector: "testScope2",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ | b | b := a ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
@@ -880,7 +1015,8 @@ selector: "testScopeLevel",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ | b | b := a ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_equals_(_st(_st(ast)._scope())._scopeLevel(),(1));
 _st(self)._assert_equals_(_st(_st(ast)._scope())._scopeLevel(),(1));
@@ -896,11 +1032,14 @@ selector: "testUnknownVariables",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | b + a";
+function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | b + a";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$UnknownVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -912,11 +1051,14 @@ selector: "testUnknownVariablesWithScope",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
+function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$UnknownVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -928,7 +1070,8 @@ selector: "testVariableShadowing",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -942,11 +1085,14 @@ selector: "testVariableShadowing2",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a := 2 ]";
+function $ShadowingVariableError(){return smalltalk.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | a | a := 2 ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ShadowingVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -958,7 +1104,8 @@ selector: "testVariableShadowing3",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := 2 ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := 2 ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -972,7 +1119,8 @@ selector: "testVariableShadowing4",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -986,11 +1134,14 @@ selector: "testVariableShadowing5",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
+function $ShadowingVariableError(){return smalltalk.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ShadowingVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 messageSends: ["parse:", "should:raise:", "visit:"]}),
 smalltalk.SemanticAnalyzerTest);
 smalltalk.SemanticAnalyzerTest);
@@ -1002,7 +1153,8 @@ selector: "testVariablesLookup",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := a ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
 _st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());

+ 271 - 104
js/Compiler-Tests.js

@@ -7,8 +7,10 @@ selector: "analyze:forClass:",
 category: 'interpreting',
 category: 'interpreting',
 fn: function (aNode,aClass){
 fn: function (aNode,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_(aClass))._visit_(aNode);
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+_st(_st($SemanticAnalyzer())._on_(aClass))._visit_(aNode);
 $1=aNode;
 $1=aNode;
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
@@ -26,8 +28,10 @@ selector: "interpret:",
 category: 'interpreting',
 category: 'interpreting',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._interpret_withArguments_(aString,_st((smalltalk.Dictionary || Dictionary))._new());
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._interpret_withArguments_(aString,_st($Dictionary())._new());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpret:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpret:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 args: ["aString"],
 args: ["aString"],
@@ -45,11 +49,14 @@ category: 'interpreting',
 fn: function (aString,anObject,aDictionary){
 fn: function (aString,anObject,aDictionary){
 var self=this;
 var self=this;
 var ctx;
 var ctx;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-ctx=_st((smalltalk.AIContext || AIContext))._new();
+function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+ctx=_st($AIContext())._new();
 _st(ctx)._receiver_(anObject);
 _st(ctx)._receiver_(anObject);
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
 _st(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
return _st(ctx)._localAt_put_(key,value);
+return smalltalk.withContext(function($ctx2) {
+return _st(ctx)._localAt_put_(key,value);
 }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
 $2=_st(self)._interpreter();
 $2=_st(self)._interpreter();
 _st($2)._context_(ctx);
 _st($2)._context_(ctx);
@@ -72,8 +79,10 @@ selector: "interpret:withArguments:",
 category: 'interpreting',
 category: 'interpreting',
 fn: function (aString,aDictionary){
 fn: function (aString,aDictionary){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(self)._interpret_receiver_withArguments_(aString,_st((smalltalk.Object || Object))._new(),aDictionary);
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self)._interpret_receiver_withArguments_(aString,_st($Object())._new(),aDictionary);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:",{aString:aString,aDictionary:aDictionary},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:",{aString:aString,aDictionary:aDictionary},smalltalk.AbstractASTInterpreterTest)})},
 args: ["aString", "aDictionary"],
 args: ["aString", "aDictionary"],
@@ -90,7 +99,8 @@ selector: "interpreter",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._subclassResponsibility();
 $1=_st(self)._subclassResponsibility();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AbstractASTInterpreterTest)})},
@@ -108,8 +118,10 @@ selector: "parse:",
 category: 'parsing',
 category: 'parsing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._parse_(aString);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st($Smalltalk())._current())._parse_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
 args: ["aString"],
 args: ["aString"],
@@ -126,7 +138,8 @@ selector: "parse:forClass:",
 category: 'parsing',
 category: 'parsing',
 fn: function (aString,aClass){
 fn: function (aString,aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 $1=_st(self)._analyze_forClass_(_st(self)._parse_(aString),aClass);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},smalltalk.AbstractASTInterpreterTest)})},
@@ -147,8 +160,10 @@ selector: "interpreter",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.ASTInterpreter || ASTInterpreter))._new();
+function $ASTInterpreter(){return smalltalk.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($ASTInterpreter())._new();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTInterpreterTest)})},
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
@@ -165,7 +180,8 @@ selector: "testBinarySend",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo 2+3+4"),(9));
 return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testBinarySend\x0a\x09self assert: (self interpret: 'foo 2+3+4') equals: 9",
 source: "testBinarySend\x0a\x09self assert: (self interpret: 'foo 2+3+4') equals: 9",
@@ -181,7 +197,8 @@ selector: "testBlockLiteral",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
 _st(self)._assert_equals_(_st(self)._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.ASTInterpreterTest)})},
@@ -199,7 +216,9 @@ selector: "testCascade",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st((smalltalk.OrderedCollection || OrderedCollection))._with_with_((2),(3)));
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ OrderedCollection new add: 2; add: 3; yourself"),_st($OrderedCollection())._with_with_((2),(3)));
 return self}, function($ctx1) {$ctx1.fill(self,"testCascade",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCascade",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testCascade\x0a\x09self assert: (self interpret: 'foo ^ OrderedCollection new add: 2; add: 3; yourself') equals: (OrderedCollection with: 2 with: 3)",
 source: "testCascade\x0a\x09self assert: (self interpret: 'foo ^ OrderedCollection new add: 2; add: 3; yourself') equals: (OrderedCollection with: 2 with: 3)",
@@ -215,7 +234,8 @@ selector: "testDynamicArray",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testDynamicArray\x0a\x09self assert: (self interpret: 'foo ^ {1+1. 2+2}') equals: #(2 4)",
 source: "testDynamicArray\x0a\x09self assert: (self interpret: 'foo ^ {1+1. 2+2}') equals: #(2 4)",
@@ -231,7 +251,8 @@ selector: "testDynamicDictionary",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((1)),_st((2)).__minus_gt((3))]));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((1)),_st((2)).__minus_gt((3))]));
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testDynamicDictionary\x0a\x09self assert: (self interpret: 'foo ^ #{1->1. 2->3}') equals: #{1->1. 2->3}",
 source: "testDynamicDictionary\x0a\x09self assert: (self interpret: 'foo ^ #{1->1. 2->3}') equals: #{1->1. 2->3}",
@@ -247,7 +268,8 @@ selector: "testInlinedJSStatement",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo <return 2+3>"),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
 _st(self)._assert_equals_(_st(self)._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((3))])),(5));
 return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
@@ -264,7 +286,8 @@ selector: "testInstVarAccess",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ x",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ x",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testInstVarAccess\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo ^ x'\x0a\x09\x09\x09receiver: 2@3\x0a\x09\x09\x09withArguments: #{})\x0a\x09\x09equals: 2",
 source: "testInstVarAccess\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo ^ x'\x0a\x09\x09\x09receiver: 2@3\x0a\x09\x09\x09withArguments: #{})\x0a\x09\x09equals: 2",
@@ -280,7 +303,9 @@ selector: "testInstVarAssignment",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st((smalltalk.Point || Point))._new(),smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((2))])),(2));
+function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st($Point())._new(),smalltalk.HashedCollection._fromPairs_([_st("anInteger").__minus_gt((2))])),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testInstVarAssignment\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo: anInteger x := anInteger. ^ x'\x0a\x09\x09\x09receiver: Point new\x0a\x09\x09\x09withArguments: #{'anInteger' -> 2})\x0a\x09\x09equals: 2",
 source: "testInstVarAssignment\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo: anInteger x := anInteger. ^ x'\x0a\x09\x09\x09receiver: Point new\x0a\x09\x09\x09withArguments: #{'anInteger' -> 2})\x0a\x09\x09equals: 2",
@@ -296,7 +321,8 @@ selector: "testNonlocalReturn",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testNonlocalReturn\x0a\x09self assert: (self interpret: 'foo true ifTrue: [ ^ 1 ]. ^2') equals: 1",
 source: "testNonlocalReturn\x0a\x09self assert: (self interpret: 'foo true ifTrue: [ ^ 1 ]. ^2') equals: 1",
@@ -312,7 +338,8 @@ selector: "testReceiver",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ self",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),_st((2)).__at((3)));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_receiver_withArguments_("foo ^ self",_st((2)).__at((3)),smalltalk.HashedCollection._fromPairs_([])),_st((2)).__at((3)));
 return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testReceiver\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo ^ self'\x0a\x09\x09\x09receiver: 2@3\x0a\x09\x09\x09withArguments: #{})\x0a\x09\x09equals: 2@3",
 source: "testReceiver\x0a\x09self\x0a\x09\x09assert: (self\x0a\x09\x09\x09interpret: 'foo ^ self'\x0a\x09\x09\x09receiver: 2@3\x0a\x09\x09\x09withArguments: #{})\x0a\x09\x09equals: 2@3",
@@ -328,7 +355,8 @@ selector: "testTempAssignment",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self)._interpret_("foo | a | a := 2. ^ a"),(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self)._interpret_("foo | a | a := 2. ^ a"),(2));
 return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.ASTInterpreterTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.ASTInterpreterTest)})},
 args: [],
 args: [],
 source: "testTempAssignment\x0a\x09self assert: (self interpret: 'foo | a | a := 2. ^ a') equals: 2",
 source: "testTempAssignment\x0a\x09self assert: (self interpret: 'foo | a | a := 2. ^ a') equals: 2",
@@ -347,10 +375,12 @@ selector: "interpreter",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $ASTSteppingInterpreter(){return smalltalk.ASTSteppingInterpreter||(typeof ASTSteppingInterpreter=="undefined"?nil:ASTSteppingInterpreter)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@interpreter"];
 $2=self["@interpreter"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
-self["@interpreter"]=_st((smalltalk.ASTSteppingInterpreter || ASTSteppingInterpreter))._new();
+self["@interpreter"]=_st($ASTSteppingInterpreter())._new();
 $1=self["@interpreter"];
 $1=self["@interpreter"];
 } else {
 } else {
 $1=$2;
 $1=$2;
@@ -371,7 +401,8 @@ selector: "testAtEnd",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1 + 2");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1 + 2");
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
 _st(self)._deny_(_st(_st(self)._interpreter())._atEnd());
@@ -396,7 +427,8 @@ selector: "testMessageSend",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1 + 2");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1 + 2");
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
@@ -420,7 +452,8 @@ selector: "testSimpleStepping",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._interpret_("foo 1");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._interpret_("foo 1");
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
 _st(self)._assert_(_st(_st(_st(self)._interpreter())._result())._isNil());
 _st(self)._assert_(_st(_st(_st(self)._interpreter())._result())._isNil());
 _st(_st(self)._interpreter())._step();
 _st(_st(self)._interpreter())._step();
@@ -443,8 +476,10 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.CodeGenerator || CodeGenerator);
+function $CodeGenerator(){return smalltalk.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$CodeGenerator();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.CodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
@@ -461,8 +496,10 @@ selector: "compiler",
 category: 'factory',
 category: 'factory',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
-$2=_st((smalltalk.Compiler || Compiler))._new();
+function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=_st($Compiler())._new();
 _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 _st($2)._codeGeneratorClass_(_st(self)._codeGeneratorClass());
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
 $1=$3;
 $1=$3;
@@ -482,7 +519,8 @@ selector: "setUp",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=_st(_st(self)._targetClass())._new();
+return smalltalk.withContext(function($ctx1) { 
+self["@receiver"]=_st(_st(self)._targetClass())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "setUp\x0a\x09receiver := self targetClass new",
 source: "setUp\x0a\x09receiver := self targetClass new",
@@ -499,7 +537,8 @@ category: 'testing',
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
 var method,result;
 var method,result;
-return smalltalk.withContext(function($ctx1) { 
method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
+return smalltalk.withContext(function($ctx1) { 
+method=_st(_st(self)._compiler())._install_forClass_category_(aString,_st(self)._targetClass(),"tests");
 result=_st(self["@receiver"])._perform_(_st(method)._selector());
 result=_st(self["@receiver"])._perform_(_st(method)._selector());
 _st(_st(self)._targetClass())._removeCompiledMethod_(method);
 _st(_st(self)._targetClass())._removeCompiledMethod_(method);
 _st(self)._assert_equals_(anObject,result);
 _st(self)._assert_equals_(anObject,result);
@@ -518,8 +557,10 @@ selector: "targetClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.DoIt || DoIt);
+function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$DoIt();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"targetClass",{},smalltalk.CodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"targetClass",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
@@ -536,7 +577,8 @@ selector: "tearDown",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.CodeGeneratorTest)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "tearDown\x0a\x09\x22receiver := nil\x22",
 source: "tearDown\x0a\x09\x22receiver := nil\x22",
 messageSends: [],
 messageSends: [],
@@ -551,7 +593,8 @@ selector: "testAssignment",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
 _st(self)._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{},smalltalk.CodeGeneratorTest)})},
@@ -562,6 +605,24 @@ referencedClasses: []
 }),
 }),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testBackslashSelectors",
+smalltalk.method({
+selector: "testBackslashSelectors",
+category: 'tests',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("\x5c arg ^ 4",(4));
+_st(self)._should_return_("\x5c\x5c arg ^ 42",(42));
+return self}, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{},smalltalk.CodeGeneratorTest)})},
+args: [],
+source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42",
+messageSends: ["should:return:"],
+referencedClasses: []
+}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testBlockReturn",
 "_testBlockReturn",
 smalltalk.method({
 smalltalk.method({
@@ -569,7 +630,8 @@ selector: "testBlockReturn",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},smalltalk.CodeGeneratorTest)})},
@@ -587,7 +649,8 @@ selector: "testCascades",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testCascades",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCascades",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
 source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
@@ -603,7 +666,8 @@ selector: "testDynamicArrayElementsOrdered",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).",
 source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).",
@@ -619,7 +683,8 @@ selector: "testDynamicDictionaryElementsOrdered",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'->1.\x0a\x09^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'->1.\x0a\x09^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := ''foo''->1.\x0a\x09^ #{ x. (true ifTrue: [ x := ''bar''->2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
 source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := ''foo''->1.\x0a\x09^ #{ x. (true ifTrue: [ x := ''bar''->2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
@@ -635,7 +700,9 @@ selector: "testInnerTemporalDependentElementsOrdered",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((smalltalk.Array || Array)),_st("bar").__minus_gt((2))]);
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt($Array()),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]);
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
 _st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._fromPairs_([_st("foo").__minus_gt((1)),_st("bar").__minus_gt((2))]));
@@ -654,14 +721,15 @@ selector: "testLiterals",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1",(1));
 _st(self)._should_return_("foo ^ 'hello'","hello");
 _st(self)._should_return_("foo ^ 'hello'","hello");
 _st(self)._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
 _st(self)._should_return_("foo ^ true",true);
 _st(self)._should_return_("foo ^ true",true);
 _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ false",false);
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
 _st(self)._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._fromPairs_([_st((1)).__minus_gt((2)),_st((3)).__minus_gt((4))]));
-_st(self)._should_return_("foo ^ #hello",smalltalk.symbolFor("hello"));
+_st(self)._should_return_("foo ^ #hello","hello");
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
 _st(self)._should_return_("foo ^ -123.456",(-123.456));
 return self}, function($ctx1) {$ctx1.fill(self,"testLiterals",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testLiterals",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
@@ -678,7 +746,8 @@ selector: "testLocalReturn",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1",(1));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo ",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
 _st(self)._should_return_("foo self asString",self["@receiver"]);
@@ -698,7 +767,8 @@ selector: "testMessageSends",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 asString","1");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 asString","1");
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 1",(2));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 + 2 * 3",(9));
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
 _st(self)._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
@@ -718,7 +788,8 @@ selector: "testMutableLiterals",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://github.com/amber-smalltalk/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
 source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://github.com/amber-smalltalk/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
@@ -734,7 +805,8 @@ selector: "testNestedIfTrue",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
 _st(self)._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
@@ -753,7 +825,8 @@ selector: "testNonLocalReturn",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo [ ^ 1 ] value",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo [ ^ 1 ] value",(1));
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo [ ^ 1 + 1 ] value",(2));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
 _st(self)._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
@@ -765,6 +838,24 @@ referencedClasses: []
 }),
 }),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testPascalCaseGlobal",
+smalltalk.method({
+selector: "testPascalCaseGlobal",
+category: 'tests',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^Object",_st(smalltalk)._at_("Object"));
+_st(self)._should_return_("foo ^NonExistent",nil);
+return self}, function($ctx1) {$ctx1.fill(self,"testPascalCaseGlobal",{},smalltalk.CodeGeneratorTest)})},
+args: [],
+source: "testPascalCaseGlobal\x0a\x09self should: 'foo ^Object' return: (smalltalk at: 'Object').\x0a\x09self should: 'foo ^NonExistent' return: nil",
+messageSends: ["should:return:", "at:"],
+referencedClasses: []
+}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testSendReceiverAndArgumentsOrdered",
 "_testSendReceiverAndArgumentsOrdered",
 smalltalk.method({
 smalltalk.method({
@@ -772,8 +863,10 @@ selector: "testSendReceiverAndArgumentsOrdered",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
-_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[(smalltalk.Array || Array),(2)]);
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
+_st(self)._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[$Array(),(2)]);
 return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{},smalltalk.CodeGeneratorTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{},smalltalk.CodeGeneratorTest)})},
 args: [],
 args: [],
 source: "testSendReceiverAndArgumentsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a' return: {Array. 2}.",
 source: "testSendReceiverAndArgumentsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a' return: {Array. 2}.",
@@ -789,7 +882,8 @@ selector: "testifFalse",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
@@ -808,7 +902,8 @@ selector: "testifFalseIfTrue",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
 _st(self)._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
@@ -827,7 +922,8 @@ selector: "testifNil",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
@@ -846,7 +942,8 @@ selector: "testifNilIfNotNil",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
 _st(self)._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
@@ -865,7 +962,8 @@ selector: "testifNotNil",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
 _st(self)._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
@@ -877,6 +975,28 @@ referencedClasses: []
 }),
 }),
 smalltalk.CodeGeneratorTest);
 smalltalk.CodeGeneratorTest);
 
 
+smalltalk.addMethod(
+"_testifNotNilWithArgument",
+smalltalk.method({
+selector: "testifNotNilWithArgument",
+category: 'tests',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil);
+_st(self)._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5));
+_st(self)._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3));
+_st(self)._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(5));
+return self}, function($ctx1) {$ctx1.fill(self,"testifNotNilWithArgument",{},smalltalk.CodeGeneratorTest)})},
+args: [],
+source: "testifNotNilWithArgument\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ]' return: nil.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 5.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 5",
+messageSends: ["should:return:"],
+referencedClasses: []
+}),
+smalltalk.CodeGeneratorTest);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 "_testifTrue",
 "_testifTrue",
 smalltalk.method({
 smalltalk.method({
@@ -884,7 +1004,8 @@ selector: "testifTrue",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
@@ -903,7 +1024,8 @@ selector: "testifTrueIfFalse",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
 _st(self)._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
@@ -925,8 +1047,10 @@ selector: "codeGeneratorClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.InliningCodeGenerator || InliningCodeGenerator);
+function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$InliningCodeGenerator();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.InliningCodeGeneratorTest)})},
 }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.InliningCodeGeneratorTest)})},
 args: [],
 args: [],
@@ -947,12 +1071,15 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node;
 var node;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.ClassReferenceNode || ClassReferenceNode))._new();
+function $ClassReferenceNode(){return smalltalk.ClassReferenceNode||(typeof ClassReferenceNode=="undefined"?nil:ClassReferenceNode)}
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($ClassReferenceNode())._new();
 _st($1)._value_("Object");
 _st($1)._value_("Object");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-_st(_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._new())._visit_(node);
+_st(_st($SemanticAnalyzer())._new())._visit_(node);
 _st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
 _st(self)._assert_(_st(_st(node)._binding())._isClassRefVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},smalltalk.ScopeVarTest)})},
 args: [],
 args: [],
@@ -970,12 +1097,15 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,scope;
 var node,scope;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+scope=_st($MethodLexicalScope())._new();
 _st(scope)._addIVar_("bzzz");
 _st(scope)._addIVar_("bzzz");
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
@@ -994,15 +1124,19 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,pseudoVars;
 var node,pseudoVars;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 pseudoVars=["self", "super", "true", "false", "nil"];
 pseudoVars=["self", "super", "true", "false", "nil"];
 _st(pseudoVars)._do_((function(each){
 _st(pseudoVars)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=_st((smalltalk.VariableNode || VariableNode))._new();
+return smalltalk.withContext(function($ctx2) {
+$1=_st($VariableNode())._new();
 _st($1)._value_(each);
 _st($1)._value_(each);
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
 node;
 node;
-return _st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isPseudoVar());
+return _st(self)._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isPseudoVar());
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},smalltalk.ScopeVarTest)})},
 args: [],
 args: [],
@@ -1020,12 +1154,15 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node,scope;
 var node,scope;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-scope=_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new();
+scope=_st($MethodLexicalScope())._new();
 _st(scope)._addTemp_("bzzz");
 _st(scope)._addTemp_("bzzz");
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
 _st(self)._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
 return self}, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
@@ -1044,12 +1181,15 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var node;
 var node;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.VariableNode || VariableNode))._new();
+function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
+function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($VariableNode())._new();
 _st($1)._value_("bzzz");
 _st($1)._value_("bzzz");
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
 node=$2;
 node=$2;
-_st(self)._assert_(_st(_st(_st((smalltalk.MethodLexicalScope || MethodLexicalScope))._new())._bindingFor_(node))._isNil());
+_st(self)._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},smalltalk.ScopeVarTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},smalltalk.ScopeVarTest)})},
 args: [],
 args: [],
 source: "testUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self assert: (MethodLexicalScope new bindingFor: node) isNil",
 source: "testUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self assert: (MethodLexicalScope new bindingFor: node) isNil",
@@ -1068,7 +1208,10 @@ selector: "setUp",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@analyzer"]=_st((smalltalk.SemanticAnalyzer || SemanticAnalyzer))._on_((smalltalk.Object || Object));
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
+return smalltalk.withContext(function($ctx1) { 
+self["@analyzer"]=_st($SemanticAnalyzer())._on_($Object());
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
 source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
@@ -1085,11 +1228,14 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo self := 1";
+function $InvalidAssignmentError(){return smalltalk.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo self := 1";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.InvalidAssignmentError || InvalidAssignmentError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$InvalidAssignmentError());
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "testAssignment\x0a\x09| src ast |\x0a\x0a\x09src := 'foo self := 1'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: InvalidAssignmentError",
 source: "testAssignment\x0a\x09| src ast |\x0a\x0a\x09src := 'foo self := 1'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: InvalidAssignmentError",
@@ -1106,7 +1252,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. ^ a";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. ^ a";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
 _st(self)._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
@@ -1126,7 +1273,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ ^ a] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ ^ a] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
 _st(self)._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
@@ -1146,7 +1294,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := a ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
@@ -1166,7 +1315,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ | b | b := a ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
 _st(self)._deny_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope()).__eq_eq(_st(ast)._scope()));
@@ -1186,7 +1336,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ | b | b := a ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ | b | b := a ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_equals_(_st(_st(ast)._scope())._scopeLevel(),(1));
 _st(self)._assert_equals_(_st(_st(ast)._scope())._scopeLevel(),(1));
@@ -1207,11 +1358,14 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | b + a";
+function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | b + a";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$UnknownVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "testUnknownVariables\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | b + a'.\x0a\x09ast := smalltalk parse: src.\x0a\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 source: "testUnknownVariables\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | b + a'.\x0a\x09ast := smalltalk parse: src.\x0a\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
@@ -1228,11 +1382,14 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
+function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.UnknownVariableError || UnknownVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$UnknownVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "testUnknownVariablesWithScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a b | [ c + 1. [ a + 1. d + 1 ]]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
 source: "testUnknownVariablesWithScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a b | [ c + 1. [ a + 1. d + 1 ]]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
@@ -1249,7 +1406,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -1268,11 +1426,14 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | a | a := 2 ]";
+function $ShadowingVariableError(){return smalltalk.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | a | a := 2 ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ShadowingVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "testVariableShadowing2\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | a | a := 2 ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 source: "testVariableShadowing2\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | a | a := 2 ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
@@ -1289,7 +1450,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := 2 ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := 2 ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -1308,7 +1470,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
@@ -1327,11 +1490,14 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
+function $ShadowingVariableError(){return smalltalk.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ShadowingVariableError || ShadowingVariableError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@analyzer"])._visit_(ast);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ShadowingVariableError());
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
 args: [],
 args: [],
 source: "testVariableShadowing5\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
 source: "testVariableShadowing5\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]'.\x0a\x09ast := smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
@@ -1348,7 +1514,8 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var src,ast;
 var src,ast;
-return smalltalk.withContext(function($ctx1) { 
src="foo | a | a + 1. [ | b | b := a ]";
+return smalltalk.withContext(function($ctx1) { 
+src="foo | a | a + 1. [ | b | b := a ]";
 ast=_st(smalltalk)._parse_(src);
 ast=_st(smalltalk)._parse_(src);
 _st(self["@analyzer"])._visit_(ast);
 _st(self["@analyzer"])._visit_(ast);
 _st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
 _st(self)._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());

+ 18 - 9
js/Examples.deploy.js

@@ -6,9 +6,11 @@ smalltalk.method({
 selector: "decrease",
 selector: "decrease",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__minus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@count"]=_st(self["@count"]).__minus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self["@count"])._asString());
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
 messageSends: ["-", "contents:", "with:", "asString"]}),
 messageSends: ["-", "contents:", "with:", "asString"]}),
@@ -20,9 +22,11 @@ smalltalk.method({
 selector: "increase",
 selector: "increase",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__plus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@count"]=_st(self["@count"]).__plus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self["@count"])._asString());
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
 messageSends: ["+", "contents:", "with:", "asString"]}),
 messageSends: ["+", "contents:", "with:", "asString"]}),
@@ -34,7 +38,8 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
 self["@count"]=(0);
 self["@count"]=(0);
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Counter)})},
 messageSends: ["initialize"]}),
 messageSends: ["initialize"]}),
@@ -46,7 +51,8 @@ smalltalk.method({
 selector: "renderOn:",
 selector: "renderOn:",
 fn: function (html){
 fn: function (html){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6;
 $1=_st(html)._h1();
 $1=_st(html)._h1();
 _st($1)._with_(_st(self["@count"])._asString());
 _st($1)._with_(_st(self["@count"])._asString());
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
@@ -54,12 +60,14 @@ self["@header"]=$2;
 $3=_st(html)._button();
 $3=_st(html)._button();
 _st($3)._with_("++");
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
 $4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._increase();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $5=_st(html)._button();
 $5=_st(html)._button();
 _st($5)._with_("--");
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
 $6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._decrease();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
 messageSends: ["with:", "asString", "h1", "yourself", "button", "onClick:", "increase", "decrease"]}),
 messageSends: ["with:", "asString", "h1", "yourself", "button", "onClick:", "increase", "decrease"]}),
@@ -72,7 +80,8 @@ smalltalk.method({
 selector: "tryExample",
 selector: "tryExample",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
 return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
 messageSends: ["appendToJQuery:", "asJQuery", "new"]}),
 messageSends: ["appendToJQuery:", "asJQuery", "new"]}),
 smalltalk.Counter.klass);
 smalltalk.Counter.klass);

+ 18 - 9
js/Examples.js

@@ -8,9 +8,11 @@ selector: "decrease",
 category: 'actions',
 category: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__minus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@count"]=_st(self["@count"]).__minus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self["@count"])._asString());
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
 args: [],
 args: [],
@@ -27,9 +29,11 @@ selector: "increase",
 category: 'actions',
 category: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@count"]=_st(self["@count"]).__plus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@count"]=_st(self["@count"]).__plus((1));
 _st(self["@header"])._contents_((function(html){
 _st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
return _st(html)._with_(_st(self["@count"])._asString());
+return smalltalk.withContext(function($ctx2) {
+return _st(html)._with_(_st(self["@count"])._asString());
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
 args: [],
 args: [],
@@ -46,7 +50,8 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Widget.fn.prototype._initialize.apply(_st(self), []);
 self["@count"]=(0);
 self["@count"]=(0);
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Counter)})},
 args: [],
 args: [],
@@ -63,7 +68,8 @@ selector: "renderOn:",
 category: 'rendering',
 category: 'rendering',
 fn: function (html){
 fn: function (html){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6;
 $1=_st(html)._h1();
 $1=_st(html)._h1();
 _st($1)._with_(_st(self["@count"])._asString());
 _st($1)._with_(_st(self["@count"])._asString());
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
@@ -71,12 +77,14 @@ self["@header"]=$2;
 $3=_st(html)._button();
 $3=_st(html)._button();
 _st($3)._with_("++");
 _st($3)._with_("++");
 $4=_st($3)._onClick_((function(){
 $4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._increase();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._increase();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $5=_st(html)._button();
 $5=_st(html)._button();
 _st($5)._with_("--");
 _st($5)._with_("--");
 $6=_st($5)._onClick_((function(){
 $6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._decrease();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._decrease();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
 args: ["html"],
 args: ["html"],
@@ -94,7 +102,8 @@ selector: "tryExample",
 category: 'example',
 category: 'example',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._new())._appendToJQuery_(_st("body")._asJQuery());
 return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
 args: [],
 args: [],
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",

File diff ditekan karena terlalu besar
+ 246 - 121
js/IDE.deploy.js


File diff ditekan karena terlalu besar
+ 246 - 121
js/IDE.js


+ 159 - 77
js/Importer-Exporter.deploy.js

@@ -7,16 +7,19 @@ selector: "nextChunk",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var char,result,chunk;
 var char,result,chunk;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 var $early={};
 var $early={};
 try {
 try {
 result=_st("")._writeStream();
 result=_st("")._writeStream();
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
+return smalltalk.withContext(function($ctx2) {
+char=_st(self["@stream"])._next();
 char;
 char;
 return _st(char)._notNil();
 return _st(char)._notNil();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(char).__eq("!");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(char).__eq("!");
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(self["@stream"])._peek()).__eq("!");
 $2=_st(_st(self["@stream"])._peek()).__eq("!");
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -41,7 +44,8 @@ smalltalk.method({
 selector: "stream:",
 selector: "stream:",
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@stream"]=aStream;
+return smalltalk.withContext(function($ctx1) { 
+self["@stream"]=aStream;
 return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.ChunkParser)})},
 return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.ChunkParser)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ChunkParser);
 smalltalk.ChunkParser);
@@ -53,7 +57,8 @@ smalltalk.method({
 selector: "on:",
 selector: "on:",
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._stream_(aStream);
 $1=_st(_st(self)._new())._stream_(aStream);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},smalltalk.ChunkParser.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},smalltalk.ChunkParser.klass)})},
@@ -68,7 +73,8 @@ smalltalk.method({
 selector: "classNameFor:",
 selector: "classNameFor:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
@@ -91,10 +97,15 @@ smalltalk.method({
 selector: "exportAll",
 selector: "exportAll",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
-return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st($Smalltalk())._current())._packages())._do_((function(pkg){
+return smalltalk.withContext(function($ctx3) {
+return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
 }, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 return $1;
 return $1;
@@ -108,9 +119,12 @@ smalltalk.method({
 selector: "exportClass:",
 selector: "exportClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_(aClass,stream);
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+_st(self)._exportDefinitionOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
@@ -126,16 +140,19 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6,$7;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 $2=_st($1)._nextPutAll_(", [");
 $2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(", ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_("], '");
@@ -162,7 +179,9 @@ smalltalk.method({
 selector: "exportMetaDefinitionOf:on:",
 selector: "exportMetaDefinitionOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=aStream;
 $2=aStream;
@@ -170,11 +189,13 @@ _st($2)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $3=_st($2)._nextPutAll_(".iVarNames = [");
 $3=_st($2)._nextPutAll_(".iVarNames = [");
 $3;
 $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(",");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
+_st(aStream)._nextPutAll_(_st("];").__comma(_st($String())._lf()));
 };
 };
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 messageSends: ["ifFalse:", "nextPutAll:", ",", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"]}),
 messageSends: ["ifFalse:", "nextPutAll:", ",", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"]}),
@@ -186,7 +207,8 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._lf();
 _st($1)._lf();
@@ -225,11 +247,14 @@ smalltalk.method({
 selector: "exportMethodsOf:on:",
 selector: "exportMethodsOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
 _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(each)._category())._match_("^\x5c*");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(each)._category())._match_("^\x5c*");
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 };
 };
@@ -246,13 +271,18 @@ selector: "exportPackage:",
 fn: function (packageName){
 fn: function (packageName){
 var self=this;
 var self=this;
 var package_;
 var package_;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+package_=_st(_st($Smalltalk())._current())._packageAt_(packageName);
 package_;
 package_;
 _st(self)._exportPackageDefinitionOf_on_(package_,stream);
 _st(self)._exportPackageDefinitionOf_on_(package_,stream);
 _st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
 _st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
+return smalltalk.withContext(function($ctx3) {
+return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
@@ -267,7 +297,8 @@ smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
 selector: "exportPackageDefinitionOf:on:",
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addPackage(");
 _st($1)._nextPutAll_("smalltalk.addPackage(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(package_)._name())).__comma("');"));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(package_)._name())).__comma("');"));
@@ -283,14 +314,21 @@ selector: "exportPackageExtensionsOf:on:",
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
 var name;
 var name;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 name=_st(package_)._name();
 name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) {
return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+_st(_st($Package())._sortedClasses_(_st(_st($Smalltalk())._current())._classes()))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st([each,_st(each)._class()])._do_((function(aClass){
+return smalltalk.withContext(function($ctx3) {
+return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(method){
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(method){
-return smalltalk.withContext(function($ctx4) {
$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
+return smalltalk.withContext(function($ctx4) {
+$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 };
 };
@@ -310,7 +348,8 @@ smalltalk.method({
 selector: "chunkEscape:",
 selector: "chunkEscape:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},smalltalk.ChunkExporter)})},
 }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},smalltalk.ChunkExporter)})},
@@ -323,7 +362,8 @@ smalltalk.method({
 selector: "classNameFor:",
 selector: "classNameFor:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
@@ -346,7 +386,8 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6,$7;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
 _st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
 _st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
 _st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
@@ -354,9 +395,11 @@ _st($1)._lf();
 _st($1)._tab();
 _st($1)._tab();
 $2=_st($1)._nextPutAll_("instanceVariableNames: '");
 $2=_st($1)._nextPutAll_("instanceVariableNames: '");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(" ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("'");
 _st($3)._nextPutAll_("'");
@@ -384,7 +427,8 @@ smalltalk.method({
 selector: "exportMetaDefinitionOf:on:",
 selector: "exportMetaDefinitionOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=aStream;
 $2=aStream;
@@ -392,9 +436,11 @@ _st($2)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
 $3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3;
 $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(" ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $4=aStream;
 $4=aStream;
 _st($4)._nextPutAll_("'!");
 _st($4)._nextPutAll_("'!");
@@ -412,7 +458,8 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._lf();
 _st($1)._lf();
 _st($1)._lf();
 _st($1)._lf();
@@ -429,14 +476,17 @@ smalltalk.method({
 selector: "exportMethods:category:of:on:",
 selector: "exportMethods:category:of:on:",
 fn: function (methods,category,aClass,aStream){
 fn: function (methods,category,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
 _st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
 $2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 $2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 _st(_st(methods)._sorted_((function(a,b){
 _st(_st(methods)._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_(" !");
 _st($3)._nextPutAll_(" !");
@@ -453,19 +503,24 @@ selector: "exportMethodsOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
 var map;
 var map;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-map=_st((smalltalk.Dictionary || Dictionary))._new();
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+map=_st($Dictionary())._new();
 _st(aClass)._protocolsDo_((function(category,methods){
 _st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx2) {
$1=_st(category)._match_("^\x5c*");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(category)._match_("^\x5c*");
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 return _st(map)._at_put_(category,methods);
 return _st(map)._at_put_(category,methods);
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 _st(_st(_st(map)._keys())._sorted_((function(a,b){
 _st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(a).__lt_eq(b);
+return smalltalk.withContext(function($ctx2) {
+return _st(a).__lt_eq(b);
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 var methods;
 var methods;
-return smalltalk.withContext(function($ctx2) {
methods=_st(map)._at_(category);
+return smalltalk.withContext(function($ctx2) {
+methods=_st(map)._at_(category);
 methods;
 methods;
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
@@ -479,7 +534,8 @@ smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
 selector: "exportPackageDefinitionOf:on:",
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("'!"));
 _st($1)._nextPutAll_(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("'!"));
 $2=_st($1)._lf();
 $2=_st($1)._lf();
@@ -494,23 +550,32 @@ selector: "exportPackageExtensionsOf:on:",
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
 var name,map;
 var name,map;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 name=_st(package_)._name();
 name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) {
map=_st((smalltalk.Dictionary || Dictionary))._new();
+_st(_st($Package())._sortedClasses_(_st(_st($Smalltalk())._current())._classes()))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st([each,_st(each)._class()])._do_((function(aClass){
+return smalltalk.withContext(function($ctx3) {
+map=_st($Dictionary())._new();
 map;
 map;
 _st(aClass)._protocolsDo_((function(category,methods){
 _st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx4) {
$1=_st(category)._match_(_st("^\x5c*").__comma(name));
+return smalltalk.withContext(function($ctx4) {
+$1=_st(category)._match_(_st("^\x5c*").__comma(name));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(map)._at_put_(category,methods);
 return _st(map)._at_put_(category,methods);
 };
 };
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 return _st(_st(_st(map)._keys())._sorted_((function(a,b){
 return _st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
return _st(a).__lt_eq(b);
+return smalltalk.withContext(function($ctx4) {
+return _st(a).__lt_eq(b);
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 var methods;
 var methods;
-return smalltalk.withContext(function($ctx4) {
methods=_st(map)._at_(category);
+return smalltalk.withContext(function($ctx4) {
+methods=_st(map)._at_(category);
 methods;
 methods;
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
@@ -529,16 +594,19 @@ smalltalk.method({
 selector: "exportDefinitionOf:on:",
 selector: "exportDefinitionOf:on:",
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 $2=_st($1)._nextPutAll_(", [");
 $2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(", ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_("], '");
@@ -555,7 +623,8 @@ smalltalk.method({
 selector: "exportMethod:of:on:",
 selector: "exportMethod:of:on:",
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._lf();
 _st($1)._lf();
@@ -588,20 +657,25 @@ selector: "import:",
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
 var chunk,result,parser,lastEmpty;
 var chunk,result,parser,lastEmpty;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
+function $ChunkParser(){return smalltalk.ChunkParser||(typeof ChunkParser=="undefined"?nil:ChunkParser)}
+function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+parser=_st($ChunkParser())._on_(aStream);
 lastEmpty=false;
 lastEmpty=false;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
+return smalltalk.withContext(function($ctx2) {
+chunk=_st(parser)._nextChunk();
 chunk;
 chunk;
 return _st(chunk)._isNil();
 return _st(chunk)._isNil();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(chunk)._isEmpty();
+return smalltalk.withContext(function($ctx2) {
+$1=_st(chunk)._isEmpty();
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 lastEmpty=true;
 lastEmpty=true;
 return lastEmpty;
 return lastEmpty;
 } else {
 } else {
-result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
+result=_st(_st($Compiler())._new())._evaluateExpression_(chunk);
 result;
 result;
 $2=lastEmpty;
 $2=lastEmpty;
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -624,8 +698,10 @@ smalltalk.method({
 selector: "initializePackageNamed:prefix:",
 selector: "initializePackageNamed:prefix:",
 fn: function (packageName,aString){
 fn: function (packageName,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.Package || Package))._named_(packageName);
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($Package())._named_(packageName);
 _st($1)._setupClasses();
 _st($1)._setupClasses();
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
@@ -640,15 +716,18 @@ selector: "loadPackage:prefix:",
 fn: function (packageName,aString){
 fn: function (packageName,aString){
 var self=this;
 var self=this;
 var url;
 var url;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
 url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
 _st(jQuery)._ajax_options_(url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
 _st(jQuery)._ajax_options_(url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(jqXHR)._readyState()).__eq((4));
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(jqXHR)._readyState()).__eq((4));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1)})})),_st("error").__minus_gt((function(){
 }, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1)})})),_st("error").__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(window)._alert_(_st("Could not load package at: ").__comma(url));
+return smalltalk.withContext(function($ctx2) {
+return _st(window)._alert_(_st("Could not load package at: ").__comma(url));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.PackageLoader)})},
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.PackageLoader)})},
 messageSends: [",", "ajax:options:", "->", "ifTrue:", "initializePackageNamed:prefix:", "=", "readyState", "alert:"]}),
 messageSends: [",", "ajax:options:", "->", "ifTrue:", "initializePackageNamed:prefix:", "=", "readyState", "alert:"]}),
@@ -660,8 +739,10 @@ smalltalk.method({
 selector: "loadPackages:prefix:",
 selector: "loadPackages:prefix:",
 fn: function (aCollection,aString){
 fn: function (aCollection,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._loadPackage_prefix_(each,aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(aCollection)._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._loadPackage_prefix_(each,aString);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader)})},
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader)})},
 messageSends: ["do:", "loadPackage:prefix:"]}),
 messageSends: ["do:", "loadPackage:prefix:"]}),
@@ -674,7 +755,8 @@ smalltalk.method({
 selector: "loadPackages:prefix:",
 selector: "loadPackages:prefix:",
 fn: function (aCollection,aString){
 fn: function (aCollection,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader.klass)})},

+ 159 - 77
js/Importer-Exporter.js

@@ -8,16 +8,19 @@ category: 'reading',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var char,result,chunk;
 var char,result,chunk;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 var $early={};
 var $early={};
 try {
 try {
 result=_st("")._writeStream();
 result=_st("")._writeStream();
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
char=_st(self["@stream"])._next();
+return smalltalk.withContext(function($ctx2) {
+char=_st(self["@stream"])._next();
 char;
 char;
 return _st(char)._notNil();
 return _st(char)._notNil();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(char).__eq("!");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(char).__eq("!");
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(self["@stream"])._peek()).__eq("!");
 $2=_st(_st(self["@stream"])._peek()).__eq("!");
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -47,7 +50,8 @@ selector: "stream:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@stream"]=aStream;
+return smalltalk.withContext(function($ctx1) { 
+self["@stream"]=aStream;
 return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.ChunkParser)})},
 return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.ChunkParser)})},
 args: ["aStream"],
 args: ["aStream"],
 source: "stream: aStream\x0a\x09stream := aStream",
 source: "stream: aStream\x0a\x09stream := aStream",
@@ -64,7 +68,8 @@ selector: "on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._stream_(aStream);
 $1=_st(_st(self)._new())._stream_(aStream);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},smalltalk.ChunkParser.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},smalltalk.ChunkParser.klass)})},
@@ -84,7 +89,8 @@ selector: "classNameFor:",
 category: 'private',
 category: 'private',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
@@ -112,10 +118,15 @@ selector: "exportAll",
 category: 'fileOut',
 category: 'fileOut',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){
-return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st($Smalltalk())._current())._packages())._do_((function(pkg){
+return smalltalk.withContext(function($ctx3) {
+return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name()));
 }, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 return $1;
 return $1;
@@ -134,9 +145,12 @@ selector: "exportClass:",
 category: 'fileOut',
 category: 'fileOut',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
_st(self)._exportDefinitionOf_on_(aClass,stream);
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+_st(self)._exportDefinitionOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMethodsOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 _st(self)._exportMetaDefinitionOf_on_(aClass,stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
 return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream);
@@ -157,16 +171,19 @@ selector: "exportDefinitionOf:on:",
 category: 'private',
 category: 'private',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6,$7;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 $2=_st($1)._nextPutAll_(", [");
 $2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(", ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_("], '");
@@ -198,7 +215,9 @@ selector: "exportMetaDefinitionOf:on:",
 category: 'private',
 category: 'private',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=aStream;
 $2=aStream;
@@ -206,11 +225,13 @@ _st($2)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aCla
 $3=_st($2)._nextPutAll_(".iVarNames = [");
 $3=_st($2)._nextPutAll_(".iVarNames = [");
 $3;
 $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(",");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(",");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf()));
+_st(aStream)._nextPutAll_(_st("];").__comma(_st($String())._lf()));
 };
 };
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 args: ["aClass", "aStream"],
@@ -227,7 +248,8 @@ selector: "exportMethod:of:on:",
 category: 'private',
 category: 'private',
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._lf();
 _st($1)._lf();
@@ -271,11 +293,14 @@ selector: "exportMethodsOf:on:",
 category: 'private',
 category: 'private',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
 _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(each)._category())._match_("^\x5c*");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(each)._category())._match_("^\x5c*");
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 };
 };
@@ -297,13 +322,18 @@ category: 'fileOut',
 fn: function (packageName){
 fn: function (packageName){
 var self=this;
 var self=this;
 var package_;
 var package_;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.String || String))._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName);
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($String())._streamContents_((function(stream){
+return smalltalk.withContext(function($ctx2) {
+package_=_st(_st($Smalltalk())._current())._packageAt_(packageName);
 package_;
 package_;
 _st(self)._exportPackageDefinitionOf_on_(package_,stream);
 _st(self)._exportPackageDefinitionOf_on_(package_,stream);
 _st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
 _st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
+return smalltalk.withContext(function($ctx3) {
+return _st(stream)._nextPutAll_(_st(self)._exportClass_(each));
 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
 return _st(self)._exportPackageExtensionsOf_on_(package_,stream);
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
@@ -323,7 +353,8 @@ selector: "exportPackageDefinitionOf:on:",
 category: 'private',
 category: 'private',
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addPackage(");
 _st($1)._nextPutAll_("smalltalk.addPackage(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(package_)._name())).__comma("');"));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(package_)._name())).__comma("');"));
@@ -344,14 +375,21 @@ category: 'private',
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
 var name;
 var name;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 name=_st(package_)._name();
 name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) {
return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+_st(_st($Package())._sortedClasses_(_st(_st($Smalltalk())._current())._classes()))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st([each,_st(each)._class()])._do_((function(aClass){
+return smalltalk.withContext(function($ctx3) {
+return _st(_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx4) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(method){
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(method){
-return smalltalk.withContext(function($ctx4) {
$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
+return smalltalk.withContext(function($ctx4) {
+$1=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 return _st(self)._exportMethod_of_on_(method,aClass,aStream);
 };
 };
@@ -376,7 +414,8 @@ selector: "chunkEscape:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},smalltalk.ChunkExporter)})},
 }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},smalltalk.ChunkExporter)})},
@@ -394,7 +433,8 @@ selector: "classNameFor:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(aClass)._isMetaclass();
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
 $1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
@@ -422,7 +462,8 @@ selector: "exportDefinitionOf:on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5,$6,$7;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5,$6,$7;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
 _st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass()));
 _st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
 _st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass)));
@@ -430,9 +471,11 @@ _st($1)._lf();
 _st($1)._tab();
 _st($1)._tab();
 $2=_st($1)._nextPutAll_("instanceVariableNames: '");
 $2=_st($1)._nextPutAll_("instanceVariableNames: '");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(" ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("'");
 _st($3)._nextPutAll_("'");
@@ -465,7 +508,8 @@ selector: "exportMetaDefinitionOf:on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4,$5;
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=aStream;
 $2=aStream;
@@ -473,9 +517,11 @@ _st($2)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class()));
 $3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3=_st($2)._nextPutAll_(" instanceVariableNames: '");
 $3;
 $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(" ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(" ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $4=aStream;
 $4=aStream;
 _st($4)._nextPutAll_("'!");
 _st($4)._nextPutAll_("'!");
@@ -498,7 +544,8 @@ selector: "exportMethod:of:on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._lf();
 _st($1)._lf();
 _st($1)._lf();
 _st($1)._lf();
@@ -520,14 +567,17 @@ selector: "exportMethods:category:of:on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (methods,category,aClass,aStream){
 fn: function (methods,category,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
 _st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass)));
 $2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 $2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!"));
 _st(_st(methods)._sorted_((function(a,b){
 _st(_st(methods)._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._exportMethod_of_on_(each,aClass,aStream);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._exportMethod_of_on_(each,aClass,aStream);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_(" !");
 _st($3)._nextPutAll_(" !");
@@ -549,19 +599,24 @@ category: 'not yet classified',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
 var map;
 var map;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-map=_st((smalltalk.Dictionary || Dictionary))._new();
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+map=_st($Dictionary())._new();
 _st(aClass)._protocolsDo_((function(category,methods){
 _st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx2) {
$1=_st(category)._match_("^\x5c*");
+return smalltalk.withContext(function($ctx2) {
+$1=_st(category)._match_("^\x5c*");
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 return _st(map)._at_put_(category,methods);
 return _st(map)._at_put_(category,methods);
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 _st(_st(_st(map)._keys())._sorted_((function(a,b){
 _st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
return _st(a).__lt_eq(b);
+return smalltalk.withContext(function($ctx2) {
+return _st(a).__lt_eq(b);
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 var methods;
 var methods;
-return smalltalk.withContext(function($ctx2) {
methods=_st(map)._at_(category);
+return smalltalk.withContext(function($ctx2) {
+methods=_st(map)._at_(category);
 methods;
 methods;
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1)})}));
@@ -580,7 +635,8 @@ selector: "exportPackageDefinitionOf:on:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("'!"));
 _st($1)._nextPutAll_(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("'!"));
 $2=_st($1)._lf();
 $2=_st($1)._lf();
@@ -600,23 +656,32 @@ category: 'not yet classified',
 fn: function (package_,aStream){
 fn: function (package_,aStream){
 var self=this;
 var self=this;
 var name,map;
 var name,map;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 name=_st(package_)._name();
 name=_st(package_)._name();
-_st(_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st([each,_st(each)._class()])._do_((function(aClass){
-return smalltalk.withContext(function($ctx3) {
map=_st((smalltalk.Dictionary || Dictionary))._new();
+_st(_st($Package())._sortedClasses_(_st(_st($Smalltalk())._current())._classes()))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st([each,_st(each)._class()])._do_((function(aClass){
+return smalltalk.withContext(function($ctx3) {
+map=_st($Dictionary())._new();
 map;
 map;
 _st(aClass)._protocolsDo_((function(category,methods){
 _st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx4) {
$1=_st(category)._match_(_st("^\x5c*").__comma(name));
+return smalltalk.withContext(function($ctx4) {
+$1=_st(category)._match_(_st("^\x5c*").__comma(name));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(map)._at_put_(category,methods);
 return _st(map)._at_put_(category,methods);
 };
 };
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 return _st(_st(_st(map)._keys())._sorted_((function(a,b){
 return _st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
return _st(a).__lt_eq(b);
+return smalltalk.withContext(function($ctx4) {
+return _st(a).__lt_eq(b);
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(category){
 var methods;
 var methods;
-return smalltalk.withContext(function($ctx4) {
methods=_st(map)._at_(category);
+return smalltalk.withContext(function($ctx4) {
+methods=_st(map)._at_(category);
 methods;
 methods;
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream);
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
 }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx1)})}));
@@ -640,16 +705,19 @@ selector: "exportDefinitionOf:on:",
 category: 'private',
 category: 'private',
 fn: function (aClass,aStream){
 fn: function (aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_("smalltalk.addClass(");
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', "));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass())));
 $2=_st($1)._nextPutAll_(", [");
 $2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'"));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aStream)._nextPutAll_(", ");
+return smalltalk.withContext(function($ctx2) {
+return _st(aStream)._nextPutAll_(", ");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_("], '");
@@ -671,7 +739,8 @@ selector: "exportMethod:of:on:",
 category: 'private',
 category: 'private',
 fn: function (aMethod,aClass,aStream){
 fn: function (aMethod,aClass,aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._nextPutAll_("smalltalk.addMethod(");
 _st($1)._lf();
 _st($1)._lf();
@@ -709,20 +778,25 @@ category: 'fileIn',
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
 var chunk,result,parser,lastEmpty;
 var chunk,result,parser,lastEmpty;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream);
+function $ChunkParser(){return smalltalk.ChunkParser||(typeof ChunkParser=="undefined"?nil:ChunkParser)}
+function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+parser=_st($ChunkParser())._on_(aStream);
 lastEmpty=false;
 lastEmpty=false;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
chunk=_st(parser)._nextChunk();
+return smalltalk.withContext(function($ctx2) {
+chunk=_st(parser)._nextChunk();
 chunk;
 chunk;
 return _st(chunk)._isNil();
 return _st(chunk)._isNil();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(chunk)._isEmpty();
+return smalltalk.withContext(function($ctx2) {
+$1=_st(chunk)._isEmpty();
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 lastEmpty=true;
 lastEmpty=true;
 return lastEmpty;
 return lastEmpty;
 } else {
 } else {
-result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk);
+result=_st(_st($Compiler())._new())._evaluateExpression_(chunk);
 result;
 result;
 $2=lastEmpty;
 $2=lastEmpty;
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -750,8 +824,10 @@ selector: "initializePackageNamed:prefix:",
 category: 'laoding',
 category: 'laoding',
 fn: function (packageName,aString){
 fn: function (packageName,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.Package || Package))._named_(packageName);
+function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($Package())._named_(packageName);
 _st($1)._setupClasses();
 _st($1)._setupClasses();
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
 $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st"));
@@ -771,15 +847,18 @@ category: 'laoding',
 fn: function (packageName,aString){
 fn: function (packageName,aString){
 var self=this;
 var self=this;
 var url;
 var url;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
 url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
 _st(jQuery)._ajax_options_(url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
 _st(jQuery)._ajax_options_(url,smalltalk.HashedCollection._fromPairs_([_st("type").__minus_gt("GET"),_st("dataType").__minus_gt("script"),_st("complete").__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(jqXHR)._readyState()).__eq((4));
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(jqXHR)._readyState()).__eq((4));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 return _st(self)._initializePackageNamed_prefix_(packageName,aString);
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1)})})),_st("error").__minus_gt((function(){
 }, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1)})})),_st("error").__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(window)._alert_(_st("Could not load package at: ").__comma(url));
+return smalltalk.withContext(function($ctx2) {
+return _st(window)._alert_(_st("Could not load package at: ").__comma(url));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.PackageLoader)})},
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.PackageLoader)})},
 args: ["packageName", "aString"],
 args: ["packageName", "aString"],
@@ -796,8 +875,10 @@ selector: "loadPackages:prefix:",
 category: 'laoding',
 category: 'laoding',
 fn: function (aCollection,aString){
 fn: function (aCollection,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._loadPackage_prefix_(each,aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(aCollection)._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._loadPackage_prefix_(each,aString);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader)})},
 return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader)})},
 args: ["aCollection", "aString"],
 args: ["aCollection", "aString"],
@@ -815,7 +896,8 @@ selector: "loadPackages:prefix:",
 category: 'not yet classified',
 category: 'not yet classified',
 fn: function (aCollection,aString){
 fn: function (aCollection,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.PackageLoader.klass)})},

+ 56 - 28
js/Kernel-Announcements.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "announcementClass",
 selector: "announcementClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@announcementClass"];
 $1=self["@announcementClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"announcementClass",{},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"announcementClass",{},smalltalk.AnnouncementSubscription)})},
@@ -19,7 +20,8 @@ smalltalk.method({
 selector: "announcementClass:",
 selector: "announcementClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@announcementClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@announcementClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass},smalltalk.AnnouncementSubscription)})},
 return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass},smalltalk.AnnouncementSubscription)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.AnnouncementSubscription);
 smalltalk.AnnouncementSubscription);
@@ -30,7 +32,8 @@ smalltalk.method({
 selector: "block",
 selector: "block",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@block"];
 $1=self["@block"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"block",{},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"block",{},smalltalk.AnnouncementSubscription)})},
@@ -43,7 +46,8 @@ smalltalk.method({
 selector: "block:",
 selector: "block:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@block"]=aBlock;
+return smalltalk.withContext(function($ctx1) { 
+self["@block"]=aBlock;
 return self}, function($ctx1) {$ctx1.fill(self,"block:",{aBlock:aBlock},smalltalk.AnnouncementSubscription)})},
 return self}, function($ctx1) {$ctx1.fill(self,"block:",{aBlock:aBlock},smalltalk.AnnouncementSubscription)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.AnnouncementSubscription);
 smalltalk.AnnouncementSubscription);
@@ -54,7 +58,8 @@ smalltalk.method({
 selector: "deliver:",
 selector: "deliver:",
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(_st(self)._block())._value_(anAnnouncement);
 _st(_st(self)._block())._value_(anAnnouncement);
@@ -69,7 +74,8 @@ smalltalk.method({
 selector: "handlesAnnouncement:",
 selector: "handlesAnnouncement:",
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
@@ -85,8 +91,10 @@ smalltalk.method({
 selector: "announce:",
 selector: "announce:",
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@subscriptions"])._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._deliver_(anAnnouncement);
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@subscriptions"])._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._deliver_(anAnnouncement);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
 return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
 messageSends: ["do:", "deliver:"]}),
 messageSends: ["do:", "deliver:"]}),
@@ -98,8 +106,10 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@subscriptions"]=_st((smalltalk.Array || Array))._new();
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+self["@subscriptions"]=_st($Array())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Announcer)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Announcer)})},
 messageSends: ["initialize", "new"]}),
 messageSends: ["initialize", "new"]}),
 smalltalk.Announcer);
 smalltalk.Announcer);
@@ -110,8 +120,10 @@ smalltalk.method({
 selector: "on:do:",
 selector: "on:do:",
 fn: function (aClass,aBlock){
 fn: function (aClass,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.AnnouncementSubscription || AnnouncementSubscription))._new();
+function $AnnouncementSubscription(){return smalltalk.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($AnnouncementSubscription())._new();
 _st($1)._block_(aBlock);
 _st($1)._block_(aBlock);
 _st($1)._announcementClass_(aClass);
 _st($1)._announcementClass_(aClass);
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
@@ -131,7 +143,8 @@ smalltalk.method({
 selector: "current",
 selector: "current",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@current"];
 $2=self["@current"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
@@ -150,7 +163,8 @@ smalltalk.method({
 selector: "new",
 selector: "new",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.SystemAnnouncer.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.SystemAnnouncer.klass)})},
 messageSends: ["shouldNotImplement"]}),
 messageSends: ["shouldNotImplement"]}),
 smalltalk.SystemAnnouncer.klass);
 smalltalk.SystemAnnouncer.klass);
@@ -163,7 +177,8 @@ smalltalk.method({
 selector: "theClass",
 selector: "theClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SystemAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SystemAnnouncement)})},
@@ -176,7 +191,8 @@ smalltalk.method({
 selector: "theClass:",
 selector: "theClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SystemAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SystemAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.SystemAnnouncement);
 smalltalk.SystemAnnouncement);
@@ -190,7 +206,8 @@ smalltalk.method({
 selector: "theClass",
 selector: "theClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassAnnouncement)})},
@@ -203,7 +220,8 @@ smalltalk.method({
 selector: "theClass:",
 selector: "theClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ClassAnnouncement);
 smalltalk.ClassAnnouncement);
@@ -232,7 +250,8 @@ smalltalk.method({
 selector: "method",
 selector: "method",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@method"];
 $1=self["@method"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodAnnouncement)})},
@@ -245,7 +264,8 @@ smalltalk.method({
 selector: "method:",
 selector: "method:",
 fn: function (aCompiledMethod){
 fn: function (aCompiledMethod){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@method"]=aCompiledMethod;
+return smalltalk.withContext(function($ctx1) { 
+self["@method"]=aCompiledMethod;
 return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.MethodAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.MethodAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodAnnouncement);
 smalltalk.MethodAnnouncement);
@@ -262,7 +282,8 @@ smalltalk.method({
 selector: "oldMethod",
 selector: "oldMethod",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@oldMethod"];
 $1=self["@oldMethod"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"oldMethod",{},smalltalk.MethodModified)})},
 }, function($ctx1) {$ctx1.fill(self,"oldMethod",{},smalltalk.MethodModified)})},
@@ -275,7 +296,8 @@ smalltalk.method({
 selector: "oldMethod:",
 selector: "oldMethod:",
 fn: function (aMethod){
 fn: function (aMethod){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@oldMethod"]=aMethod;
+return smalltalk.withContext(function($ctx1) { 
+self["@oldMethod"]=aMethod;
 return self}, function($ctx1) {$ctx1.fill(self,"oldMethod:",{aMethod:aMethod},smalltalk.MethodModified)})},
 return self}, function($ctx1) {$ctx1.fill(self,"oldMethod:",{aMethod:aMethod},smalltalk.MethodModified)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodModified);
 smalltalk.MethodModified);
@@ -292,7 +314,8 @@ smalltalk.method({
 selector: "package",
 selector: "package",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@package"];
 $1=self["@package"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageAnnouncement)})},
@@ -305,7 +328,8 @@ smalltalk.method({
 selector: "package:",
 selector: "package:",
 fn: function (aPackage){
 fn: function (aPackage){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@package"]=aPackage;
+return smalltalk.withContext(function($ctx1) { 
+self["@package"]=aPackage;
 return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.PackageAnnouncement);
 smalltalk.PackageAnnouncement);
@@ -325,7 +349,8 @@ smalltalk.method({
 selector: "protocol",
 selector: "protocol",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@protocol"];
 $1=self["@protocol"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.ProtocolAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.ProtocolAnnouncement)})},
@@ -338,7 +363,8 @@ smalltalk.method({
 selector: "protocol:",
 selector: "protocol:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@protocol"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@protocol"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.ProtocolAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.ProtocolAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ProtocolAnnouncement);
 smalltalk.ProtocolAnnouncement);
@@ -349,7 +375,8 @@ smalltalk.method({
 selector: "theClass",
 selector: "theClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ProtocolAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ProtocolAnnouncement)})},
@@ -362,7 +389,8 @@ smalltalk.method({
 selector: "theClass:",
 selector: "theClass:",
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ProtocolAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ProtocolAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ProtocolAnnouncement);
 smalltalk.ProtocolAnnouncement);

+ 56 - 28
js/Kernel-Announcements.js

@@ -8,7 +8,8 @@ selector: "announcementClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@announcementClass"];
 $1=self["@announcementClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"announcementClass",{},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"announcementClass",{},smalltalk.AnnouncementSubscription)})},
@@ -26,7 +27,8 @@ selector: "announcementClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@announcementClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@announcementClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass},smalltalk.AnnouncementSubscription)})},
 return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass},smalltalk.AnnouncementSubscription)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "announcementClass: aClass\x0a\x09announcementClass := aClass",
 source: "announcementClass: aClass\x0a\x09announcementClass := aClass",
@@ -42,7 +44,8 @@ selector: "block",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@block"];
 $1=self["@block"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"block",{},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"block",{},smalltalk.AnnouncementSubscription)})},
@@ -60,7 +63,8 @@ selector: "block:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@block"]=aBlock;
+return smalltalk.withContext(function($ctx1) { 
+self["@block"]=aBlock;
 return self}, function($ctx1) {$ctx1.fill(self,"block:",{aBlock:aBlock},smalltalk.AnnouncementSubscription)})},
 return self}, function($ctx1) {$ctx1.fill(self,"block:",{aBlock:aBlock},smalltalk.AnnouncementSubscription)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "block: aBlock\x0a\x09block := aBlock",
 source: "block: aBlock\x0a\x09block := aBlock",
@@ -76,7 +80,8 @@ selector: "deliver:",
 category: 'announcing',
 category: 'announcing',
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 $1=_st(self)._handlesAnnouncement_(anAnnouncement);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(_st(self)._block())._value_(anAnnouncement);
 _st(_st(self)._block())._value_(anAnnouncement);
@@ -96,7 +101,8 @@ selector: "handlesAnnouncement:",
 category: 'announcing',
 category: 'announcing',
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 $1=_st(anAnnouncement)._isKindOf_(_st(self)._announcementClass());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
 }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
@@ -118,8 +124,10 @@ selector: "announce:",
 category: 'announcing',
 category: 'announcing',
 fn: function (anAnnouncement){
 fn: function (anAnnouncement){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@subscriptions"])._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._deliver_(anAnnouncement);
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@subscriptions"])._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._deliver_(anAnnouncement);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
 return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
 args: ["anAnnouncement"],
 args: ["anAnnouncement"],
@@ -136,8 +144,10 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@subscriptions"]=_st((smalltalk.Array || Array))._new();
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+self["@subscriptions"]=_st($Array())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Announcer)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Announcer)})},
 args: [],
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := Array new",
 source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := Array new",
@@ -153,8 +163,10 @@ selector: "on:do:",
 category: 'subscribing',
 category: 'subscribing',
 fn: function (aClass,aBlock){
 fn: function (aClass,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.AnnouncementSubscription || AnnouncementSubscription))._new();
+function $AnnouncementSubscription(){return smalltalk.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($AnnouncementSubscription())._new();
 _st($1)._block_(aBlock);
 _st($1)._block_(aBlock);
 _st($1)._announcementClass_(aClass);
 _st($1)._announcementClass_(aClass);
 $2=_st($1)._yourself();
 $2=_st($1)._yourself();
@@ -180,7 +192,8 @@ selector: "current",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@current"];
 $2=self["@current"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
 self["@current"]=smalltalk.Announcer.klass.fn.prototype._new.apply(_st(self), []);
@@ -204,7 +217,8 @@ selector: "new",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.SystemAnnouncer.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.SystemAnnouncer.klass)})},
 args: [],
 args: [],
 source: "new\x0a\x09self shouldNotImplement",
 source: "new\x0a\x09self shouldNotImplement",
@@ -223,7 +237,8 @@ selector: "theClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SystemAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SystemAnnouncement)})},
@@ -241,7 +256,8 @@ selector: "theClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SystemAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SystemAnnouncement)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 source: "theClass: aClass\x0a\x09theClass := aClass",
@@ -260,7 +276,8 @@ selector: "theClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassAnnouncement)})},
@@ -278,7 +295,8 @@ selector: "theClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassAnnouncement)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 source: "theClass: aClass\x0a\x09theClass := aClass",
@@ -317,7 +335,8 @@ selector: "method",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@method"];
 $1=self["@method"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodAnnouncement)})},
@@ -335,7 +354,8 @@ selector: "method:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aCompiledMethod){
 fn: function (aCompiledMethod){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@method"]=aCompiledMethod;
+return smalltalk.withContext(function($ctx1) { 
+self["@method"]=aCompiledMethod;
 return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.MethodAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.MethodAnnouncement)})},
 args: ["aCompiledMethod"],
 args: ["aCompiledMethod"],
 source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
 source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
@@ -357,7 +377,8 @@ selector: "oldMethod",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@oldMethod"];
 $1=self["@oldMethod"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"oldMethod",{},smalltalk.MethodModified)})},
 }, function($ctx1) {$ctx1.fill(self,"oldMethod",{},smalltalk.MethodModified)})},
@@ -375,7 +396,8 @@ selector: "oldMethod:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aMethod){
 fn: function (aMethod){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@oldMethod"]=aMethod;
+return smalltalk.withContext(function($ctx1) { 
+self["@oldMethod"]=aMethod;
 return self}, function($ctx1) {$ctx1.fill(self,"oldMethod:",{aMethod:aMethod},smalltalk.MethodModified)})},
 return self}, function($ctx1) {$ctx1.fill(self,"oldMethod:",{aMethod:aMethod},smalltalk.MethodModified)})},
 args: ["aMethod"],
 args: ["aMethod"],
 source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
 source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
@@ -397,7 +419,8 @@ selector: "package",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@package"];
 $1=self["@package"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageAnnouncement)})},
@@ -415,7 +438,8 @@ selector: "package:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aPackage){
 fn: function (aPackage){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@package"]=aPackage;
+return smalltalk.withContext(function($ctx1) { 
+self["@package"]=aPackage;
 return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageAnnouncement)})},
 args: ["aPackage"],
 args: ["aPackage"],
 source: "package: aPackage\x0a\x09package := aPackage",
 source: "package: aPackage\x0a\x09package := aPackage",
@@ -440,7 +464,8 @@ selector: "protocol",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@protocol"];
 $1=self["@protocol"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.ProtocolAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.ProtocolAnnouncement)})},
@@ -458,7 +483,8 @@ selector: "protocol:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@protocol"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@protocol"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.ProtocolAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.ProtocolAnnouncement)})},
 args: ["aString"],
 args: ["aString"],
 source: "protocol: aString\x0a\x09protocol := aString",
 source: "protocol: aString\x0a\x09protocol := aString",
@@ -474,7 +500,8 @@ selector: "theClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@theClass"];
 $1=self["@theClass"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ProtocolAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ProtocolAnnouncement)})},
@@ -492,7 +519,8 @@ selector: "theClass:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aClass){
 fn: function (aClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@theClass"]=aClass;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ProtocolAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ProtocolAnnouncement)})},
 args: ["aClass"],
 args: ["aClass"],
 source: "theClass: aClass\x0a\x09theClass := aClass",
 source: "theClass: aClass\x0a\x09theClass := aClass",

File diff ditekan karena terlalu besar
+ 265 - 138
js/Kernel-Classes.deploy.js


File diff ditekan karena terlalu besar
+ 264 - 140
js/Kernel-Classes.js


File diff ditekan karena terlalu besar
+ 257 - 128
js/Kernel-Collections.deploy.js


File diff ditekan karena terlalu besar
+ 257 - 128
js/Kernel-Collections.js


+ 65 - 32
js/Kernel-Exceptions.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "context",
 selector: "context",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.context;
+return smalltalk.withContext(function($ctx1) { 
+return self.context;
 return self}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Error)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Error);
 smalltalk.Error);
@@ -17,7 +18,8 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(_st("Errorclass: ").__comma(_st(_st(self)._class())._name()));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._messageText_(_st("Errorclass: ").__comma(_st(_st(self)._class())._name()));
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Error)})},
 messageSends: ["messageText:", ",", "name", "class"]}),
 messageSends: ["messageText:", ",", "name", "class"]}),
 smalltalk.Error);
 smalltalk.Error);
@@ -28,7 +30,8 @@ smalltalk.method({
 selector: "isSmalltalkError",
 selector: "isSmalltalkError",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.smalltalkError === true;
+return smalltalk.withContext(function($ctx1) { 
+return self.smalltalkError === true;
 return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},smalltalk.Error)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Error);
 smalltalk.Error);
@@ -39,7 +42,8 @@ smalltalk.method({
 selector: "jsStack",
 selector: "jsStack",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.stack;
+return smalltalk.withContext(function($ctx1) { 
+return self.stack;
 return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},smalltalk.Error)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Error);
 smalltalk.Error);
@@ -50,7 +54,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@messageText"];
 $1=self["@messageText"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.Error)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.Error)})},
@@ -63,7 +68,8 @@ smalltalk.method({
 selector: "messageText:",
 selector: "messageText:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@messageText"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@messageText"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"messageText:",{aString:aString},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"messageText:",{aString:aString},smalltalk.Error)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Error);
 smalltalk.Error);
@@ -74,7 +80,8 @@ smalltalk.method({
 selector: "signal",
 selector: "signal",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
+return smalltalk.withContext(function($ctx1) { 
+self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
 return self}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Error);
 smalltalk.Error);
@@ -85,7 +92,8 @@ smalltalk.method({
 selector: "signal:",
 selector: "signal:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._messageText_(aString);
 _st(self)._signal();
 _st(self)._signal();
 return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error)})},
 messageSends: ["messageText:", "signal"]}),
 messageSends: ["messageText:", "signal"]}),
@@ -98,7 +106,8 @@ smalltalk.method({
 selector: "signal",
 selector: "signal",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._signal();
 $1=_st(_st(self)._new())._signal();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error.klass)})},
@@ -111,7 +120,8 @@ smalltalk.method({
 selector: "signal:",
 selector: "signal:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._signal_(aString);
 $1=_st(_st(self)._new())._signal_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error.klass)})},
@@ -126,7 +136,8 @@ smalltalk.method({
 selector: "context:",
 selector: "context:",
 fn: function (aMethodContext){
 fn: function (aMethodContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self.context = aMethodContext;
+return smalltalk.withContext(function($ctx1) { 
+self.context = aMethodContext;
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},smalltalk.JavaScriptException)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.JavaScriptException);
 smalltalk.JavaScriptException);
@@ -137,7 +148,8 @@ smalltalk.method({
 selector: "exception",
 selector: "exception",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@exception"];
 $1=self["@exception"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exception",{},smalltalk.JavaScriptException)})},
 }, function($ctx1) {$ctx1.fill(self,"exception",{},smalltalk.JavaScriptException)})},
@@ -150,7 +162,8 @@ smalltalk.method({
 selector: "exception:",
 selector: "exception:",
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@exception"]=anException;
+return smalltalk.withContext(function($ctx1) { 
+self["@exception"]=anException;
 return self}, function($ctx1) {$ctx1.fill(self,"exception:",{anException:anException},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"exception:",{anException:anException},smalltalk.JavaScriptException)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.JavaScriptException);
 smalltalk.JavaScriptException);
@@ -161,7 +174,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return 'JavaScript exception: ' + self["@exception"].toString();
+return smalltalk.withContext(function($ctx1) { 
+return 'JavaScript exception: ' + self["@exception"].toString();
 return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.JavaScriptException)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.JavaScriptException);
 smalltalk.JavaScriptException);
@@ -173,7 +187,8 @@ smalltalk.method({
 selector: "on:",
 selector: "on:",
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -189,7 +204,8 @@ smalltalk.method({
 selector: "on:context:",
 selector: "on:context:",
 fn: function (anException,aMethodContext){
 fn: function (anException,aMethodContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
 _st($2)._context_(aMethodContext);
 _st($2)._context_(aMethodContext);
@@ -208,7 +224,8 @@ smalltalk.method({
 selector: "message",
 selector: "message",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@message"];
 $1=self["@message"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.MessageNotUnderstood)})},
@@ -221,7 +238,8 @@ smalltalk.method({
 selector: "message:",
 selector: "message:",
 fn: function (aMessage){
 fn: function (aMessage){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@message"]=aMessage;
+return smalltalk.withContext(function($ctx1) { 
+self["@message"]=aMessage;
 return self}, function($ctx1) {$ctx1.fill(self,"message:",{aMessage:aMessage},smalltalk.MessageNotUnderstood)})},
 return self}, function($ctx1) {$ctx1.fill(self,"message:",{aMessage:aMessage},smalltalk.MessageNotUnderstood)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MessageNotUnderstood);
 smalltalk.MessageNotUnderstood);
@@ -232,7 +250,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
@@ -245,7 +264,8 @@ smalltalk.method({
 selector: "receiver",
 selector: "receiver",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@receiver"];
 $1=self["@receiver"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageNotUnderstood)})},
@@ -258,7 +278,8 @@ smalltalk.method({
 selector: "receiver:",
 selector: "receiver:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
+return smalltalk.withContext(function($ctx1) { 
+self["@receiver"]=anObject;
 return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageNotUnderstood)})},
 return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageNotUnderstood)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MessageNotUnderstood);
 smalltalk.MessageNotUnderstood);
@@ -272,7 +293,8 @@ smalltalk.method({
 selector: "object",
 selector: "object",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@object"];
 $1=self["@object"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.NonBooleanReceiver)})},
 }, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.NonBooleanReceiver)})},
@@ -285,7 +307,8 @@ smalltalk.method({
 selector: "object:",
 selector: "object:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@object"]=anObject;
+return smalltalk.withContext(function($ctx1) { 
+self["@object"]=anObject;
 return self}, function($ctx1) {$ctx1.fill(self,"object:",{anObject:anObject},smalltalk.NonBooleanReceiver)})},
 return self}, function($ctx1) {$ctx1.fill(self,"object:",{anObject:anObject},smalltalk.NonBooleanReceiver)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.NonBooleanReceiver);
 smalltalk.NonBooleanReceiver);
@@ -299,7 +322,8 @@ smalltalk.method({
 selector: "handleError:",
 selector: "handleError:",
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anError)._context();
 $1=_st(anError)._context();
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -317,7 +341,8 @@ smalltalk.method({
 selector: "log:",
 selector: "log:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(console)._log_(aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(console)._log_(aString);
 return self}, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},smalltalk.ErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},smalltalk.ErrorHandler)})},
 messageSends: ["log:"]}),
 messageSends: ["log:"]}),
 smalltalk.ErrorHandler);
 smalltalk.ErrorHandler);
@@ -328,7 +353,8 @@ smalltalk.method({
 selector: "logContext:",
 selector: "logContext:",
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aContext)._home();
 $1=_st(aContext)._home();
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -346,7 +372,8 @@ smalltalk.method({
 selector: "logError:",
 selector: "logError:",
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._log_(_st(anError)._messageText());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._log_(_st(anError)._messageText());
 return self}, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},smalltalk.ErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},smalltalk.ErrorHandler)})},
 messageSends: ["log:", "messageText"]}),
 messageSends: ["log:", "messageText"]}),
 smalltalk.ErrorHandler);
 smalltalk.ErrorHandler);
@@ -357,7 +384,8 @@ smalltalk.method({
 selector: "logErrorContext:",
 selector: "logErrorContext:",
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aContext;
 $1=aContext;
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -381,7 +409,8 @@ smalltalk.method({
 selector: "current",
 selector: "current",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@current"];
 $2=self["@current"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=_st(self)._new();
 self["@current"]=_st(self)._new();
@@ -400,7 +429,8 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._register();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._register();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ErrorHandler.klass)})},
 messageSends: ["register"]}),
 messageSends: ["register"]}),
 smalltalk.ErrorHandler.klass);
 smalltalk.ErrorHandler.klass);
@@ -411,7 +441,9 @@ smalltalk.method({
 selector: "register",
 selector: "register",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.ErrorHandler || ErrorHandler))._setCurrent_(_st(self)._new());
+function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
+return smalltalk.withContext(function($ctx1) { 
+_st($ErrorHandler())._setCurrent_(_st(self)._new());
 return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ErrorHandler.klass)})},
 messageSends: ["setCurrent:", "new"]}),
 messageSends: ["setCurrent:", "new"]}),
 smalltalk.ErrorHandler.klass);
 smalltalk.ErrorHandler.klass);
@@ -422,7 +454,8 @@ smalltalk.method({
 selector: "setCurrent:",
 selector: "setCurrent:",
 fn: function (anHandler){
 fn: function (anHandler){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@current"]=anHandler;
+return smalltalk.withContext(function($ctx1) { 
+self["@current"]=anHandler;
 return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ErrorHandler.klass)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ErrorHandler.klass);
 smalltalk.ErrorHandler.klass);

+ 65 - 32
js/Kernel-Exceptions.js

@@ -8,7 +8,8 @@ selector: "context",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.context;
+return smalltalk.withContext(function($ctx1) { 
+return self.context;
 return self}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Error)})},
 args: [],
 args: [],
 source: "context\x0a\x09<return self.context>",
 source: "context\x0a\x09<return self.context>",
@@ -24,7 +25,8 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(_st("Errorclass: ").__comma(_st(_st(self)._class())._name()));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._messageText_(_st("Errorclass: ").__comma(_st(_st(self)._class())._name()));
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Error)})},
 args: [],
 args: [],
 source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
 source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
@@ -40,7 +42,8 @@ selector: "isSmalltalkError",
 category: 'testing',
 category: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.smalltalkError === true;
+return smalltalk.withContext(function($ctx1) { 
+return self.smalltalkError === true;
 return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},smalltalk.Error)})},
 args: [],
 args: [],
 source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
 source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
@@ -56,7 +59,8 @@ selector: "jsStack",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.stack;
+return smalltalk.withContext(function($ctx1) { 
+return self.stack;
 return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},smalltalk.Error)})},
 args: [],
 args: [],
 source: "jsStack\x0a\x09<return self.stack>",
 source: "jsStack\x0a\x09<return self.stack>",
@@ -72,7 +76,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@messageText"];
 $1=self["@messageText"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.Error)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.Error)})},
@@ -90,7 +95,8 @@ selector: "messageText:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@messageText"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@messageText"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"messageText:",{aString:aString},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"messageText:",{aString:aString},smalltalk.Error)})},
 args: ["aString"],
 args: ["aString"],
 source: "messageText: aString\x0a\x09messageText := aString",
 source: "messageText: aString\x0a\x09messageText := aString",
@@ -106,7 +112,8 @@ selector: "signal",
 category: 'signaling',
 category: 'signaling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
+return smalltalk.withContext(function($ctx1) { 
+self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
 return self}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error)})},
 args: [],
 args: [],
 source: "signal\x0a\x09<self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self)>",
 source: "signal\x0a\x09<self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self)>",
@@ -122,7 +129,8 @@ selector: "signal:",
 category: 'signaling',
 category: 'signaling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._messageText_(aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._messageText_(aString);
 _st(self)._signal();
 _st(self)._signal();
 return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error)})},
 args: ["aString"],
 args: ["aString"],
@@ -140,7 +148,8 @@ selector: "signal",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._signal();
 $1=_st(_st(self)._new())._signal();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error.klass)})},
@@ -158,7 +167,8 @@ selector: "signal:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._new())._signal_(aString);
 $1=_st(_st(self)._new())._signal_(aString);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error.klass)})},
@@ -179,7 +189,8 @@ selector: "context:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aMethodContext){
 fn: function (aMethodContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self.context = aMethodContext;
+return smalltalk.withContext(function($ctx1) { 
+self.context = aMethodContext;
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},smalltalk.JavaScriptException)})},
 args: ["aMethodContext"],
 args: ["aMethodContext"],
 source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
 source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
@@ -195,7 +206,8 @@ selector: "exception",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@exception"];
 $1=self["@exception"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"exception",{},smalltalk.JavaScriptException)})},
 }, function($ctx1) {$ctx1.fill(self,"exception",{},smalltalk.JavaScriptException)})},
@@ -213,7 +225,8 @@ selector: "exception:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@exception"]=anException;
+return smalltalk.withContext(function($ctx1) { 
+self["@exception"]=anException;
 return self}, function($ctx1) {$ctx1.fill(self,"exception:",{anException:anException},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"exception:",{anException:anException},smalltalk.JavaScriptException)})},
 args: ["anException"],
 args: ["anException"],
 source: "exception: anException\x0a\x09exception := anException",
 source: "exception: anException\x0a\x09exception := anException",
@@ -229,7 +242,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return 'JavaScript exception: ' + self["@exception"].toString();
+return smalltalk.withContext(function($ctx1) { 
+return 'JavaScript exception: ' + self["@exception"].toString();
 return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.JavaScriptException)})},
 return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.JavaScriptException)})},
 args: [],
 args: [],
 source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
 source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
@@ -246,7 +260,8 @@ selector: "on:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (anException){
 fn: function (anException){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -267,7 +282,8 @@ selector: "on:context:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (anException,aMethodContext){
 fn: function (anException,aMethodContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._exception_(anException);
 _st($2)._exception_(anException);
 _st($2)._context_(aMethodContext);
 _st($2)._context_(aMethodContext);
@@ -292,7 +308,8 @@ selector: "message",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@message"];
 $1=self["@message"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.MessageNotUnderstood)})},
@@ -310,7 +327,8 @@ selector: "message:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aMessage){
 fn: function (aMessage){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@message"]=aMessage;
+return smalltalk.withContext(function($ctx1) { 
+self["@message"]=aMessage;
 return self}, function($ctx1) {$ctx1.fill(self,"message:",{aMessage:aMessage},smalltalk.MessageNotUnderstood)})},
 return self}, function($ctx1) {$ctx1.fill(self,"message:",{aMessage:aMessage},smalltalk.MessageNotUnderstood)})},
 args: ["aMessage"],
 args: ["aMessage"],
 source: "message: aMessage\x0a\x09message := aMessage",
 source: "message: aMessage\x0a\x09message := aMessage",
@@ -326,7 +344,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 $1=_st(_st(_st(_st(self)._receiver())._asString()).__comma(" does not understand #")).__comma(_st(_st(self)._message())._selector());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
@@ -344,7 +363,8 @@ selector: "receiver",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@receiver"];
 $1=self["@receiver"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageNotUnderstood)})},
 }, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageNotUnderstood)})},
@@ -362,7 +382,8 @@ selector: "receiver:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@receiver"]=anObject;
+return smalltalk.withContext(function($ctx1) { 
+self["@receiver"]=anObject;
 return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageNotUnderstood)})},
 return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageNotUnderstood)})},
 args: ["anObject"],
 args: ["anObject"],
 source: "receiver: anObject\x0a\x09receiver := anObject",
 source: "receiver: anObject\x0a\x09receiver := anObject",
@@ -382,7 +403,8 @@ selector: "object",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@object"];
 $1=self["@object"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.NonBooleanReceiver)})},
 }, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.NonBooleanReceiver)})},
@@ -400,7 +422,8 @@ selector: "object:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@object"]=anObject;
+return smalltalk.withContext(function($ctx1) { 
+self["@object"]=anObject;
 return self}, function($ctx1) {$ctx1.fill(self,"object:",{anObject:anObject},smalltalk.NonBooleanReceiver)})},
 return self}, function($ctx1) {$ctx1.fill(self,"object:",{anObject:anObject},smalltalk.NonBooleanReceiver)})},
 args: ["anObject"],
 args: ["anObject"],
 source: "object: anObject\x0a\x09object := anObject",
 source: "object: anObject\x0a\x09object := anObject",
@@ -420,7 +443,8 @@ selector: "handleError:",
 category: 'error handling',
 category: 'error handling',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anError)._context();
 $1=_st(anError)._context();
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -443,7 +467,8 @@ selector: "log:",
 category: 'private',
 category: 'private',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(console)._log_(aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(console)._log_(aString);
 return self}, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},smalltalk.ErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},smalltalk.ErrorHandler)})},
 args: ["aString"],
 args: ["aString"],
 source: "log: aString\x0a\x09console log: aString",
 source: "log: aString\x0a\x09console log: aString",
@@ -459,7 +484,8 @@ selector: "logContext:",
 category: 'private',
 category: 'private',
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(aContext)._home();
 $1=_st(aContext)._home();
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -482,7 +508,8 @@ selector: "logError:",
 category: 'private',
 category: 'private',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._log_(_st(anError)._messageText());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._log_(_st(anError)._messageText());
 return self}, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},smalltalk.ErrorHandler)})},
 return self}, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},smalltalk.ErrorHandler)})},
 args: ["anError"],
 args: ["anError"],
 source: "logError: anError\x0a\x09self log: anError messageText",
 source: "logError: anError\x0a\x09self log: anError messageText",
@@ -498,7 +525,8 @@ selector: "logErrorContext:",
 category: 'private',
 category: 'private',
 fn: function (aContext){
 fn: function (aContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=aContext;
 $1=aContext;
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -527,7 +555,8 @@ selector: "current",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@current"];
 $2=self["@current"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@current"]=_st(self)._new();
 self["@current"]=_st(self)._new();
@@ -551,7 +580,8 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._register();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._register();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ErrorHandler.klass)})},
 args: [],
 args: [],
 source: "initialize\x0a\x09self register",
 source: "initialize\x0a\x09self register",
@@ -567,7 +597,9 @@ selector: "register",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.ErrorHandler || ErrorHandler))._setCurrent_(_st(self)._new());
+function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
+return smalltalk.withContext(function($ctx1) { 
+_st($ErrorHandler())._setCurrent_(_st(self)._new());
 return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ErrorHandler.klass)})},
 args: [],
 args: [],
 source: "register\x0a\x09ErrorHandler setCurrent: self new",
 source: "register\x0a\x09ErrorHandler setCurrent: self new",
@@ -583,7 +615,8 @@ selector: "setCurrent:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anHandler){
 fn: function (anHandler){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@current"]=anHandler;
+return smalltalk.withContext(function($ctx1) { 
+self["@current"]=anHandler;
 return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ErrorHandler.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ErrorHandler.klass)})},
 args: ["anHandler"],
 args: ["anHandler"],
 source: "setCurrent: anHandler\x0a\x09current := anHandler",
 source: "setCurrent: anHandler\x0a\x09current := anHandler",

+ 172 - 84
js/Kernel-Methods.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "applyTo:arguments:",
 selector: "applyTo:arguments:",
 fn: function (anObject,aCollection){
 fn: function (anObject,aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.apply(anObject, aCollection);
+return smalltalk.withContext(function($ctx1) { 
+return self.apply(anObject, aCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -17,7 +18,8 @@ smalltalk.method({
 selector: "asCompiledMethod:",
 selector: "asCompiledMethod:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return smalltalk.method({selector:aString, fn:self});;
+return smalltalk.withContext(function($ctx1) { 
+return smalltalk.method({selector:aString, fn:self});;
 return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -28,7 +30,8 @@ smalltalk.method({
 selector: "compiledSource",
 selector: "compiledSource",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.toString();
+return smalltalk.withContext(function($ctx1) { 
+return self.toString();
 return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -39,7 +42,8 @@ smalltalk.method({
 selector: "currySelf",
 selector: "currySelf",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		return function () {
 		return function () {
 			var args = [ this ];
 			var args = [ this ];
 			args.push.apply(args, arguments);
 			args.push.apply(args, arguments);
@@ -56,7 +60,8 @@ smalltalk.method({
 selector: "ensure:",
 selector: "ensure:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
try{return self()}finally{aBlock._value()};
+return smalltalk.withContext(function($ctx1) { 
+try{return self()}finally{aBlock._value()};
 return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -67,7 +72,9 @@ smalltalk.method({
 selector: "fork",
 selector: "fork",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.ForkPool || ForkPool))._default())._fork_(self);
+function $ForkPool(){return smalltalk.ForkPool||(typeof ForkPool=="undefined"?nil:ForkPool)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($ForkPool())._default())._fork_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"fork",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fork",{},smalltalk.BlockClosure)})},
 messageSends: ["fork:", "default"]}),
 messageSends: ["fork:", "default"]}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -78,7 +85,8 @@ smalltalk.method({
 selector: "new",
 selector: "new",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self();
+return smalltalk.withContext(function($ctx1) { 
+return new self();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -89,7 +97,8 @@ smalltalk.method({
 selector: "newValue:",
 selector: "newValue:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -100,7 +109,8 @@ smalltalk.method({
 selector: "newValue:value:",
 selector: "newValue:value:",
 fn: function (anObject,anObject2){
 fn: function (anObject,anObject2){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject, anObject2);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -111,7 +121,8 @@ smalltalk.method({
 selector: "newValue:value:value:",
 selector: "newValue:value:value:",
 fn: function (anObject,anObject2,anObject3){
 fn: function (anObject,anObject2,anObject3){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2,anObject3);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject, anObject2,anObject3);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -122,7 +133,8 @@ smalltalk.method({
 selector: "numArgs",
 selector: "numArgs",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.length;
+return smalltalk.withContext(function($ctx1) { 
+return self.length;
 return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -133,10 +145,13 @@ smalltalk.method({
 selector: "on:do:",
 selector: "on:do:",
 fn: function (anErrorClass,aBlock){
 fn: function (anErrorClass,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $1=_st(self)._try_catch_(self,(function(error){
 $1=_st(self)._try_catch_(self,(function(error){
 var smalltalkError;
 var smalltalkError;
-return smalltalk.withContext(function($ctx2) {
smalltalkError=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._asSmalltalkException_(error);
+return smalltalk.withContext(function($ctx2) {
+smalltalkError=_st(_st($Smalltalk())._current())._asSmalltalkException_(error);
 smalltalkError;
 smalltalkError;
 $2=_st(smalltalkError)._isKindOf_(anErrorClass);
 $2=_st(smalltalkError)._isKindOf_(anErrorClass);
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -156,8 +171,10 @@ smalltalk.method({
 selector: "timeToRun",
 selector: "timeToRun",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.Date || Date))._millisecondsToRun_(self);
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($Date())._millisecondsToRun_(self);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"timeToRun",{},smalltalk.BlockClosure)})},
 }, function($ctx1) {$ctx1.fill(self,"timeToRun",{},smalltalk.BlockClosure)})},
 messageSends: ["millisecondsToRun:"]}),
 messageSends: ["millisecondsToRun:"]}),
@@ -169,7 +186,8 @@ smalltalk.method({
 selector: "value",
 selector: "value",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self();;
+return smalltalk.withContext(function($ctx1) { 
+return self();;
 return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -180,7 +198,8 @@ smalltalk.method({
 selector: "value:",
 selector: "value:",
 fn: function (anArg){
 fn: function (anArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(anArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(anArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -191,7 +210,8 @@ smalltalk.method({
 selector: "value:value:",
 selector: "value:value:",
 fn: function (firstArg,secondArg){
 fn: function (firstArg,secondArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(firstArg, secondArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -202,7 +222,8 @@ smalltalk.method({
 selector: "value:value:value:",
 selector: "value:value:value:",
 fn: function (firstArg,secondArg,thirdArg){
 fn: function (firstArg,secondArg,thirdArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg, thirdArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(firstArg, secondArg, thirdArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -213,7 +234,8 @@ smalltalk.method({
 selector: "valueWithInterval:",
 selector: "valueWithInterval:",
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var interval = setInterval(self, aNumber);
 		var interval = setInterval(self, aNumber);
 		return smalltalk.Timeout._on_(interval);
 		return smalltalk.Timeout._on_(interval);
 	;
 	;
@@ -227,7 +249,8 @@ smalltalk.method({
 selector: "valueWithPossibleArguments:",
 selector: "valueWithPossibleArguments:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.apply(null, aCollection);;
+return smalltalk.withContext(function($ctx1) { 
+return self.apply(null, aCollection);;
 return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -238,7 +261,8 @@ smalltalk.method({
 selector: "valueWithTimeout:",
 selector: "valueWithTimeout:",
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var timeout = setTimeout(self, aNumber);
 		var timeout = setTimeout(self, aNumber);
 		return smalltalk.Timeout._on_(timeout);
 		return smalltalk.Timeout._on_(timeout);
 	;
 	;
@@ -252,8 +276,10 @@ smalltalk.method({
 selector: "whileFalse",
 selector: "whileFalse",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._whileFalse_((function(){
+return smalltalk.withContext(function($ctx2) {
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
 messageSends: ["whileFalse:"]}),
 messageSends: ["whileFalse:"]}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -264,7 +290,8 @@ smalltalk.method({
 selector: "whileFalse:",
 selector: "whileFalse:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
while(!self()) {aBlock()};
+return smalltalk.withContext(function($ctx1) { 
+while(!self()) {aBlock()};
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -275,8 +302,10 @@ smalltalk.method({
 selector: "whileTrue",
 selector: "whileTrue",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
 messageSends: ["whileTrue:"]}),
 messageSends: ["whileTrue:"]}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -287,7 +316,8 @@ smalltalk.method({
 selector: "whileTrue:",
 selector: "whileTrue:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
while(self()) {aBlock()};
+return smalltalk.withContext(function($ctx1) { 
+while(self()) {aBlock()};
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.BlockClosure);
 smalltalk.BlockClosure);
@@ -301,7 +331,8 @@ smalltalk.method({
 selector: "arguments",
 selector: "arguments",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.args || [];
+return smalltalk.withContext(function($ctx1) { 
+return self.args || [];
 return self}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.CompiledMethod)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.CompiledMethod);
 smalltalk.CompiledMethod);
@@ -312,7 +343,8 @@ smalltalk.method({
 selector: "category",
 selector: "category",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._basicAt_("category");
 $2=_st(self)._basicAt_("category");
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(self)._defaultCategory();
 $1=_st(self)._defaultCategory();
@@ -331,7 +363,8 @@ selector: "category:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 var oldCategory;
 var oldCategory;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 oldCategory=_st(self)._category();
 oldCategory=_st(self)._category();
 _st(self)._basicAt_put_("category",aString);
 _st(self)._basicAt_put_("category",aString);
 $1=_st(self)._methodClass();
 $1=_st(self)._methodClass();
@@ -340,9 +373,11 @@ $1;
 } else {
 } else {
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._category()).__eq(oldCategory);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(each)._category()).__eq(oldCategory);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 };
 };
 return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldCategory:oldCategory},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldCategory:oldCategory},smalltalk.CompiledMethod)})},
@@ -355,7 +390,8 @@ smalltalk.method({
 selector: "defaultCategory",
 selector: "defaultCategory",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return "as yet unclassified";
+return smalltalk.withContext(function($ctx1) { 
+return "as yet unclassified";
 }, function($ctx1) {$ctx1.fill(self,"defaultCategory",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultCategory",{},smalltalk.CompiledMethod)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.CompiledMethod);
 smalltalk.CompiledMethod);
@@ -366,7 +402,8 @@ smalltalk.method({
 selector: "fn",
 selector: "fn",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("fn");
 $1=_st(self)._basicAt_("fn");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"fn",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"fn",{},smalltalk.CompiledMethod)})},
@@ -379,7 +416,8 @@ smalltalk.method({
 selector: "fn:",
 selector: "fn:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("fn",aBlock);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("fn",aBlock);
 return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},smalltalk.CompiledMethod)})},
 messageSends: ["basicAt:put:"]}),
 messageSends: ["basicAt:put:"]}),
 smalltalk.CompiledMethod);
 smalltalk.CompiledMethod);
@@ -390,7 +428,8 @@ smalltalk.method({
 selector: "messageSends",
 selector: "messageSends",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("messageSends");
 $1=_st(self)._basicAt_("messageSends");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.CompiledMethod)})},
@@ -403,7 +442,8 @@ smalltalk.method({
 selector: "methodClass",
 selector: "methodClass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("methodClass");
 $1=_st(self)._basicAt_("methodClass");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.CompiledMethod)})},
@@ -416,7 +456,8 @@ smalltalk.method({
 selector: "protocol",
 selector: "protocol",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._category();
 $1=_st(self)._category();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.CompiledMethod)})},
@@ -429,7 +470,8 @@ smalltalk.method({
 selector: "referencedClasses",
 selector: "referencedClasses",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("referencedClasses");
 $1=_st(self)._basicAt_("referencedClasses");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.CompiledMethod)})},
@@ -442,7 +484,8 @@ smalltalk.method({
 selector: "selector",
 selector: "selector",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("selector");
 $1=_st(self)._basicAt_("selector");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.CompiledMethod)})},
@@ -455,7 +498,8 @@ smalltalk.method({
 selector: "selector:",
 selector: "selector:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("selector",aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("selector",aString);
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.CompiledMethod)})},
 messageSends: ["basicAt:put:"]}),
 messageSends: ["basicAt:put:"]}),
 smalltalk.CompiledMethod);
 smalltalk.CompiledMethod);
@@ -466,7 +510,8 @@ smalltalk.method({
 selector: "source",
 selector: "source",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._basicAt_("source");
 $2=_st(self)._basicAt_("source");
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -484,7 +529,8 @@ smalltalk.method({
 selector: "source:",
 selector: "source:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("source",aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("source",aString);
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.CompiledMethod)})},
 messageSends: ["basicAt:put:"]}),
 messageSends: ["basicAt:put:"]}),
 smalltalk.CompiledMethod);
 smalltalk.CompiledMethod);
@@ -498,7 +544,8 @@ smalltalk.method({
 selector: "addWorker",
 selector: "addWorker",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@worker"])._valueWithTimeout_((0));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@worker"])._valueWithTimeout_((0));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
 return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{},smalltalk.ForkPool)})},
 messageSends: ["valueWithTimeout:", "+"]}),
 messageSends: ["valueWithTimeout:", "+"]}),
@@ -510,7 +557,8 @@ smalltalk.method({
 selector: "defaultMaxPoolSize",
 selector: "defaultMaxPoolSize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool)})},
@@ -523,7 +571,8 @@ smalltalk.method({
 selector: "fork:",
 selector: "fork:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self["@poolSize"]).__lt(_st(self)._maxPoolSize());
 $1=_st(self["@poolSize"]).__lt(_st(self)._maxPoolSize());
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(self)._addWorker();
 _st(self)._addWorker();
@@ -539,9 +588,11 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+function $Queue(){return smalltalk.Queue||(typeof Queue=="undefined"?nil:Queue)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@poolSize"]=(0);
 self["@poolSize"]=(0);
-self["@queue"]=_st((smalltalk.Queue || Queue))._new();
+self["@queue"]=_st($Queue())._new();
 self["@worker"]=_st(self)._makeWorker();
 self["@worker"]=_st(self)._makeWorker();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ForkPool)})},
 messageSends: ["initialize", "new", "makeWorker"]}),
 messageSends: ["initialize", "new", "makeWorker"]}),
@@ -554,22 +605,28 @@ selector: "makeWorker",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var sentinel;
 var sentinel;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-sentinel=_st((smalltalk.Object || Object))._new();
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+sentinel=_st($Object())._new();
 $1=(function(){
 $1=(function(){
 var block;
 var block;
-return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
+return smalltalk.withContext(function($ctx2) {
+self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
 self["@poolSize"];
 self["@poolSize"];
 block=_st(self["@queue"])._nextIfAbsent_((function(){
 block=_st(self["@queue"])._nextIfAbsent_((function(){
-return smalltalk.withContext(function($ctx3) {
return sentinel;
+return smalltalk.withContext(function($ctx3) {
+return sentinel;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 block;
 block;
 $2=_st(block).__eq_eq(sentinel);
 $2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 if(! smalltalk.assert($2)){
 return _st((function(){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
+return smalltalk.withContext(function($ctx3) {
+return _st(block)._value();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._addWorker();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
 }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
@@ -584,7 +641,8 @@ smalltalk.method({
 selector: "maxPoolSize",
 selector: "maxPoolSize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@maxPoolSize"];
 $2=self["@maxPoolSize"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(self)._defaultMaxPoolSize();
 $1=_st(self)._defaultMaxPoolSize();
@@ -602,7 +660,8 @@ smalltalk.method({
 selector: "maxPoolSize:",
 selector: "maxPoolSize:",
 fn: function (anInteger){
 fn: function (anInteger){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@maxPoolSize"]=anInteger;
+return smalltalk.withContext(function($ctx1) { 
+self["@maxPoolSize"]=anInteger;
 return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger},smalltalk.ForkPool)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ForkPool);
 smalltalk.ForkPool);
@@ -615,7 +674,8 @@ smalltalk.method({
 selector: "default",
 selector: "default",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@default"];
 $2=self["@default"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@default"]=_st(self)._new();
 self["@default"]=_st(self)._new();
@@ -634,7 +694,10 @@ smalltalk.method({
 selector: "defaultMaxPoolSize",
 selector: "defaultMaxPoolSize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (100);
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(100);
+return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool.klass)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ForkPool.klass);
 smalltalk.ForkPool.klass);
@@ -645,7 +708,8 @@ smalltalk.method({
 selector: "resetDefault",
 selector: "resetDefault",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@default"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@default"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{},smalltalk.ForkPool.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{},smalltalk.ForkPool.klass)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ForkPool.klass);
 smalltalk.ForkPool.klass);
@@ -658,7 +722,8 @@ smalltalk.method({
 selector: "arguments",
 selector: "arguments",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@arguments"];
 $1=self["@arguments"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.Message)})},
@@ -671,7 +736,8 @@ smalltalk.method({
 selector: "arguments:",
 selector: "arguments:",
 fn: function (anArray){
 fn: function (anArray){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@arguments"]=anArray;
+return smalltalk.withContext(function($ctx1) { 
+self["@arguments"]=anArray;
 return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray},smalltalk.Message)})},
 return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray},smalltalk.Message)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Message);
 smalltalk.Message);
@@ -682,7 +748,8 @@ smalltalk.method({
 selector: "printOn:",
 selector: "printOn:",
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("(");
 _st($1)._nextPutAll_("(");
@@ -698,7 +765,8 @@ smalltalk.method({
 selector: "selector",
 selector: "selector",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@selector"];
 $1=self["@selector"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.Message)})},
@@ -711,7 +779,8 @@ smalltalk.method({
 selector: "selector:",
 selector: "selector:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@selector"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.Message)})},
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.Message)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Message);
 smalltalk.Message);
@@ -722,7 +791,8 @@ smalltalk.method({
 selector: "sendTo:",
 selector: "sendTo:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},smalltalk.Message)})},
@@ -736,7 +806,8 @@ smalltalk.method({
 selector: "selector:arguments:",
 selector: "selector:arguments:",
 fn: function (aString,anArray){
 fn: function (aString,anArray){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._selector_(aString);
 _st($2)._selector_(aString);
 _st($2)._arguments_(anArray);
 _st($2)._arguments_(anArray);
@@ -755,7 +826,8 @@ smalltalk.method({
 selector: "asString",
 selector: "asString",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._isBlockContext();
 $2=_st(self)._isBlockContext();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st("a block (in ").__comma(_st(_st(_st(_st(self)._methodContext())._receiver())._class())._printString())).__comma(")");
 $1=_st(_st("a block (in ").__comma(_st(_st(_st(_st(self)._methodContext())._receiver())._class())._printString())).__comma(")");
@@ -773,7 +845,8 @@ smalltalk.method({
 selector: "home",
 selector: "home",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.methodContext || self.homeContext;
+return smalltalk.withContext(function($ctx1) { 
+return self.methodContext || self.homeContext;
 return self}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.MethodContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodContext);
 smalltalk.MethodContext);
@@ -784,7 +857,8 @@ smalltalk.method({
 selector: "isBlockContext",
 selector: "isBlockContext",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._selector())._isNil();
 $1=_st(_st(self)._selector())._isNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.MethodContext)})},
 }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.MethodContext)})},
@@ -797,7 +871,8 @@ smalltalk.method({
 selector: "locals",
 selector: "locals",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.locals;
+return smalltalk.withContext(function($ctx1) { 
+return self.locals;
 return self}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.MethodContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodContext);
 smalltalk.MethodContext);
@@ -808,7 +883,8 @@ smalltalk.method({
 selector: "method",
 selector: "method",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(_st(self)._methodContext())._receiver())._class())._lookupSelector_(_st(_st(self)._methodContext())._selector());
 $1=_st(_st(_st(_st(self)._methodContext())._receiver())._class())._lookupSelector_(_st(_st(self)._methodContext())._selector());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
@@ -821,7 +897,8 @@ smalltalk.method({
 selector: "methodContext",
 selector: "methodContext",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(self)._isBlockContext();
 $1=_st(self)._isBlockContext();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=self;
 $2=self;
@@ -839,7 +916,8 @@ smalltalk.method({
 selector: "outerContext",
 selector: "outerContext",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.homeContext;
+return smalltalk.withContext(function($ctx1) { 
+return self.homeContext;
 return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.MethodContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodContext);
 smalltalk.MethodContext);
@@ -850,7 +928,8 @@ smalltalk.method({
 selector: "pc",
 selector: "pc",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.pc;
+return smalltalk.withContext(function($ctx1) { 
+return self.pc;
 return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodContext);
 smalltalk.MethodContext);
@@ -861,7 +940,8 @@ smalltalk.method({
 selector: "printOn:",
 selector: "printOn:",
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("(");
 _st($1)._nextPutAll_("(");
@@ -877,7 +957,8 @@ smalltalk.method({
 selector: "receiver",
 selector: "receiver",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.receiver;
+return smalltalk.withContext(function($ctx1) { 
+return self.receiver;
 return self}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MethodContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.MethodContext);
 smalltalk.MethodContext);
@@ -888,7 +969,8 @@ smalltalk.method({
 selector: "selector",
 selector: "selector",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		if(self.selector) {
 		if(self.selector) {
 			return smalltalk.convertSelector(self.selector);
 			return smalltalk.convertSelector(self.selector);
 		} else {
 		} else {
@@ -905,7 +987,8 @@ smalltalk.method({
 selector: "temps",
 selector: "temps",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._deprecatedAPI();
 _st(self)._deprecatedAPI();
 $1=_st(self)._locals();
 $1=_st(self)._locals();
 return $1;
 return $1;
@@ -923,7 +1006,8 @@ smalltalk.method({
 selector: "constructor:",
 selector: "constructor:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native();
 		return new native();
 	;
 	;
@@ -937,7 +1021,8 @@ smalltalk.method({
 selector: "constructor:value:",
 selector: "constructor:value:",
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject);
 		return new native(anObject);
 	;
 	;
@@ -951,7 +1036,8 @@ smalltalk.method({
 selector: "constructor:value:value:",
 selector: "constructor:value:value:",
 fn: function (aString,anObject,anObject2){
 fn: function (aString,anObject,anObject2){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject,anObject2);
 		return new native(anObject,anObject2);
 	;
 	;
@@ -965,7 +1051,8 @@ smalltalk.method({
 selector: "constructor:value:value:value:",
 selector: "constructor:value:value:value:",
 fn: function (aString,anObject,anObject2,anObject3){
 fn: function (aString,anObject,anObject2,anObject3){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject,anObject2, anObject3);
 		return new native(anObject,anObject2, anObject3);
 	;
 	;
@@ -979,7 +1066,8 @@ smalltalk.method({
 selector: "exists:",
 selector: "exists:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		if(aString in window) {
 		if(aString in window) {
 			return true
 			return true
 		} else {
 		} else {

+ 172 - 84
js/Kernel-Methods.js

@@ -8,7 +8,8 @@ selector: "applyTo:arguments:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (anObject,aCollection){
 fn: function (anObject,aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.apply(anObject, aCollection);
+return smalltalk.withContext(function($ctx1) { 
+return self.apply(anObject, aCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.BlockClosure)})},
 args: ["anObject", "aCollection"],
 args: ["anObject", "aCollection"],
 source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
 source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
@@ -24,7 +25,8 @@ selector: "asCompiledMethod:",
 category: 'converting',
 category: 'converting',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return smalltalk.method({selector:aString, fn:self});;
+return smalltalk.withContext(function($ctx1) { 
+return smalltalk.method({selector:aString, fn:self});;
 return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},smalltalk.BlockClosure)})},
 args: ["aString"],
 args: ["aString"],
 source: "asCompiledMethod: aString\x0a\x09<return smalltalk.method({selector:aString, fn:self});>",
 source: "asCompiledMethod: aString\x0a\x09<return smalltalk.method({selector:aString, fn:self});>",
@@ -40,7 +42,8 @@ selector: "compiledSource",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.toString();
+return smalltalk.withContext(function($ctx1) { 
+return self.toString();
 return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "compiledSource\x0a\x09<return self.toString()>",
 source: "compiledSource\x0a\x09<return self.toString()>",
@@ -56,7 +59,8 @@ selector: "currySelf",
 category: 'converting',
 category: 'converting',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		return function () {
 		return function () {
 			var args = [ this ];
 			var args = [ this ];
 			args.push.apply(args, arguments);
 			args.push.apply(args, arguments);
@@ -78,7 +82,8 @@ selector: "ensure:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
try{return self()}finally{aBlock._value()};
+return smalltalk.withContext(function($ctx1) { 
+try{return self()}finally{aBlock._value()};
 return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "ensure: aBlock\x0a\x09<try{return self()}finally{aBlock._value()}>",
 source: "ensure: aBlock\x0a\x09<try{return self()}finally{aBlock._value()}>",
@@ -94,7 +99,9 @@ selector: "fork",
 category: 'timeout/interval',
 category: 'timeout/interval',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.ForkPool || ForkPool))._default())._fork_(self);
+function $ForkPool(){return smalltalk.ForkPool||(typeof ForkPool=="undefined"?nil:ForkPool)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($ForkPool())._default())._fork_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"fork",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fork",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "fork\x0a\x09ForkPool default fork: self",
 source: "fork\x0a\x09ForkPool default fork: self",
@@ -110,7 +117,8 @@ selector: "new",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self();
+return smalltalk.withContext(function($ctx1) { 
+return new self();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "new\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self()>",
 source: "new\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self()>",
@@ -126,7 +134,8 @@ selector: "newValue:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
 args: ["anObject"],
 args: ["anObject"],
 source: "newValue: anObject\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject)>",
 source: "newValue: anObject\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject)>",
@@ -142,7 +151,8 @@ selector: "newValue:value:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (anObject,anObject2){
 fn: function (anObject,anObject2){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject, anObject2);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2"],
 args: ["anObject", "anObject2"],
 source: "newValue: anObject value: anObject2\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
 source: "newValue: anObject value: anObject2\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
@@ -158,7 +168,8 @@ selector: "newValue:value:value:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (anObject,anObject2,anObject3){
 fn: function (anObject,anObject2,anObject3){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return new self(anObject, anObject2,anObject3);
+return smalltalk.withContext(function($ctx1) { 
+return new self(anObject, anObject2,anObject3);
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2", "anObject3"],
 args: ["anObject", "anObject2", "anObject3"],
 source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2,anObject3)>",
 source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2,anObject3)>",
@@ -174,7 +185,8 @@ selector: "numArgs",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.length;
+return smalltalk.withContext(function($ctx1) { 
+return self.length;
 return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "numArgs\x0a\x09<return self.length>",
 source: "numArgs\x0a\x09<return self.length>",
@@ -190,10 +202,13 @@ selector: "on:do:",
 category: 'error handling',
 category: 'error handling',
 fn: function (anErrorClass,aBlock){
 fn: function (anErrorClass,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $1=_st(self)._try_catch_(self,(function(error){
 $1=_st(self)._try_catch_(self,(function(error){
 var smalltalkError;
 var smalltalkError;
-return smalltalk.withContext(function($ctx2) {
smalltalkError=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._asSmalltalkException_(error);
+return smalltalk.withContext(function($ctx2) {
+smalltalkError=_st(_st($Smalltalk())._current())._asSmalltalkException_(error);
 smalltalkError;
 smalltalkError;
 $2=_st(smalltalkError)._isKindOf_(anErrorClass);
 $2=_st(smalltalkError)._isKindOf_(anErrorClass);
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
@@ -218,8 +233,10 @@ selector: "timeToRun",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.Date || Date))._millisecondsToRun_(self);
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($Date())._millisecondsToRun_(self);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"timeToRun",{},smalltalk.BlockClosure)})},
 }, function($ctx1) {$ctx1.fill(self,"timeToRun",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
@@ -236,7 +253,8 @@ selector: "value",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self();;
+return smalltalk.withContext(function($ctx1) { 
+return self();;
 return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "value\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self();>",
 source: "value\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self();>",
@@ -252,7 +270,8 @@ selector: "value:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (anArg){
 fn: function (anArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(anArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(anArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},smalltalk.BlockClosure)})},
 args: ["anArg"],
 args: ["anArg"],
 source: "value: anArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(anArg);>",
 source: "value: anArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(anArg);>",
@@ -268,7 +287,8 @@ selector: "value:value:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (firstArg,secondArg){
 fn: function (firstArg,secondArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(firstArg, secondArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},smalltalk.BlockClosure)})},
 args: ["firstArg", "secondArg"],
 args: ["firstArg", "secondArg"],
 source: "value: firstArg value: secondArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg);>",
 source: "value: firstArg value: secondArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg);>",
@@ -284,7 +304,8 @@ selector: "value:value:value:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (firstArg,secondArg,thirdArg){
 fn: function (firstArg,secondArg,thirdArg){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self(firstArg, secondArg, thirdArg);;
+return smalltalk.withContext(function($ctx1) { 
+return self(firstArg, secondArg, thirdArg);;
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg},smalltalk.BlockClosure)})},
 args: ["firstArg", "secondArg", "thirdArg"],
 args: ["firstArg", "secondArg", "thirdArg"],
 source: "value: firstArg value: secondArg value: thirdArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
 source: "value: firstArg value: secondArg value: thirdArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
@@ -300,7 +321,8 @@ selector: "valueWithInterval:",
 category: 'timeout/interval',
 category: 'timeout/interval',
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var interval = setInterval(self, aNumber);
 		var interval = setInterval(self, aNumber);
 		return smalltalk.Timeout._on_(interval);
 		return smalltalk.Timeout._on_(interval);
 	;
 	;
@@ -319,7 +341,8 @@ selector: "valueWithPossibleArguments:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.apply(null, aCollection);;
+return smalltalk.withContext(function($ctx1) { 
+return self.apply(null, aCollection);;
 return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.BlockClosure)})},
 args: ["aCollection"],
 args: ["aCollection"],
 source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
 source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
@@ -335,7 +358,8 @@ selector: "valueWithTimeout:",
 category: 'timeout/interval',
 category: 'timeout/interval',
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var timeout = setTimeout(self, aNumber);
 		var timeout = setTimeout(self, aNumber);
 		return smalltalk.Timeout._on_(timeout);
 		return smalltalk.Timeout._on_(timeout);
 	;
 	;
@@ -354,8 +378,10 @@ selector: "whileFalse",
 category: 'controlling',
 category: 'controlling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._whileFalse_((function(){
+return smalltalk.withContext(function($ctx2) {
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
 source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
@@ -371,7 +397,8 @@ selector: "whileFalse:",
 category: 'controlling',
 category: 'controlling',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
while(!self()) {aBlock()};
+return smalltalk.withContext(function($ctx1) { 
+while(!self()) {aBlock()};
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "whileFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(!self()) {aBlock()}>",
 source: "whileFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(!self()) {aBlock()}>",
@@ -387,8 +414,10 @@ selector: "whileTrue",
 category: 'controlling',
 category: 'controlling',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._whileTrue_((function(){
+return smalltalk.withContext(function($ctx2) {
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
 args: [],
 args: [],
 source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
 source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
@@ -404,7 +433,8 @@ selector: "whileTrue:",
 category: 'controlling',
 category: 'controlling',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
while(self()) {aBlock()};
+return smalltalk.withContext(function($ctx1) { 
+while(self()) {aBlock()};
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},smalltalk.BlockClosure)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "whileTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(self()) {aBlock()}>",
 source: "whileTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(self()) {aBlock()}>",
@@ -424,7 +454,8 @@ selector: "arguments",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.args || [];
+return smalltalk.withContext(function($ctx1) { 
+return self.args || [];
 return self}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.CompiledMethod)})},
 args: [],
 args: [],
 source: "arguments\x0a\x09<return self.args || []>",
 source: "arguments\x0a\x09<return self.args || []>",
@@ -440,7 +471,8 @@ selector: "category",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._basicAt_("category");
 $2=_st(self)._basicAt_("category");
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(self)._defaultCategory();
 $1=_st(self)._defaultCategory();
@@ -464,7 +496,8 @@ category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
 var oldCategory;
 var oldCategory;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 oldCategory=_st(self)._category();
 oldCategory=_st(self)._category();
 _st(self)._basicAt_put_("category",aString);
 _st(self)._basicAt_put_("category",aString);
 $1=_st(self)._methodClass();
 $1=_st(self)._methodClass();
@@ -473,9 +506,11 @@ $1;
 } else {
 } else {
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(self)._methodClass())._organization())._addElement_(aString);
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
 _st(_st(_st(_st(self)._methodClass())._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(each)._category()).__eq(oldCategory);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(each)._category()).__eq(oldCategory);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(self)._methodClass())._organization())._removeElement_(oldCategory);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 };
 };
 return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldCategory:oldCategory},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldCategory:oldCategory},smalltalk.CompiledMethod)})},
@@ -493,7 +528,8 @@ selector: "defaultCategory",
 category: 'defaults',
 category: 'defaults',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return "as yet unclassified";
+return smalltalk.withContext(function($ctx1) { 
+return "as yet unclassified";
 }, function($ctx1) {$ctx1.fill(self,"defaultCategory",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultCategory",{},smalltalk.CompiledMethod)})},
 args: [],
 args: [],
 source: "defaultCategory\x0a\x09^ 'as yet unclassified'",
 source: "defaultCategory\x0a\x09^ 'as yet unclassified'",
@@ -509,7 +545,8 @@ selector: "fn",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("fn");
 $1=_st(self)._basicAt_("fn");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"fn",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"fn",{},smalltalk.CompiledMethod)})},
@@ -527,7 +564,8 @@ selector: "fn:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("fn",aBlock);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("fn",aBlock);
 return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},smalltalk.CompiledMethod)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
 source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
@@ -543,7 +581,8 @@ selector: "messageSends",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("messageSends");
 $1=_st(self)._basicAt_("messageSends");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.CompiledMethod)})},
@@ -561,7 +600,8 @@ selector: "methodClass",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("methodClass");
 $1=_st(self)._basicAt_("methodClass");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.CompiledMethod)})},
@@ -579,7 +619,8 @@ selector: "protocol",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._category();
 $1=_st(self)._category();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.CompiledMethod)})},
@@ -597,7 +638,8 @@ selector: "referencedClasses",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("referencedClasses");
 $1=_st(self)._basicAt_("referencedClasses");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.CompiledMethod)})},
@@ -615,7 +657,8 @@ selector: "selector",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._basicAt_("selector");
 $1=_st(self)._basicAt_("selector");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.CompiledMethod)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.CompiledMethod)})},
@@ -633,7 +676,8 @@ selector: "selector:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("selector",aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("selector",aString);
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.CompiledMethod)})},
 args: ["aString"],
 args: ["aString"],
 source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
 source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
@@ -649,7 +693,8 @@ selector: "source",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._basicAt_("source");
 $2=_st(self)._basicAt_("source");
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1="";
 $1="";
@@ -672,7 +717,8 @@ selector: "source:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._basicAt_put_("source",aString);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._basicAt_put_("source",aString);
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.CompiledMethod)})},
 return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.CompiledMethod)})},
 args: ["aString"],
 args: ["aString"],
 source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
 source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
@@ -692,7 +738,8 @@ selector: "addWorker",
 category: 'private',
 category: 'private',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@worker"])._valueWithTimeout_((0));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@worker"])._valueWithTimeout_((0));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
 self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
 return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{},smalltalk.ForkPool)})},
 args: [],
 args: [],
@@ -709,7 +756,8 @@ selector: "defaultMaxPoolSize",
 category: 'defaults',
 category: 'defaults',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 $1=_st(_st(self)._class())._defaultMaxPoolSize();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool)})},
@@ -727,7 +775,8 @@ selector: "fork:",
 category: 'actions',
 category: 'actions',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self["@poolSize"]).__lt(_st(self)._maxPoolSize());
 $1=_st(self["@poolSize"]).__lt(_st(self)._maxPoolSize());
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(self)._addWorker();
 _st(self)._addWorker();
@@ -748,9 +797,11 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+function $Queue(){return smalltalk.Queue||(typeof Queue=="undefined"?nil:Queue)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 self["@poolSize"]=(0);
 self["@poolSize"]=(0);
-self["@queue"]=_st((smalltalk.Queue || Queue))._new();
+self["@queue"]=_st($Queue())._new();
 self["@worker"]=_st(self)._makeWorker();
 self["@worker"]=_st(self)._makeWorker();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ForkPool)})},
 args: [],
 args: [],
@@ -768,22 +819,28 @@ category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var sentinel;
 var sentinel;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
-sentinel=_st((smalltalk.Object || Object))._new();
+function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+sentinel=_st($Object())._new();
 $1=(function(){
 $1=(function(){
 var block;
 var block;
-return smalltalk.withContext(function($ctx2) {
self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
+return smalltalk.withContext(function($ctx2) {
+self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
 self["@poolSize"];
 self["@poolSize"];
 block=_st(self["@queue"])._nextIfAbsent_((function(){
 block=_st(self["@queue"])._nextIfAbsent_((function(){
-return smalltalk.withContext(function($ctx3) {
return sentinel;
+return smalltalk.withContext(function($ctx3) {
+return sentinel;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 block;
 block;
 $2=_st(block).__eq_eq(sentinel);
 $2=_st(block).__eq_eq(sentinel);
 if(! smalltalk.assert($2)){
 if(! smalltalk.assert($2)){
 return _st((function(){
 return _st((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(block)._value();
+return smalltalk.withContext(function($ctx3) {
+return _st(block)._value();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._addWorker();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._addWorker();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 };
 };
 }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
 }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
@@ -803,7 +860,8 @@ selector: "maxPoolSize",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@maxPoolSize"];
 $2=self["@maxPoolSize"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(self)._defaultMaxPoolSize();
 $1=_st(self)._defaultMaxPoolSize();
@@ -826,7 +884,8 @@ selector: "maxPoolSize:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anInteger){
 fn: function (anInteger){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@maxPoolSize"]=anInteger;
+return smalltalk.withContext(function($ctx1) { 
+self["@maxPoolSize"]=anInteger;
 return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger},smalltalk.ForkPool)})},
 return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger},smalltalk.ForkPool)})},
 args: ["anInteger"],
 args: ["anInteger"],
 source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
 source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
@@ -844,7 +903,8 @@ selector: "default",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=self["@default"];
 $2=self["@default"];
 if(($receiver = $2) == nil || $receiver == undefined){
 if(($receiver = $2) == nil || $receiver == undefined){
 self["@default"]=_st(self)._new();
 self["@default"]=_st(self)._new();
@@ -868,7 +928,10 @@ selector: "defaultMaxPoolSize",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return (100);
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=(100);
+return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool.klass)})},
 args: [],
 args: [],
 source: "defaultMaxPoolSize\x0a\x09^100",
 source: "defaultMaxPoolSize\x0a\x09^100",
@@ -884,7 +947,8 @@ selector: "resetDefault",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@default"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@default"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{},smalltalk.ForkPool.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{},smalltalk.ForkPool.klass)})},
 args: [],
 args: [],
 source: "resetDefault\x0a\x09default := nil",
 source: "resetDefault\x0a\x09default := nil",
@@ -903,7 +967,8 @@ selector: "arguments",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@arguments"];
 $1=self["@arguments"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.Message)})},
@@ -921,7 +986,8 @@ selector: "arguments:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anArray){
 fn: function (anArray){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@arguments"]=anArray;
+return smalltalk.withContext(function($ctx1) { 
+self["@arguments"]=anArray;
 return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray},smalltalk.Message)})},
 return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray},smalltalk.Message)})},
 args: ["anArray"],
 args: ["anArray"],
 source: "arguments: anArray\x0a\x09arguments := anArray",
 source: "arguments: anArray\x0a\x09arguments := anArray",
@@ -937,7 +1003,8 @@ selector: "printOn:",
 category: 'printing',
 category: 'printing',
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("(");
 _st($1)._nextPutAll_("(");
@@ -958,7 +1025,8 @@ selector: "selector",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@selector"];
 $1=self["@selector"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.Message)})},
@@ -976,7 +1044,8 @@ selector: "selector:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@selector"]=aString;
+return smalltalk.withContext(function($ctx1) { 
+self["@selector"]=aString;
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.Message)})},
 return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.Message)})},
 args: ["aString"],
 args: ["aString"],
 source: "selector: aString\x0a\x09selector := aString",
 source: "selector: aString\x0a\x09selector := aString",
@@ -992,7 +1061,8 @@ selector: "sendTo:",
 category: 'actions',
 category: 'actions',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 $1=_st(anObject)._perform_withArguments_(_st(self)._selector(),_st(self)._arguments());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},smalltalk.Message)})},
 }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},smalltalk.Message)})},
@@ -1011,7 +1081,8 @@ selector: "selector:arguments:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString,anArray){
 fn: function (aString,anArray){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._selector_(aString);
 _st($2)._selector_(aString);
 _st($2)._arguments_(anArray);
 _st($2)._arguments_(anArray);
@@ -1036,7 +1107,8 @@ selector: "asString",
 category: 'converting',
 category: 'converting',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(self)._isBlockContext();
 $2=_st(self)._isBlockContext();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $1=_st(_st("a block (in ").__comma(_st(_st(_st(_st(self)._methodContext())._receiver())._class())._printString())).__comma(")");
 $1=_st(_st("a block (in ").__comma(_st(_st(_st(_st(self)._methodContext())._receiver())._class())._printString())).__comma(")");
@@ -1059,7 +1131,8 @@ selector: "home",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.methodContext || self.homeContext;
+return smalltalk.withContext(function($ctx1) { 
+return self.methodContext || self.homeContext;
 return self}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.MethodContext)})},
 args: [],
 args: [],
 source: "home\x0a\x09<return self.methodContext || self.homeContext>",
 source: "home\x0a\x09<return self.methodContext || self.homeContext>",
@@ -1075,7 +1148,8 @@ selector: "isBlockContext",
 category: 'testing',
 category: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._selector())._isNil();
 $1=_st(_st(self)._selector())._isNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.MethodContext)})},
 }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.MethodContext)})},
@@ -1093,7 +1167,8 @@ selector: "locals",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.locals;
+return smalltalk.withContext(function($ctx1) { 
+return self.locals;
 return self}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.MethodContext)})},
 args: [],
 args: [],
 source: "locals\x0a\x09<return self.locals>",
 source: "locals\x0a\x09<return self.locals>",
@@ -1109,7 +1184,8 @@ selector: "method",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(_st(self)._methodContext())._receiver())._class())._lookupSelector_(_st(_st(self)._methodContext())._selector());
 $1=_st(_st(_st(_st(self)._methodContext())._receiver())._class())._lookupSelector_(_st(_st(self)._methodContext())._selector());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
@@ -1127,7 +1203,8 @@ selector: "methodContext",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(self)._isBlockContext();
 $1=_st(self)._isBlockContext();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 $2=self;
 $2=self;
@@ -1150,7 +1227,8 @@ selector: "outerContext",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.homeContext;
+return smalltalk.withContext(function($ctx1) { 
+return self.homeContext;
 return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.MethodContext)})},
 args: [],
 args: [],
 source: "outerContext\x0a\x09<return self.homeContext>",
 source: "outerContext\x0a\x09<return self.homeContext>",
@@ -1166,7 +1244,8 @@ selector: "pc",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.pc;
+return smalltalk.withContext(function($ctx1) { 
+return self.pc;
 return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
 args: [],
 args: [],
 source: "pc\x0a\x09<return self.pc>",
 source: "pc\x0a\x09<return self.pc>",
@@ -1182,7 +1261,8 @@ selector: "printOn:",
 category: 'printing',
 category: 'printing',
 fn: function (aStream){
 fn: function (aStream){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 smalltalk.Object.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 $1=aStream;
 _st($1)._nextPutAll_("(");
 _st($1)._nextPutAll_("(");
@@ -1203,7 +1283,8 @@ selector: "receiver",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self.receiver;
+return smalltalk.withContext(function($ctx1) { 
+return self.receiver;
 return self}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MethodContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MethodContext)})},
 args: [],
 args: [],
 source: "receiver\x0a\x09<return self.receiver>",
 source: "receiver\x0a\x09<return self.receiver>",
@@ -1219,7 +1300,8 @@ selector: "selector",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		if(self.selector) {
 		if(self.selector) {
 			return smalltalk.convertSelector(self.selector);
 			return smalltalk.convertSelector(self.selector);
 		} else {
 		} else {
@@ -1241,7 +1323,8 @@ selector: "temps",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st(self)._deprecatedAPI();
 _st(self)._deprecatedAPI();
 $1=_st(self)._locals();
 $1=_st(self)._locals();
 return $1;
 return $1;
@@ -1265,7 +1348,8 @@ selector: "constructor:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native();
 		return new native();
 	;
 	;
@@ -1284,7 +1368,8 @@ selector: "constructor:value:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString,anObject){
 fn: function (aString,anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject);
 		return new native(anObject);
 	;
 	;
@@ -1303,7 +1388,8 @@ selector: "constructor:value:value:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString,anObject,anObject2){
 fn: function (aString,anObject,anObject2){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject,anObject2);
 		return new native(anObject,anObject2);
 	;
 	;
@@ -1322,7 +1408,8 @@ selector: "constructor:value:value:value:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aString,anObject,anObject2,anObject3){
 fn: function (aString,anObject,anObject2,anObject3){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		var native=eval(aString);
 		var native=eval(aString);
 		return new native(anObject,anObject2, anObject3);
 		return new native(anObject,anObject2, anObject3);
 	;
 	;
@@ -1341,7 +1428,8 @@ selector: "exists:",
 category: 'testing',
 category: 'testing',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
+return smalltalk.withContext(function($ctx1) { 
+
 		if(aString in window) {
 		if(aString in window) {
 			return true
 			return true
 		} else {
 		} else {

File diff ditekan karena terlalu besar
+ 225 - 122
js/Kernel-Objects.deploy.js


File diff ditekan karena terlalu besar
+ 234 - 134
js/Kernel-Objects.js


File diff ditekan karena terlalu besar
+ 335 - 174
js/Kernel-Tests.deploy.js


File diff ditekan karena terlalu besar
+ 335 - 174
js/Kernel-Tests.js


+ 26 - 12
js/Kernel-Transcript.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "clear",
 selector: "clear",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.ConsoleTranscript)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ConsoleTranscript);
 smalltalk.ConsoleTranscript);
 
 
@@ -16,7 +17,8 @@ smalltalk.method({
 selector: "cr",
 selector: "cr",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.ConsoleTranscript)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ConsoleTranscript);
 smalltalk.ConsoleTranscript);
 
 
@@ -26,7 +28,8 @@ smalltalk.method({
 selector: "open",
 selector: "open",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.ConsoleTranscript)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ConsoleTranscript);
 smalltalk.ConsoleTranscript);
 
 
@@ -36,7 +39,8 @@ smalltalk.method({
 selector: "show:",
 selector: "show:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
console.log(String(string._asString()));
+return smalltalk.withContext(function($ctx1) { 
+console.log(String(string._asString()));
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.ConsoleTranscript)})},
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.ConsoleTranscript)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ConsoleTranscript);
 smalltalk.ConsoleTranscript);
@@ -48,7 +52,9 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.Transcript || Transcript))._register_(_st(self)._new());
+function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+return smalltalk.withContext(function($ctx1) { 
+_st($Transcript())._register_(_st(self)._new());
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ConsoleTranscript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ConsoleTranscript.klass)})},
 messageSends: ["register:", "new"]}),
 messageSends: ["register:", "new"]}),
 smalltalk.ConsoleTranscript.klass);
 smalltalk.ConsoleTranscript.klass);
@@ -63,7 +69,8 @@ smalltalk.method({
 selector: "clear",
 selector: "clear",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._clear();
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._clear();
 return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.Transcript.klass)})},
 messageSends: ["clear", "current"]}),
 messageSends: ["clear", "current"]}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);
@@ -74,7 +81,9 @@ smalltalk.method({
 selector: "cr",
 selector: "cr",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(_st((smalltalk.String || String))._cr());
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._show_(_st($String())._cr());
 return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
 messageSends: ["show:", "cr", "current"]}),
 messageSends: ["show:", "cr", "current"]}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);
@@ -85,7 +94,8 @@ smalltalk.method({
 selector: "current",
 selector: "current",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@current"];
 $1=self["@current"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Transcript.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Transcript.klass)})},
@@ -98,7 +108,8 @@ smalltalk.method({
 selector: "new",
 selector: "new",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Transcript.klass)})},
 messageSends: ["shouldNotImplement"]}),
 messageSends: ["shouldNotImplement"]}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);
@@ -109,7 +120,8 @@ smalltalk.method({
 selector: "open",
 selector: "open",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._open();
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._open();
 return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Transcript.klass)})},
 messageSends: ["open", "current"]}),
 messageSends: ["open", "current"]}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);
@@ -120,7 +132,8 @@ smalltalk.method({
 selector: "register:",
 selector: "register:",
 fn: function (aTranscript){
 fn: function (aTranscript){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@current"]=aTranscript;
+return smalltalk.withContext(function($ctx1) { 
+self["@current"]=aTranscript;
 return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.Transcript.klass)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);
@@ -131,7 +144,8 @@ smalltalk.method({
 selector: "show:",
 selector: "show:",
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(anObject);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._show_(anObject);
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.Transcript.klass)})},
 messageSends: ["show:", "current"]}),
 messageSends: ["show:", "current"]}),
 smalltalk.Transcript.klass);
 smalltalk.Transcript.klass);

+ 26 - 12
js/Kernel-Transcript.js

@@ -7,7 +7,8 @@ selector: "clear",
 category: 'printing',
 category: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.ConsoleTranscript)})},
 args: [],
 args: [],
 source: "clear\x0a\x09\x22no op\x22",
 source: "clear\x0a\x09\x22no op\x22",
 messageSends: [],
 messageSends: [],
@@ -22,7 +23,8 @@ selector: "cr",
 category: 'printing',
 category: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.ConsoleTranscript)})},
 args: [],
 args: [],
 source: "cr\x0a\x09\x22no op\x22",
 source: "cr\x0a\x09\x22no op\x22",
 messageSends: [],
 messageSends: [],
@@ -37,7 +39,8 @@ selector: "open",
 category: 'actions',
 category: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.ConsoleTranscript)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.ConsoleTranscript)})},
 args: [],
 args: [],
 source: "open",
 source: "open",
 messageSends: [],
 messageSends: [],
@@ -52,7 +55,8 @@ selector: "show:",
 category: 'printing',
 category: 'printing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
console.log(String(string._asString()));
+return smalltalk.withContext(function($ctx1) { 
+console.log(String(string._asString()));
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.ConsoleTranscript)})},
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.ConsoleTranscript)})},
 args: ["anObject"],
 args: ["anObject"],
 source: "show: anObject\x0a\x09<console.log(String(string._asString()))>",
 source: "show: anObject\x0a\x09<console.log(String(string._asString()))>",
@@ -69,7 +73,9 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((smalltalk.Transcript || Transcript))._register_(_st(self)._new());
+function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+return smalltalk.withContext(function($ctx1) { 
+_st($Transcript())._register_(_st(self)._new());
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ConsoleTranscript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ConsoleTranscript.klass)})},
 args: [],
 args: [],
 source: "initialize\x0a\x09Transcript register: self new",
 source: "initialize\x0a\x09Transcript register: self new",
@@ -89,7 +95,8 @@ selector: "clear",
 category: 'printing',
 category: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._clear();
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._clear();
 return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.Transcript.klass)})},
 args: [],
 args: [],
 source: "clear\x0a\x09self current clear",
 source: "clear\x0a\x09self current clear",
@@ -105,7 +112,9 @@ selector: "cr",
 category: 'printing',
 category: 'printing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(_st((smalltalk.String || String))._cr());
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._show_(_st($String())._cr());
 return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
 args: [],
 args: [],
 source: "cr\x0a\x09self current show: String cr",
 source: "cr\x0a\x09self current show: String cr",
@@ -121,7 +130,8 @@ selector: "current",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@current"];
 $1=self["@current"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Transcript.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Transcript.klass)})},
@@ -139,7 +149,8 @@ selector: "new",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Transcript.klass)})},
 args: [],
 args: [],
 source: "new\x0a\x09self shouldNotImplement",
 source: "new\x0a\x09self shouldNotImplement",
@@ -155,7 +166,8 @@ selector: "open",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._open();
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._open();
 return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Transcript.klass)})},
 args: [],
 args: [],
 source: "open\x0a\x09self current open",
 source: "open\x0a\x09self current open",
@@ -171,7 +183,8 @@ selector: "register:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aTranscript){
 fn: function (aTranscript){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@current"]=aTranscript;
+return smalltalk.withContext(function($ctx1) { 
+self["@current"]=aTranscript;
 return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.Transcript.klass)})},
 args: ["aTranscript"],
 args: ["aTranscript"],
 source: "register: aTranscript\x0a\x09current := aTranscript",
 source: "register: aTranscript\x0a\x09current := aTranscript",
@@ -187,7 +200,8 @@ selector: "show:",
 category: 'printing',
 category: 'printing',
 fn: function (anObject){
 fn: function (anObject){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._current())._show_(anObject);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._current())._show_(anObject);
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.Transcript.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.Transcript.klass)})},
 args: ["anObject"],
 args: ["anObject"],
 source: "show: anObject\x0a\x09self current show: anObject",
 source: "show: anObject\x0a\x09self current show: anObject",

+ 120 - 62
js/SUnit-Tests.deploy.js

@@ -6,8 +6,10 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@empty"]=_st((smalltalk.Set || Set))._new();
-self["@full"]=_st((smalltalk.Set || Set))._with_with_((5),smalltalk.symbolFor("abc"));
+function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
+return smalltalk.withContext(function($ctx1) { 
+self["@empty"]=_st($Set())._new();
+self["@full"]=_st($Set())._with_with_((5),"abc");
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ExampleSetTest)})},
 messageSends: ["new", "with:with:"]}),
 messageSends: ["new", "with:with:"]}),
 smalltalk.ExampleSetTest);
 smalltalk.ExampleSetTest);
@@ -18,7 +20,8 @@ smalltalk.method({
 selector: "testAdd",
 selector: "testAdd",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._add_((5));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@empty"])._add_((5));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
 return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
 messageSends: ["add:", "assert:", "includes:"]}),
 messageSends: ["add:", "assert:", "includes:"]}),
@@ -30,7 +33,8 @@ smalltalk.method({
 selector: "testGrow",
 selector: "testGrow",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._addAll_(_st((1))._to_((100)));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@empty"])._addAll_(_st((1))._to_((100)));
 _st(self)._assert_equals_(_st(self["@empty"])._size(),(100));
 _st(self)._assert_equals_(_st(self["@empty"])._size(),(100));
 return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
 messageSends: ["addAll:", "to:", "assert:equals:", "size"]}),
 messageSends: ["addAll:", "to:", "assert:equals:", "size"]}),
@@ -42,12 +46,16 @@ smalltalk.method({
 selector: "testIllegal",
 selector: "testIllegal",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@empty"])._at_((5));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@empty"])._at_put_((5),"abc");
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
 messageSends: ["should:raise:", "at:", "at:put:"]}),
 messageSends: ["should:raise:", "at:", "at:put:"]}),
 smalltalk.ExampleSetTest);
 smalltalk.ExampleSetTest);
@@ -58,8 +66,9 @@ smalltalk.method({
 selector: "testIncludes",
 selector: "testIncludes",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(self["@full"])._includes_((5)));
-_st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(self["@full"])._includes_((5)));
+_st(self)._assert_(_st(self["@full"])._includes_("abc"));
 return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
 messageSends: ["assert:", "includes:"]}),
 messageSends: ["assert:", "includes:"]}),
 smalltalk.ExampleSetTest);
 smalltalk.ExampleSetTest);
@@ -70,7 +79,8 @@ smalltalk.method({
 selector: "testOccurrences",
 selector: "testOccurrences",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self["@full"])._add_((5));
 _st(self["@full"])._add_((5));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
@@ -84,8 +94,9 @@ smalltalk.method({
 selector: "testRemove",
 selector: "testRemove",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@full"])._remove_((5));
-_st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@full"])._remove_((5));
+_st(self)._assert_(_st(self["@full"])._includes_("abc"));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
 return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
 messageSends: ["remove:", "assert:", "includes:", "deny:"]}),
 messageSends: ["remove:", "assert:", "includes:", "deny:"]}),
@@ -100,10 +111,12 @@ smalltalk.method({
 selector: "fakeError",
 selector: "fakeError",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
+self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return _st(self)._error_("Intentional");
 return _st(self)._error_("Intentional");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
@@ -117,10 +130,12 @@ smalltalk.method({
 selector: "fakeErrorFailingInTearDown",
 selector: "fakeErrorFailingInTearDown",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Intentional");
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._error_("Intentional");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]}),
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]}),
@@ -132,10 +147,12 @@ smalltalk.method({
 selector: "fakeFailure",
 selector: "fakeFailure",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
+self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return _st(self)._assert_(false);
 return _st(self)._assert_(false);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
@@ -149,11 +166,14 @@ smalltalk.method({
 selector: "fakeMultipleTimeoutFailing",
 selector: "fakeMultipleTimeoutFailing",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((100));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((100));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
+return smalltalk.withContext(function($ctx2) {
+_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._finished();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
@@ -166,11 +186,14 @@ smalltalk.method({
 selector: "fakeMultipleTimeoutPassing",
 selector: "fakeMultipleTimeoutPassing",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((10));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((10));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
+return smalltalk.withContext(function($ctx2) {
+_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._finished();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
@@ -183,9 +206,11 @@ smalltalk.method({
 selector: "fakeTimeout",
 selector: "fakeTimeout",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((4));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((4));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]}),
 messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]}),
@@ -197,9 +222,11 @@ smalltalk.method({
 selector: "selectorSetOf:",
 selector: "selectorSetOf:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(aCollection)._collect_((function(each){
 $1=_st(_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._selector();
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._selector();
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
 }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
@@ -212,7 +239,8 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="ok";
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.SUnitAsyncTest);
 smalltalk.SUnitAsyncTest);
@@ -223,7 +251,8 @@ smalltalk.method({
 selector: "tearDown",
 selector: "tearDown",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_("ok",self["@flag"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_("ok",self["@flag"]);
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
 messageSends: ["assert:equals:"]}),
 messageSends: ["assert:equals:"]}),
 smalltalk.SUnitAsyncTest);
 smalltalk.SUnitAsyncTest);
@@ -235,20 +264,26 @@ selector: "testAsyncErrorsAndFailures",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var suite,runner,result,assertBlock;
 var suite,runner,result,assertBlock;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
 suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self)._class())._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
+runner=_st($TestSuiteRunner())._on_(suite);
 _st(self)._timeout_((200));
 _st(self)._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
 assertBlock=_st(self)._async_((function(){
 assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st(["fakeError"])._asSet());
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st(["fakeError"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeErrorFailingInTearDown", "fakeFailure"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeErrorFailingInTearDown", "fakeFailure"])._asSet());
 return _st(self)._finished();
 return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(runner)._announcer())._on_do_((smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(ann)._result()).__eq_eq(result);
+_st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($2)._ifTrue_(assertBlock);
 return _st($2)._ifTrue_(assertBlock);
@@ -265,15 +300,21 @@ smalltalk.method({
 selector: "testAsyncNeedsTimeout",
 selector: "testAsyncNeedsTimeout",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._finished();
 _st(self)._finished();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]}),
 messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]}),
@@ -285,13 +326,17 @@ smalltalk.method({
 selector: "testFinishedNeedsTimeout",
 selector: "testFinishedNeedsTimeout",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]}),
 messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]}),
 smalltalk.SUnitAsyncTest);
 smalltalk.SUnitAsyncTest);
@@ -302,7 +347,8 @@ smalltalk.method({
 selector: "testIsAsyncReturnsCorrectValues",
 selector: "testIsAsyncReturnsCorrectValues",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._deny_(_st(self)._isAsync());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._deny_(_st(self)._isAsync());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._finished();
 _st(self)._finished();
@@ -317,10 +363,12 @@ smalltalk.method({
 selector: "testPass",
 selector: "testPass",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_(true);
 _st(self)._finished();
 _st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 return self["@flag"];
 return self["@flag"];
@@ -336,20 +384,27 @@ selector: "testTimeouts",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var suite,runner,result,assertBlock;
 var suite,runner,result,assertBlock;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
+function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
 suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self)._class())._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
+runner=_st($TestSuiteRunner())._on_(suite);
 _st(self)._timeout_((200));
 _st(self)._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
 assertBlock=_st(self)._async_((function(){
 assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st((smalltalk.Set || Set))._new());
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st($Set())._new());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeMultipleTimeoutFailing", "fakeTimeout"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeMultipleTimeoutFailing", "fakeTimeout"])._asSet());
 return _st(self)._finished();
 return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(runner)._announcer())._on_do_((smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(ann)._result()).__eq_eq(result);
+_st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($2)._ifTrue_(assertBlock);
 return _st($2)._ifTrue_(assertBlock);
@@ -367,11 +422,13 @@ selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var x;
 var x;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 x=(0);
 x=(0);
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));
@@ -379,7 +436,8 @@ x;
 return _st(self)._assert_equals_(x,(1));
 return _st(self)._assert_equals_(x,(1));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));

+ 120 - 62
js/SUnit-Tests.js

@@ -8,8 +8,10 @@ selector: "setUp",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@empty"]=_st((smalltalk.Set || Set))._new();
-self["@full"]=_st((smalltalk.Set || Set))._with_with_((5),smalltalk.symbolFor("abc"));
+function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
+return smalltalk.withContext(function($ctx1) { 
+self["@empty"]=_st($Set())._new();
+self["@full"]=_st($Set())._with_with_((5),"abc");
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
 source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
@@ -25,7 +27,8 @@ selector: "testAdd",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._add_((5));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@empty"])._add_((5));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
 _st(self)._assert_(_st(self["@empty"])._includes_((5)));
 return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
@@ -42,7 +45,8 @@ selector: "testGrow",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@empty"])._addAll_(_st((1))._to_((100)));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@empty"])._addAll_(_st((1))._to_((100)));
 _st(self)._assert_equals_(_st(self["@empty"])._size(),(100));
 _st(self)._assert_equals_(_st(self["@empty"])._size(),(100));
 return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
@@ -59,12 +63,16 @@ selector: "testIllegal",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@empty"])._at_put_((5),smalltalk.symbolFor("abc"));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@empty"])._at_((5));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@empty"])._at_put_((5),"abc");
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
 source: "testIllegal\x0a\x09self\x0a\x09\x09should: [empty at: 5]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [empty at: 5 put: #abc]\x0a\x09\x09raise: Error",
 source: "testIllegal\x0a\x09self\x0a\x09\x09should: [empty at: 5]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [empty at: 5 put: #abc]\x0a\x09\x09raise: Error",
@@ -80,8 +88,9 @@ selector: "testIncludes",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(self["@full"])._includes_((5)));
-_st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(self["@full"])._includes_((5)));
+_st(self)._assert_(_st(self["@full"])._includes_("abc"));
 return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
@@ -97,7 +106,8 @@ selector: "testOccurrences",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self["@full"])._add_((5));
 _st(self["@full"])._add_((5));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
 _st(self)._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
@@ -116,8 +126,9 @@ selector: "testRemove",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@full"])._remove_((5));
-_st(self)._assert_(_st(self["@full"])._includes_(smalltalk.symbolFor("abc")));
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@full"])._remove_((5));
+_st(self)._assert_(_st(self["@full"])._includes_("abc"));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
 _st(self)._deny_(_st(self["@full"])._includes_((5)));
 return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
 args: [],
 args: [],
@@ -137,10 +148,12 @@ selector: "fakeError",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
+self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return _st(self)._error_("Intentional");
 return _st(self)._error_("Intentional");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
@@ -159,10 +172,12 @@ selector: "fakeErrorFailingInTearDown",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._error_("Intentional");
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._error_("Intentional");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
@@ -179,10 +194,12 @@ selector: "fakeFailure",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx2) {
+self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 return _st(self)._assert_(false);
 return _st(self)._assert_(false);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
@@ -201,11 +218,14 @@ selector: "fakeMultipleTimeoutFailing",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((100));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((100));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((5));
+return smalltalk.withContext(function($ctx2) {
+_st(self)._timeout_((5));
 return _st(_st(self)._async_((function(){
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._finished();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
@@ -223,11 +243,14 @@ selector: "fakeMultipleTimeoutPassing",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((10));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((10));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._timeout_((20));
+return smalltalk.withContext(function($ctx2) {
+_st(self)._timeout_((20));
 return _st(_st(self)._async_((function(){
 return _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._finished();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
@@ -245,9 +268,11 @@ selector: "fakeTimeout",
 category: 'helpers',
 category: 'helpers',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._timeout_((4));
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._timeout_((4));
 _st(_st(self)._async_((function(){
 _st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
@@ -264,9 +289,11 @@ selector: "selectorSetOf:",
 category: 'private',
 category: 'private',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(aCollection)._collect_((function(each){
 $1=_st(_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._selector();
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._selector();
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
 }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
@@ -284,7 +311,8 @@ selector: "setUp",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="ok";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="ok";
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
 source: "setUp\x0a\x09flag := 'ok'",
 source: "setUp\x0a\x09flag := 'ok'",
@@ -300,7 +328,8 @@ selector: "tearDown",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_equals_("ok",self["@flag"]);
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_equals_("ok",self["@flag"]);
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
 source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
@@ -317,20 +346,26 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var suite,runner,result,assertBlock;
 var suite,runner,result,assertBlock;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
 suite=_st(["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self)._class())._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
+runner=_st($TestSuiteRunner())._on_(suite);
 _st(self)._timeout_((200));
 _st(self)._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
 assertBlock=_st(self)._async_((function(){
 assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st(["fakeError"])._asSet());
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st(["fakeError"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeErrorFailingInTearDown", "fakeFailure"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeErrorFailingInTearDown", "fakeFailure"])._asSet());
 return _st(self)._finished();
 return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(runner)._announcer())._on_do_((smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(ann)._result()).__eq_eq(result);
+_st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($2)._ifTrue_(assertBlock);
 return _st($2)._ifTrue_(assertBlock);
@@ -352,15 +387,21 @@ selector: "testAsyncNeedsTimeout",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._async_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._async_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._finished();
 _st(self)._finished();
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
@@ -377,13 +418,17 @@ selector: "testFinishedNeedsTimeout",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._should_raise_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._shouldnt_raise_((function(){
 _st(self)._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.Error || Error));
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._finished();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 args: [],
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
@@ -399,7 +444,8 @@ selector: "testIsAsyncReturnsCorrectValues",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._deny_(_st(self)._isAsync());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._deny_(_st(self)._isAsync());
 _st(self)._timeout_((0));
 _st(self)._timeout_((0));
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._assert_(_st(self)._isAsync());
 _st(self)._finished();
 _st(self)._finished();
@@ -419,10 +465,12 @@ selector: "testPass",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_(true);
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_(true);
 _st(self)._finished();
 _st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 return self["@flag"];
 return self["@flag"];
@@ -443,20 +491,27 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var suite,runner,result,assertBlock;
 var suite,runner,result,assertBlock;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
+function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
 suite=_st(["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"])._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(_st(self)._class())._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self)._class())._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-runner=_st((smalltalk.TestSuiteRunner || TestSuiteRunner))._on_(suite);
+runner=_st($TestSuiteRunner())._on_(suite);
 _st(self)._timeout_((200));
 _st(self)._timeout_((200));
 result=_st(runner)._result();
 result=_st(runner)._result();
 assertBlock=_st(self)._async_((function(){
 assertBlock=_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st((smalltalk.Set || Set))._new());
+return smalltalk.withContext(function($ctx2) {
+_st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._errors()),_st($Set())._new());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeMultipleTimeoutFailing", "fakeTimeout"])._asSet());
 _st(self)._assert_equals_(_st(self)._selectorSetOf_(_st(result)._failures()),_st(["fakeMultipleTimeoutFailing", "fakeTimeout"])._asSet());
 return _st(self)._finished();
 return _st(self)._finished();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(runner)._announcer())._on_do_((smalltalk.ResultAnnouncement || ResultAnnouncement),(function(ann){
-return smalltalk.withContext(function($ctx2) {
$1=_st(_st(ann)._result()).__eq_eq(result);
+_st(_st(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
+return smalltalk.withContext(function($ctx2) {
+$1=_st(_st(ann)._result()).__eq_eq(result);
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 $2=_st(_st(result)._runs()).__eq(_st(result)._total());
 return _st($2)._ifTrue_(assertBlock);
 return _st($2)._ifTrue_(assertBlock);
@@ -479,11 +534,13 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var x;
 var x;
-return smalltalk.withContext(function($ctx1) { 
self["@flag"]="bad";
+return smalltalk.withContext(function($ctx1) { 
+self["@flag"]="bad";
 _st(self)._timeout_((10));
 _st(self)._timeout_((10));
 x=(0);
 x=(0);
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));
@@ -491,7 +548,8 @@ x;
 return _st(self)._assert_equals_(x,(1));
 return _st(self)._assert_equals_(x,(1));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
 self["@flag"]=_st(_st(self)._async_((function(){
 self["@flag"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self)._finished();
+return smalltalk.withContext(function($ctx2) {
+_st(self)._finished();
 self["@flag"]="ok";
 self["@flag"]="ok";
 self["@flag"];
 self["@flag"];
 x=_st(x).__plus((1));
 x=_st(x).__plus((1));

+ 193 - 96
js/SUnit.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "result",
 selector: "result",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@result"];
 $1=self["@result"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ResultAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ResultAnnouncement)})},
@@ -19,7 +20,8 @@ smalltalk.method({
 selector: "result:",
 selector: "result:",
 fn: function (aTestResult){
 fn: function (aTestResult){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
+return smalltalk.withContext(function($ctx1) { 
+self["@result"]=aTestResult;
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ResultAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ResultAnnouncement)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ResultAnnouncement);
 smalltalk.ResultAnnouncement);
@@ -33,7 +35,8 @@ smalltalk.method({
 selector: "assert:",
 selector: "assert:",
 fn: function (aBoolean){
 fn: function (aBoolean){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_description_(aBoolean,"Assertion failed");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_description_(aBoolean,"Assertion failed");
 return self}, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 messageSends: ["assert:description:"]}),
 messageSends: ["assert:description:"]}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -44,7 +47,8 @@ smalltalk.method({
 selector: "assert:description:",
 selector: "assert:description:",
 fn: function (aBoolean,aString){
 fn: function (aBoolean,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=aBoolean;
 $1=aBoolean;
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self)._signalFailure_(aString);
 _st(self)._signalFailure_(aString);
@@ -59,7 +63,8 @@ smalltalk.method({
 selector: "assert:equals:",
 selector: "assert:equals:",
 fn: function (actual,expected){
 fn: function (actual,expected){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._assert_description_(_st(actual).__eq(expected),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 $1=_st(self)._assert_description_(_st(actual).__eq(expected),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},smalltalk.TestCase)})},
@@ -73,11 +78,13 @@ selector: "async:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
 var c;
 var c;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 _st(self)._errorIfNotAsync_("#async");
 _st(self)._errorIfNotAsync_("#async");
 c=self["@context"];
 c=self["@context"];
 $1=(function(){
 $1=(function(){
-return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
+return smalltalk.withContext(function($ctx2) {
+$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 return _st(c)._execute_(aBlock);
 return _st(c)._execute_(aBlock);
 };
 };
@@ -93,7 +100,8 @@ smalltalk.method({
 selector: "context:",
 selector: "context:",
 fn: function (aRunningTestContext){
 fn: function (aRunningTestContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@context"]=aRunningTestContext;
+return smalltalk.withContext(function($ctx1) { 
+self["@context"]=aRunningTestContext;
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aRunningTestContext:aRunningTestContext},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aRunningTestContext:aRunningTestContext},smalltalk.TestCase)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -104,7 +112,8 @@ smalltalk.method({
 selector: "deny:",
 selector: "deny:",
 fn: function (aBoolean){
 fn: function (aBoolean){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBoolean)._not());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(aBoolean)._not());
 return self}, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 messageSends: ["assert:", "not"]}),
 messageSends: ["assert:", "not"]}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -115,7 +124,8 @@ smalltalk.method({
 selector: "errorIfNotAsync:",
 selector: "errorIfNotAsync:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._isAsync();
 $1=_st(self)._isAsync();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
@@ -130,7 +140,8 @@ smalltalk.method({
 selector: "finished",
 selector: "finished",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._errorIfNotAsync_("#finished");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._errorIfNotAsync_("#finished");
 self["@asyncTimeout"]=nil;
 self["@asyncTimeout"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"finished",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"finished",{},smalltalk.TestCase)})},
 messageSends: ["errorIfNotAsync:"]}),
 messageSends: ["errorIfNotAsync:"]}),
@@ -142,7 +153,8 @@ smalltalk.method({
 selector: "isAsync",
 selector: "isAsync",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self["@asyncTimeout"])._notNil();
 $1=_st(self["@asyncTimeout"])._notNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isAsync",{},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"isAsync",{},smalltalk.TestCase)})},
@@ -155,7 +167,8 @@ smalltalk.method({
 selector: "performTest",
 selector: "performTest",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@asyncTimeout"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@asyncTimeout"]=nil;
 _st(self)._perform_(_st(self)._selector());
 _st(self)._perform_(_st(self)._selector());
 return self}, function($ctx1) {$ctx1.fill(self,"performTest",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"performTest",{},smalltalk.TestCase)})},
 messageSends: ["perform:", "selector"]}),
 messageSends: ["perform:", "selector"]}),
@@ -167,7 +180,9 @@ smalltalk.method({
 selector: "runCase",
 selector: "runCase",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.TestContext || TestContext))._testCase_(self))._start();
+function $TestContext(){return smalltalk.TestContext||(typeof TestContext=="undefined"?nil:TestContext)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($TestContext())._testCase_(self))._start();
 return self}, function($ctx1) {$ctx1.fill(self,"runCase",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"runCase",{},smalltalk.TestCase)})},
 messageSends: ["start", "testCase:"]}),
 messageSends: ["start", "testCase:"]}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -178,7 +193,8 @@ smalltalk.method({
 selector: "selector",
 selector: "selector",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@testSelector"];
 $1=self["@testSelector"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.TestCase)})},
@@ -191,7 +207,8 @@ smalltalk.method({
 selector: "setTestSelector:",
 selector: "setTestSelector:",
 fn: function (aSelector){
 fn: function (aSelector){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@testSelector"]=aSelector;
+return smalltalk.withContext(function($ctx1) { 
+self["@testSelector"]=aSelector;
 return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:",{aSelector:aSelector},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:",{aSelector:aSelector},smalltalk.TestCase)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -202,7 +219,8 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.TestCase)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.TestCase)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
@@ -212,7 +230,8 @@ smalltalk.method({
 selector: "should:",
 selector: "should:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBlock)._value());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(aBlock)._value());
 return self}, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},smalltalk.TestCase)})},
 messageSends: ["assert:", "value"]}),
 messageSends: ["assert:", "value"]}),
 smalltalk.TestCase);
 smalltalk.TestCase);
@@ -223,11 +242,14 @@ smalltalk.method({
 selector: "should:raise:",
 selector: "should:raise:",
 fn: function (aBlock,anExceptionClass){
 fn: function (aBlock,anExceptionClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(aBlock)._value();
 return false;
 return false;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
return true;
+return smalltalk.withContext(function($ctx2) {
+return true;
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 return self}, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 messageSends: ["assert:", "on:do:", "value"]}),
 messageSends: ["assert:", "on:do:", "value"]}),
@@ -239,11 +261,14 @@ smalltalk.method({
 selector: "shouldnt:raise:",
 selector: "shouldnt:raise:",
 fn: function (aBlock,anExceptionClass){
 fn: function (aBlock,anExceptionClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(aBlock)._value();
 return true;
 return true;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
return false;
+return smalltalk.withContext(function($ctx2) {
+return false;
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 messageSends: ["assert:", "on:do:", "value"]}),
 messageSends: ["assert:", "on:do:", "value"]}),
@@ -255,8 +280,10 @@ smalltalk.method({
 selector: "signalFailure:",
 selector: "signalFailure:",
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.TestFailure || TestFailure))._new();
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($TestFailure())._new();
 _st($1)._messageText_(aString);
 _st($1)._messageText_(aString);
 $2=_st($1)._signal();
 $2=_st($1)._signal();
 return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},smalltalk.TestCase)})},
@@ -269,7 +296,8 @@ smalltalk.method({
 selector: "tearDown",
 selector: "tearDown",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.TestCase)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.TestCase)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
@@ -279,7 +307,8 @@ smalltalk.method({
 selector: "timeout:",
 selector: "timeout:",
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@asyncTimeout"];
 $1=self["@asyncTimeout"];
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -288,7 +317,8 @@ _st(self["@asyncTimeout"])._clearTimeout();
 };
 };
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._assert_description_(false,"SUnit grace time exhausted");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_(aNumber);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_(aNumber);
 return self}, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},smalltalk.TestCase)})},
 messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]}),
 messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]}),
@@ -302,7 +332,8 @@ selector: "allTestSelectors",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var selectors;
 var selectors;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 selectors=_st(self)._testSelectors();
 selectors=_st(self)._testSelectors();
 $1=_st(self)._shouldInheritSelectors();
 $1=_st(self)._shouldInheritSelectors();
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
@@ -320,9 +351,11 @@ smalltalk.method({
 selector: "buildSuite",
 selector: "buildSuite",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"buildSuite",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"buildSuite",{},smalltalk.TestCase.klass)})},
@@ -335,7 +368,8 @@ smalltalk.method({
 selector: "isAbstract",
 selector: "isAbstract",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._name()).__eq("TestCase");
 $1=_st(_st(self)._name()).__eq("TestCase");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.TestCase.klass)})},
@@ -348,8 +382,10 @@ smalltalk.method({
 selector: "lookupHierarchyRoot",
 selector: "lookupHierarchyRoot",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.TestCase || TestCase);
+function $TestCase(){return smalltalk.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$TestCase();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot",{},smalltalk.TestCase.klass)})},
 messageSends: []}),
 messageSends: []}),
@@ -361,7 +397,8 @@ smalltalk.method({
 selector: "selector:",
 selector: "selector:",
 fn: function (aSelector){
 fn: function (aSelector){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._setTestSelector_(aSelector);
 _st($2)._setTestSelector_(aSelector);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -377,7 +414,8 @@ smalltalk.method({
 selector: "shouldInheritSelectors",
 selector: "shouldInheritSelectors",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.TestCase.klass)})},
@@ -390,9 +428,11 @@ smalltalk.method({
 selector: "testSelectors",
 selector: "testSelectors",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._match_("^test");
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._match_("^test");
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"testSelectors",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"testSelectors",{},smalltalk.TestCase.klass)})},
@@ -408,18 +448,22 @@ selector: "execute:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
 var failed;
 var failed;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 _st(self["@testCase"])._context_(self);
 _st(self["@testCase"])._context_(self);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
failed=true;
+return smalltalk.withContext(function($ctx2) {
+failed=true;
 failed;
 failed;
 _st(aBlock)._value();
 _st(aBlock)._value();
 failed=false;
 failed=false;
 return failed;
 return failed;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._context_(nil);
+return smalltalk.withContext(function($ctx2) {
+_st(self["@testCase"])._context_(nil);
 $1=_st(failed)._and_((function(){
 $1=_st(failed)._and_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx3) {
+return _st(self["@testCase"])._isAsync();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(self["@testCase"])._finished();
 _st(self["@testCase"])._finished();
@@ -439,8 +483,10 @@ smalltalk.method({
 selector: "start",
 selector: "start",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._execute_((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
 return _st(self["@testCase"])._performTest();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.TestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.TestContext)})},
@@ -453,7 +499,8 @@ smalltalk.method({
 selector: "testCase:",
 selector: "testCase:",
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@testCase"]=aTestCase;
+return smalltalk.withContext(function($ctx1) { 
+self["@testCase"]=aTestCase;
 return self}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestContext);
 smalltalk.TestContext);
@@ -465,7 +512,8 @@ smalltalk.method({
 selector: "testCase:",
 selector: "testCase:",
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._testCase_(aTestCase);
 _st($2)._testCase_(aTestCase);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -483,13 +531,17 @@ smalltalk.method({
 selector: "execute:",
 selector: "execute:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._withErrorReporting_((function(){
-return smalltalk.withContext(function($ctx3) {
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._withErrorReporting_((function(){
+return smalltalk.withContext(function($ctx3) {
+return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx2) {
+$1=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self["@result"])._increaseRuns();
 _st(self["@result"])._increaseRuns();
 return _st(self["@finished"])._value();
 return _st(self["@finished"])._value();
@@ -505,7 +557,8 @@ smalltalk.method({
 selector: "finished:",
 selector: "finished:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@finished"]=aBlock;
+return smalltalk.withContext(function($ctx1) { 
+self["@finished"]=aBlock;
 return self}, function($ctx1) {$ctx1.fill(self,"finished:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"finished:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ReportingTestContext);
 smalltalk.ReportingTestContext);
@@ -516,7 +569,8 @@ smalltalk.method({
 selector: "result:",
 selector: "result:",
 fn: function (aTestResult){
 fn: function (aTestResult){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
+return smalltalk.withContext(function($ctx1) { 
+self["@result"]=aTestResult;
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ReportingTestContext)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ReportingTestContext);
 smalltalk.ReportingTestContext);
@@ -527,12 +581,18 @@ smalltalk.method({
 selector: "withErrorReporting:",
 selector: "withErrorReporting:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) {
return _st(self["@result"])._addFailure_(self["@testCase"]);
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+_st((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(aBlock)._on_do_($TestFailure(),(function(ex){
+return smalltalk.withContext(function($ctx3) {
+return _st(self["@result"])._addFailure_(self["@testCase"]);
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@result"])._addError_(self["@testCase"]);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@result"])._addError_(self["@testCase"]);
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 messageSends: ["on:do:", "addError:", "addFailure:"]}),
 messageSends: ["on:do:", "addError:", "addFailure:"]}),
@@ -545,7 +605,8 @@ smalltalk.method({
 selector: "testCase:result:finished:",
 selector: "testCase:result:finished:",
 fn: function (aTestCase,aTestResult,aBlock){
 fn: function (aTestCase,aTestResult,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=smalltalk.TestContext.klass.fn.prototype._testCase_.apply(_st(self), [aTestCase]);
 $2=smalltalk.TestContext.klass.fn.prototype._testCase_.apply(_st(self), [aTestCase]);
 _st($2)._result_(aTestResult);
 _st($2)._result_(aTestResult);
 _st($2)._finished_(aBlock);
 _st($2)._finished_(aBlock);
@@ -567,7 +628,8 @@ smalltalk.method({
 selector: "addError:",
 selector: "addError:",
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._errors())._add_(anError);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._errors())._add_(anError);
 return self}, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},smalltalk.TestResult)})},
 messageSends: ["add:", "errors"]}),
 messageSends: ["add:", "errors"]}),
 smalltalk.TestResult);
 smalltalk.TestResult);
@@ -578,7 +640,8 @@ smalltalk.method({
 selector: "addFailure:",
 selector: "addFailure:",
 fn: function (aFailure){
 fn: function (aFailure){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._failures())._add_(aFailure);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._failures())._add_(aFailure);
 return self}, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},smalltalk.TestResult)})},
 messageSends: ["add:", "failures"]}),
 messageSends: ["add:", "failures"]}),
 smalltalk.TestResult);
 smalltalk.TestResult);
@@ -589,7 +652,8 @@ smalltalk.method({
 selector: "errors",
 selector: "errors",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@errors"];
 $1=self["@errors"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"errors",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"errors",{},smalltalk.TestResult)})},
@@ -602,7 +666,8 @@ smalltalk.method({
 selector: "failures",
 selector: "failures",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@failures"];
 $1=self["@failures"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"failures",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"failures",{},smalltalk.TestResult)})},
@@ -615,7 +680,8 @@ smalltalk.method({
 selector: "increaseRuns",
 selector: "increaseRuns",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@runs"]=_st(self["@runs"]).__plus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@runs"]=_st(self["@runs"]).__plus((1));
 return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},smalltalk.TestResult)})},
 messageSends: ["+"]}),
 messageSends: ["+"]}),
 smalltalk.TestResult);
 smalltalk.TestResult);
@@ -626,11 +692,14 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@timestamp"]=_st((smalltalk.Date || Date))._now();
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+self["@timestamp"]=_st($Date())._now();
 self["@runs"]=(0);
 self["@runs"]=(0);
-self["@errors"]=_st((smalltalk.Array || Array))._new();
-self["@failures"]=_st((smalltalk.Array || Array))._new();
+self["@errors"]=_st($Array())._new();
+self["@failures"]=_st($Array())._new();
 self["@total"]=(0);
 self["@total"]=(0);
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestResult)})},
 messageSends: ["initialize", "now", "new"]}),
 messageSends: ["initialize", "now", "new"]}),
@@ -642,7 +711,8 @@ smalltalk.method({
 selector: "nextRunDo:",
 selector: "nextRunDo:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(_st(self)._runs()).__eq_eq(_st(self)._total());
 $2=_st(_st(self)._runs()).__eq_eq(_st(self)._total());
 if(! smalltalk.assert($2)){
 if(! smalltalk.assert($2)){
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
@@ -658,15 +728,22 @@ smalltalk.method({
 selector: "runCase:",
 selector: "runCase:",
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st((function(){
-return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+_st((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st((function(){
+return smalltalk.withContext(function($ctx3) {
+_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
 return _st(aTestCase)._runCase();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._addFailure_(aTestCase);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._on_do_($TestFailure(),(function(ex){
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._addFailure_(aTestCase);
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._addError_(aTestCase);
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},smalltalk.TestResult)})},
 messageSends: ["on:do:", "addError:", "addFailure:", "increaseRuns", "runCase"]}),
 messageSends: ["on:do:", "addError:", "addFailure:", "increaseRuns", "runCase"]}),
@@ -678,7 +755,8 @@ smalltalk.method({
 selector: "runs",
 selector: "runs",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@runs"];
 $1=self["@runs"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"runs",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"runs",{},smalltalk.TestResult)})},
@@ -691,7 +769,8 @@ smalltalk.method({
 selector: "status",
 selector: "status",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(_st(self)._errors())._isEmpty();
 $2=_st(_st(self)._errors())._isEmpty();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $3=_st(_st(self)._failures())._isEmpty();
 $3=_st(_st(self)._failures())._isEmpty();
@@ -714,7 +793,8 @@ smalltalk.method({
 selector: "timestamp",
 selector: "timestamp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@timestamp"];
 $1=self["@timestamp"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"timestamp",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"timestamp",{},smalltalk.TestResult)})},
@@ -727,7 +807,8 @@ smalltalk.method({
 selector: "total",
 selector: "total",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@total"];
 $1=self["@total"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"total",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"total",{},smalltalk.TestResult)})},
@@ -740,7 +821,8 @@ smalltalk.method({
 selector: "total:",
 selector: "total:",
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@total"]=aNumber;
+return smalltalk.withContext(function($ctx1) { 
+self["@total"]=aNumber;
 return self}, function($ctx1) {$ctx1.fill(self,"total:",{aNumber:aNumber},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"total:",{aNumber:aNumber},smalltalk.TestResult)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestResult);
 smalltalk.TestResult);
@@ -754,7 +836,8 @@ smalltalk.method({
 selector: "announcer",
 selector: "announcer",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@announcer"];
 $1=self["@announcer"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.TestSuiteRunner)})},
@@ -767,9 +850,12 @@ smalltalk.method({
 selector: "contextOf:",
 selector: "contextOf:",
 fn: function (anInteger){
 fn: function (anInteger){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.ReportingTestContext || ReportingTestContext))._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._resume();
+function $ReportingTestContext(){return smalltalk.ReportingTestContext||(typeof ReportingTestContext=="undefined"?nil:ReportingTestContext)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($ReportingTestContext())._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._resume();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},smalltalk.TestSuiteRunner)})},
@@ -782,13 +868,17 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
+function $TestResult(){return smalltalk.TestResult||(typeof TestResult=="undefined"?nil:TestResult)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@announcer"]=_st((smalltalk.Announcer || Announcer))._new();
-self["@result"]=_st((smalltalk.TestResult || TestResult))._new();
+self["@announcer"]=_st($Announcer())._new();
+self["@result"]=_st($TestResult())._new();
 self["@runNextTest"]=(function(){
 self["@runNextTest"]=(function(){
 var runs;
 var runs;
-return smalltalk.withContext(function($ctx2) {
runs=_st(self["@result"])._runs();
+return smalltalk.withContext(function($ctx2) {
+runs=_st(self["@result"])._runs();
 runs;
 runs;
 $1=_st(runs).__lt(_st(self["@result"])._total());
 $1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
@@ -805,7 +895,8 @@ smalltalk.method({
 selector: "result",
 selector: "result",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@result"];
 $1=self["@result"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestSuiteRunner)})},
@@ -818,8 +909,10 @@ smalltalk.method({
 selector: "resume",
 selector: "resume",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@runNextTest"])._fork();
-_st(self["@announcer"])._announce_(_st(_st((smalltalk.ResultAnnouncement || ResultAnnouncement))._new())._result_(self["@result"]));
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@runNextTest"])._fork();
+_st(self["@announcer"])._announce_(_st(_st($ResultAnnouncement())._new())._result_(self["@result"]));
 return self}, function($ctx1) {$ctx1.fill(self,"resume",{},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"resume",{},smalltalk.TestSuiteRunner)})},
 messageSends: ["fork", "announce:", "result:", "new"]}),
 messageSends: ["fork", "announce:", "result:", "new"]}),
 smalltalk.TestSuiteRunner);
 smalltalk.TestSuiteRunner);
@@ -830,7 +923,8 @@ smalltalk.method({
 selector: "run",
 selector: "run",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@result"])._total_(_st(self["@suite"])._size());
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@result"])._total_(_st(self["@suite"])._size());
 _st(self)._resume();
 _st(self)._resume();
 return self}, function($ctx1) {$ctx1.fill(self,"run",{},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"run",{},smalltalk.TestSuiteRunner)})},
 messageSends: ["total:", "size", "resume"]}),
 messageSends: ["total:", "size", "resume"]}),
@@ -842,7 +936,8 @@ smalltalk.method({
 selector: "suite:",
 selector: "suite:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@suite"]=aCollection;
+return smalltalk.withContext(function($ctx1) { 
+self["@suite"]=aCollection;
 return self}, function($ctx1) {$ctx1.fill(self,"suite:",{aCollection:aCollection},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"suite:",{aCollection:aCollection},smalltalk.TestSuiteRunner)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.TestSuiteRunner);
 smalltalk.TestSuiteRunner);
@@ -854,7 +949,8 @@ smalltalk.method({
 selector: "new",
 selector: "new",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TestSuiteRunner.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TestSuiteRunner.klass)})},
 messageSends: ["shouldNotImplement"]}),
 messageSends: ["shouldNotImplement"]}),
 smalltalk.TestSuiteRunner.klass);
 smalltalk.TestSuiteRunner.klass);
@@ -865,7 +961,8 @@ smalltalk.method({
 selector: "on:",
 selector: "on:",
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.TestSuiteRunner.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.TestSuiteRunner.klass)})},

+ 193 - 96
js/SUnit.js

@@ -7,7 +7,8 @@ selector: "result",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@result"];
 $1=self["@result"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ResultAnnouncement)})},
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ResultAnnouncement)})},
@@ -25,7 +26,8 @@ selector: "result:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aTestResult){
 fn: function (aTestResult){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
+return smalltalk.withContext(function($ctx1) { 
+self["@result"]=aTestResult;
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ResultAnnouncement)})},
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ResultAnnouncement)})},
 args: ["aTestResult"],
 args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 source: "result: aTestResult\x0a\x09result := aTestResult",
@@ -45,7 +47,8 @@ selector: "assert:",
 category: 'testing',
 category: 'testing',
 fn: function (aBoolean){
 fn: function (aBoolean){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_description_(aBoolean,"Assertion failed");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_description_(aBoolean,"Assertion failed");
 return self}, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 args: ["aBoolean"],
 args: ["aBoolean"],
 source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
 source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
@@ -61,7 +64,8 @@ selector: "assert:description:",
 category: 'testing',
 category: 'testing',
 fn: function (aBoolean,aString){
 fn: function (aBoolean,aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=aBoolean;
 $1=aBoolean;
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self)._signalFailure_(aString);
 _st(self)._signalFailure_(aString);
@@ -81,7 +85,8 @@ selector: "assert:equals:",
 category: 'testing',
 category: 'testing',
 fn: function (actual,expected){
 fn: function (actual,expected){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._assert_description_(_st(actual).__eq(expected),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 $1=_st(self)._assert_description_(_st(actual).__eq(expected),_st(_st(_st("Expected: ").__comma(_st(expected)._asString())).__comma(" but was: ")).__comma(_st(actual)._asString()));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},smalltalk.TestCase)})},
@@ -100,11 +105,13 @@ category: 'async',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
 var c;
 var c;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 _st(self)._errorIfNotAsync_("#async");
 _st(self)._errorIfNotAsync_("#async");
 c=self["@context"];
 c=self["@context"];
 $1=(function(){
 $1=(function(){
-return smalltalk.withContext(function($ctx2) {
$2=_st(self)._isAsync();
+return smalltalk.withContext(function($ctx2) {
+$2=_st(self)._isAsync();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 return _st(c)._execute_(aBlock);
 return _st(c)._execute_(aBlock);
 };
 };
@@ -125,7 +132,8 @@ selector: "context:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aRunningTestContext){
 fn: function (aRunningTestContext){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@context"]=aRunningTestContext;
+return smalltalk.withContext(function($ctx1) { 
+self["@context"]=aRunningTestContext;
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aRunningTestContext:aRunningTestContext},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"context:",{aRunningTestContext:aRunningTestContext},smalltalk.TestCase)})},
 args: ["aRunningTestContext"],
 args: ["aRunningTestContext"],
 source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
 source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
@@ -141,7 +149,8 @@ selector: "deny:",
 category: 'testing',
 category: 'testing',
 fn: function (aBoolean){
 fn: function (aBoolean){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBoolean)._not());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(aBoolean)._not());
 return self}, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},smalltalk.TestCase)})},
 args: ["aBoolean"],
 args: ["aBoolean"],
 source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
 source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
@@ -157,7 +166,8 @@ selector: "errorIfNotAsync:",
 category: 'error handling',
 category: 'error handling',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self)._isAsync();
 $1=_st(self)._isAsync();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
 _st(self)._error_(_st(aString).__comma(" used without prior #timeout:"));
@@ -177,7 +187,8 @@ selector: "finished",
 category: 'async',
 category: 'async',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._errorIfNotAsync_("#finished");
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._errorIfNotAsync_("#finished");
 self["@asyncTimeout"]=nil;
 self["@asyncTimeout"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"finished",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"finished",{},smalltalk.TestCase)})},
 args: [],
 args: [],
@@ -194,7 +205,8 @@ selector: "isAsync",
 category: 'testing',
 category: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self["@asyncTimeout"])._notNil();
 $1=_st(self["@asyncTimeout"])._notNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isAsync",{},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"isAsync",{},smalltalk.TestCase)})},
@@ -212,7 +224,8 @@ selector: "performTest",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@asyncTimeout"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@asyncTimeout"]=nil;
 _st(self)._perform_(_st(self)._selector());
 _st(self)._perform_(_st(self)._selector());
 return self}, function($ctx1) {$ctx1.fill(self,"performTest",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"performTest",{},smalltalk.TestCase)})},
 args: [],
 args: [],
@@ -229,7 +242,9 @@ selector: "runCase",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st((smalltalk.TestContext || TestContext))._testCase_(self))._start();
+function $TestContext(){return smalltalk.TestContext||(typeof TestContext=="undefined"?nil:TestContext)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($TestContext())._testCase_(self))._start();
 return self}, function($ctx1) {$ctx1.fill(self,"runCase",{},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"runCase",{},smalltalk.TestCase)})},
 args: [],
 args: [],
 source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
 source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
@@ -245,7 +260,8 @@ selector: "selector",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@testSelector"];
 $1=self["@testSelector"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.TestCase)})},
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.TestCase)})},
@@ -263,7 +279,8 @@ selector: "setTestSelector:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aSelector){
 fn: function (aSelector){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@testSelector"]=aSelector;
+return smalltalk.withContext(function($ctx1) { 
+self["@testSelector"]=aSelector;
 return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:",{aSelector:aSelector},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:",{aSelector:aSelector},smalltalk.TestCase)})},
 args: ["aSelector"],
 args: ["aSelector"],
 source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
 source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
@@ -279,7 +296,8 @@ selector: "setUp",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.TestCase)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.TestCase)})},
 args: [],
 args: [],
 source: "setUp",
 source: "setUp",
 messageSends: [],
 messageSends: [],
@@ -294,7 +312,8 @@ selector: "should:",
 category: 'testing',
 category: 'testing',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(aBlock)._value());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(aBlock)._value());
 return self}, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},smalltalk.TestCase)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "should: aBlock\x0a\x09self assert: aBlock value",
 source: "should: aBlock\x0a\x09self assert: aBlock value",
@@ -310,11 +329,14 @@ selector: "should:raise:",
 category: 'testing',
 category: 'testing',
 fn: function (aBlock,anExceptionClass){
 fn: function (aBlock,anExceptionClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(aBlock)._value();
 return false;
 return false;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
return true;
+return smalltalk.withContext(function($ctx2) {
+return true;
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 return self}, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 args: ["aBlock", "anExceptionClass"],
 args: ["aBlock", "anExceptionClass"],
@@ -331,11 +353,14 @@ selector: "shouldnt:raise:",
 category: 'testing',
 category: 'testing',
 fn: function (aBlock,anExceptionClass){
 fn: function (aBlock,anExceptionClass){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
_st(aBlock)._value();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(aBlock)._value();
 return true;
 return true;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
return false;
+return smalltalk.withContext(function($ctx2) {
+return false;
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
 return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
 args: ["aBlock", "anExceptionClass"],
 args: ["aBlock", "anExceptionClass"],
@@ -352,8 +377,10 @@ selector: "signalFailure:",
 category: 'private',
 category: 'private',
 fn: function (aString){
 fn: function (aString){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=_st((smalltalk.TestFailure || TestFailure))._new();
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=_st($TestFailure())._new();
 _st($1)._messageText_(aString);
 _st($1)._messageText_(aString);
 $2=_st($1)._signal();
 $2=_st($1)._signal();
 return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},smalltalk.TestCase)})},
@@ -371,7 +398,8 @@ selector: "tearDown",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.TestCase)})},
+return smalltalk.withContext(function($ctx1) { 
+return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.TestCase)})},
 args: [],
 args: [],
 source: "tearDown",
 source: "tearDown",
 messageSends: [],
 messageSends: [],
@@ -386,7 +414,8 @@ selector: "timeout:",
 category: 'async',
 category: 'async',
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@asyncTimeout"];
 $1=self["@asyncTimeout"];
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $1;
 $1;
@@ -395,7 +424,8 @@ _st(self["@asyncTimeout"])._clearTimeout();
 };
 };
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=(0);
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
 self["@asyncTimeout"]=_st(_st(self)._async_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._assert_description_(false,"SUnit grace time exhausted");
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._assert_description_(false,"SUnit grace time exhausted");
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_(aNumber);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_(aNumber);
 return self}, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},smalltalk.TestCase)})},
 return self}, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},smalltalk.TestCase)})},
 args: ["aNumber"],
 args: ["aNumber"],
@@ -414,7 +444,8 @@ category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var selectors;
 var selectors;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 selectors=_st(self)._testSelectors();
 selectors=_st(self)._testSelectors();
 $1=_st(self)._shouldInheritSelectors();
 $1=_st(self)._shouldInheritSelectors();
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
@@ -437,9 +468,11 @@ selector: "buildSuite",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
 $1=_st(_st(self)._allTestSelectors())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._selector_(each);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._selector_(each);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"buildSuite",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"buildSuite",{},smalltalk.TestCase.klass)})},
@@ -457,7 +490,8 @@ selector: "isAbstract",
 category: 'testing',
 category: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._name()).__eq("TestCase");
 $1=_st(_st(self)._name()).__eq("TestCase");
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.TestCase.klass)})},
@@ -475,8 +509,10 @@ selector: "lookupHierarchyRoot",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=(smalltalk.TestCase || TestCase);
+function $TestCase(){return smalltalk.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$TestCase();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot",{},smalltalk.TestCase.klass)})},
 args: [],
 args: [],
@@ -493,7 +529,8 @@ selector: "selector:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aSelector){
 fn: function (aSelector){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._setTestSelector_(aSelector);
 _st($2)._setTestSelector_(aSelector);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -514,7 +551,8 @@ selector: "shouldInheritSelectors",
 category: 'testing',
 category: 'testing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 $1=_st(self).__tild_eq(_st(self)._lookupHierarchyRoot());
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.TestCase.klass)})},
@@ -532,9 +570,11 @@ selector: "testSelectors",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
 $1=_st(_st(_st(self)._methodDictionary())._keys())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
return _st(each)._match_("^test");
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._match_("^test");
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"testSelectors",{},smalltalk.TestCase.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"testSelectors",{},smalltalk.TestCase.klass)})},
@@ -556,18 +596,22 @@ category: 'running',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
 var failed;
 var failed;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 _st(self["@testCase"])._context_(self);
 _st(self["@testCase"])._context_(self);
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
failed=true;
+return smalltalk.withContext(function($ctx2) {
+failed=true;
 failed;
 failed;
 _st(aBlock)._value();
 _st(aBlock)._value();
 failed=false;
 failed=false;
 return failed;
 return failed;
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._context_(nil);
+return smalltalk.withContext(function($ctx2) {
+_st(self["@testCase"])._context_(nil);
 $1=_st(failed)._and_((function(){
 $1=_st(failed)._and_((function(){
-return smalltalk.withContext(function($ctx3) {
return _st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx3) {
+return _st(self["@testCase"])._isAsync();
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
 _st(self["@testCase"])._finished();
 _st(self["@testCase"])._finished();
@@ -592,8 +636,10 @@ selector: "start",
 category: 'running',
 category: 'running',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._execute_((function(){
-return smalltalk.withContext(function($ctx2) {
_st(self["@testCase"])._setUp();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._execute_((function(){
+return smalltalk.withContext(function($ctx2) {
+_st(self["@testCase"])._setUp();
 return _st(self["@testCase"])._performTest();
 return _st(self["@testCase"])._performTest();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.TestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.TestContext)})},
@@ -611,7 +657,8 @@ selector: "testCase:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@testCase"]=aTestCase;
+return smalltalk.withContext(function($ctx1) { 
+self["@testCase"]=aTestCase;
 return self}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext)})},
 args: ["aTestCase"],
 args: ["aTestCase"],
 source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
 source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
@@ -628,7 +675,8 @@ selector: "testCase:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._new();
 $2=_st(self)._new();
 _st($2)._testCase_(aTestCase);
 _st($2)._testCase_(aTestCase);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -652,13 +700,17 @@ selector: "execute:",
 category: 'running',
 category: 'running',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 _st((function(){
 _st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._withErrorReporting_((function(){
-return smalltalk.withContext(function($ctx3) {
return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._withErrorReporting_((function(){
+return smalltalk.withContext(function($ctx3) {
+return smalltalk.TestContext.fn.prototype._execute_.apply(_st(self), [aBlock]);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
$1=_st(self["@testCase"])._isAsync();
+return smalltalk.withContext(function($ctx2) {
+$1=_st(self["@testCase"])._isAsync();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
 _st(self["@result"])._increaseRuns();
 _st(self["@result"])._increaseRuns();
 return _st(self["@finished"])._value();
 return _st(self["@finished"])._value();
@@ -679,7 +731,8 @@ selector: "finished:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@finished"]=aBlock;
+return smalltalk.withContext(function($ctx1) { 
+self["@finished"]=aBlock;
 return self}, function($ctx1) {$ctx1.fill(self,"finished:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"finished:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "finished: aBlock\x0a\x09finished := aBlock",
 source: "finished: aBlock\x0a\x09finished := aBlock",
@@ -695,7 +748,8 @@ selector: "result:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aTestResult){
 fn: function (aTestResult){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@result"]=aTestResult;
+return smalltalk.withContext(function($ctx1) { 
+self["@result"]=aTestResult;
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ReportingTestContext)})},
 args: ["aTestResult"],
 args: ["aTestResult"],
 source: "result: aTestResult\x0a\x09result := aTestResult",
 source: "result: aTestResult\x0a\x09result := aTestResult",
@@ -711,12 +765,18 @@ selector: "withErrorReporting:",
 category: 'private',
 category: 'private',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(aBlock)._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) {
return _st(self["@result"])._addFailure_(self["@testCase"]);
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+_st((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(aBlock)._on_do_($TestFailure(),(function(ex){
+return smalltalk.withContext(function($ctx3) {
+return _st(self["@result"])._addFailure_(self["@testCase"]);
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@result"])._addError_(self["@testCase"]);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@result"])._addError_(self["@testCase"]);
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
 args: ["aBlock"],
 args: ["aBlock"],
@@ -734,7 +794,8 @@ selector: "testCase:result:finished:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aTestCase,aTestResult,aBlock){
 fn: function (aTestCase,aTestResult,aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=smalltalk.TestContext.klass.fn.prototype._testCase_.apply(_st(self), [aTestCase]);
 $2=smalltalk.TestContext.klass.fn.prototype._testCase_.apply(_st(self), [aTestCase]);
 _st($2)._result_(aTestResult);
 _st($2)._result_(aTestResult);
 _st($2)._finished_(aBlock);
 _st($2)._finished_(aBlock);
@@ -763,7 +824,8 @@ selector: "addError:",
 category: 'accessing',
 category: 'accessing',
 fn: function (anError){
 fn: function (anError){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._errors())._add_(anError);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._errors())._add_(anError);
 return self}, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},smalltalk.TestResult)})},
 args: ["anError"],
 args: ["anError"],
 source: "addError: anError\x0a\x09self errors add: anError",
 source: "addError: anError\x0a\x09self errors add: anError",
@@ -779,7 +841,8 @@ selector: "addFailure:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aFailure){
 fn: function (aFailure){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(self)._failures())._add_(aFailure);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(self)._failures())._add_(aFailure);
 return self}, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},smalltalk.TestResult)})},
 args: ["aFailure"],
 args: ["aFailure"],
 source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
 source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
@@ -795,7 +858,8 @@ selector: "errors",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@errors"];
 $1=self["@errors"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"errors",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"errors",{},smalltalk.TestResult)})},
@@ -813,7 +877,8 @@ selector: "failures",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@failures"];
 $1=self["@failures"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"failures",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"failures",{},smalltalk.TestResult)})},
@@ -831,7 +896,8 @@ selector: "increaseRuns",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@runs"]=_st(self["@runs"]).__plus((1));
+return smalltalk.withContext(function($ctx1) { 
+self["@runs"]=_st(self["@runs"]).__plus((1));
 return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},smalltalk.TestResult)})},
 args: [],
 args: [],
 source: "increaseRuns\x0a\x09runs := runs + 1",
 source: "increaseRuns\x0a\x09runs := runs + 1",
@@ -847,11 +913,14 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@timestamp"]=_st((smalltalk.Date || Date))._now();
+function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+self["@timestamp"]=_st($Date())._now();
 self["@runs"]=(0);
 self["@runs"]=(0);
-self["@errors"]=_st((smalltalk.Array || Array))._new();
-self["@failures"]=_st((smalltalk.Array || Array))._new();
+self["@errors"]=_st($Array())._new();
+self["@failures"]=_st($Array())._new();
 self["@total"]=(0);
 self["@total"]=(0);
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestResult)})},
 args: [],
 args: [],
@@ -868,7 +937,8 @@ selector: "nextRunDo:",
 category: 'running',
 category: 'running',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
 $2=_st(_st(self)._runs()).__eq_eq(_st(self)._total());
 $2=_st(_st(self)._runs()).__eq_eq(_st(self)._total());
 if(! smalltalk.assert($2)){
 if(! smalltalk.assert($2)){
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
 $1=_st(aBlock)._value_(_st(_st(self)._runs()).__plus((1)));
@@ -889,15 +959,22 @@ selector: "runCase:",
 category: 'running',
 category: 'running',
 fn: function (aTestCase){
 fn: function (aTestCase){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st((function(){
-return smalltalk.withContext(function($ctx2) {
return _st((function(){
-return smalltalk.withContext(function($ctx3) {
_st(self)._increaseRuns();
+function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
+function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
+return smalltalk.withContext(function($ctx1) { 
+_st((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st((function(){
+return smalltalk.withContext(function($ctx3) {
+_st(self)._increaseRuns();
 return _st(aTestCase)._runCase();
 return _st(aTestCase)._runCase();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._on_do_((smalltalk.TestFailure || TestFailure),(function(ex){
-return smalltalk.withContext(function($ctx3) {
return _st(self)._addFailure_(aTestCase);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}))._on_do_($TestFailure(),(function(ex){
+return smalltalk.withContext(function($ctx3) {
+return _st(self)._addFailure_(aTestCase);
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(ex){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._addError_(aTestCase);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._addError_(aTestCase);
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},smalltalk.TestResult)})},
 args: ["aTestCase"],
 args: ["aTestCase"],
@@ -914,7 +991,8 @@ selector: "runs",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@runs"];
 $1=self["@runs"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"runs",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"runs",{},smalltalk.TestResult)})},
@@ -932,7 +1010,8 @@ selector: "status",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(_st(self)._errors())._isEmpty();
 $2=_st(_st(self)._errors())._isEmpty();
 if(smalltalk.assert($2)){
 if(smalltalk.assert($2)){
 $3=_st(_st(self)._failures())._isEmpty();
 $3=_st(_st(self)._failures())._isEmpty();
@@ -960,7 +1039,8 @@ selector: "timestamp",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@timestamp"];
 $1=self["@timestamp"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"timestamp",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"timestamp",{},smalltalk.TestResult)})},
@@ -978,7 +1058,8 @@ selector: "total",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@total"];
 $1=self["@total"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"total",{},smalltalk.TestResult)})},
 }, function($ctx1) {$ctx1.fill(self,"total",{},smalltalk.TestResult)})},
@@ -996,7 +1077,8 @@ selector: "total:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aNumber){
 fn: function (aNumber){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@total"]=aNumber;
+return smalltalk.withContext(function($ctx1) { 
+self["@total"]=aNumber;
 return self}, function($ctx1) {$ctx1.fill(self,"total:",{aNumber:aNumber},smalltalk.TestResult)})},
 return self}, function($ctx1) {$ctx1.fill(self,"total:",{aNumber:aNumber},smalltalk.TestResult)})},
 args: ["aNumber"],
 args: ["aNumber"],
 source: "total: aNumber\x0a\x09total := aNumber",
 source: "total: aNumber\x0a\x09total := aNumber",
@@ -1015,7 +1097,8 @@ selector: "announcer",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@announcer"];
 $1=self["@announcer"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.TestSuiteRunner)})},
@@ -1033,9 +1116,12 @@ selector: "contextOf:",
 category: 'private',
 category: 'private',
 fn: function (anInteger){
 fn: function (anInteger){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
-$1=_st((smalltalk.ReportingTestContext || ReportingTestContext))._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self)._resume();
+function $ReportingTestContext(){return smalltalk.ReportingTestContext||(typeof ReportingTestContext=="undefined"?nil:ReportingTestContext)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st($ReportingTestContext())._testCase_result_finished_(_st(self["@suite"])._at_(anInteger),self["@result"],(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self)._resume();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},smalltalk.TestSuiteRunner)})},
@@ -1053,13 +1139,17 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
+function $TestResult(){return smalltalk.TestResult||(typeof TestResult=="undefined"?nil:TestResult)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
-self["@announcer"]=_st((smalltalk.Announcer || Announcer))._new();
-self["@result"]=_st((smalltalk.TestResult || TestResult))._new();
+self["@announcer"]=_st($Announcer())._new();
+self["@result"]=_st($TestResult())._new();
 self["@runNextTest"]=(function(){
 self["@runNextTest"]=(function(){
 var runs;
 var runs;
-return smalltalk.withContext(function($ctx2) {
runs=_st(self["@result"])._runs();
+return smalltalk.withContext(function($ctx2) {
+runs=_st(self["@result"])._runs();
 runs;
 runs;
 $1=_st(runs).__lt(_st(self["@result"])._total());
 $1=_st(runs).__lt(_st(self["@result"])._total());
 if(smalltalk.assert($1)){
 if(smalltalk.assert($1)){
@@ -1081,7 +1171,8 @@ selector: "result",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@result"];
 $1=self["@result"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestSuiteRunner)})},
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestSuiteRunner)})},
@@ -1099,8 +1190,10 @@ selector: "resume",
 category: 'actions',
 category: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@runNextTest"])._fork();
-_st(self["@announcer"])._announce_(_st(_st((smalltalk.ResultAnnouncement || ResultAnnouncement))._new())._result_(self["@result"]));
+function $ResultAnnouncement(){return smalltalk.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@runNextTest"])._fork();
+_st(self["@announcer"])._announce_(_st(_st($ResultAnnouncement())._new())._result_(self["@result"]));
 return self}, function($ctx1) {$ctx1.fill(self,"resume",{},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"resume",{},smalltalk.TestSuiteRunner)})},
 args: [],
 args: [],
 source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
 source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
@@ -1116,7 +1209,8 @@ selector: "run",
 category: 'actions',
 category: 'actions',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@result"])._total_(_st(self["@suite"])._size());
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@result"])._total_(_st(self["@suite"])._size());
 _st(self)._resume();
 _st(self)._resume();
 return self}, function($ctx1) {$ctx1.fill(self,"run",{},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"run",{},smalltalk.TestSuiteRunner)})},
 args: [],
 args: [],
@@ -1133,7 +1227,8 @@ selector: "suite:",
 category: 'accessing',
 category: 'accessing',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@suite"]=aCollection;
+return smalltalk.withContext(function($ctx1) { 
+self["@suite"]=aCollection;
 return self}, function($ctx1) {$ctx1.fill(self,"suite:",{aCollection:aCollection},smalltalk.TestSuiteRunner)})},
 return self}, function($ctx1) {$ctx1.fill(self,"suite:",{aCollection:aCollection},smalltalk.TestSuiteRunner)})},
 args: ["aCollection"],
 args: ["aCollection"],
 source: "suite: aCollection\x0a\x09suite := aCollection",
 source: "suite: aCollection\x0a\x09suite := aCollection",
@@ -1150,7 +1245,8 @@ selector: "new",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._shouldNotImplement();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._shouldNotImplement();
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TestSuiteRunner.klass)})},
 return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TestSuiteRunner.klass)})},
 args: [],
 args: [],
 source: "new\x0a\x09self shouldNotImplement",
 source: "new\x0a\x09self shouldNotImplement",
@@ -1166,7 +1262,8 @@ selector: "on:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aCollection){
 fn: function (aCollection){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 $1=_st(smalltalk.Object.klass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.TestSuiteRunner.klass)})},
 }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.TestSuiteRunner.klass)})},

+ 49 - 24
js/Spaces.deploy.js

@@ -6,7 +6,8 @@ smalltalk.method({
 selector: "connectTo:",
 selector: "connectTo:",
 fn: function (aFrame){
 fn: function (aFrame){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._release();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._release();
 self["@frame"]=aFrame;
 self["@frame"]=aFrame;
 return self}, function($ctx1) {$ctx1.fill(self,"connectTo:",{aFrame:aFrame},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"connectTo:",{aFrame:aFrame},smalltalk.ObjectSpace)})},
 messageSends: ["release"]}),
 messageSends: ["release"]}),
@@ -18,7 +19,8 @@ smalltalk.method({
 selector: "create",
 selector: "create",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(window)._jQuery_("body"))._append_("<iframe style=\x22display: none;\x22></iframe>");
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(window)._jQuery_("body"))._append_("<iframe style=\x22display: none;\x22></iframe>");
 self["@frame"]=_st(_st(_st(window)._jQuery_("iframe"))._get())._last();
 self["@frame"]=_st(_st(_st(window)._jQuery_("iframe"))._get())._last();
 _st(_st(self["@frame"])._contentWindow())._location_(_st(window)._location());
 _st(_st(self["@frame"])._contentWindow())._location_(_st(window)._location());
 return self}, function($ctx1) {$ctx1.fill(self,"create",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"create",{},smalltalk.ObjectSpace)})},
@@ -31,7 +33,8 @@ smalltalk.method({
 selector: "destroy",
 selector: "destroy",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=self["@frame"];
 $1=self["@frame"];
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $2=self;
 $2=self;
@@ -51,10 +54,12 @@ smalltalk.method({
 selector: "do:",
 selector: "do:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+function $ObjectSpaceConnectionError(){return smalltalk.ObjectSpaceConnectionError||(typeof ObjectSpaceConnectionError=="undefined"?nil:ObjectSpaceConnectionError)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(self)._isConnected();
 $1=_st(self)._isConnected();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
-$2=_st((smalltalk.ObjectSpaceConnectionError || ObjectSpaceConnectionError))._signal();
+$2=_st($ObjectSpaceConnectionError())._signal();
 return $2;
 return $2;
 };
 };
 $3=_st(_st(self["@frame"])._contentWindow())._eval_(_st(_st("(").__comma(_st(aBlock)._compiledSource())).__comma(")()"));
 $3=_st(_st(self["@frame"])._contentWindow())._eval_(_st(_st("(").__comma(_st(aBlock)._compiledSource())).__comma(")()"));
@@ -69,7 +74,8 @@ smalltalk.method({
 selector: "frame",
 selector: "frame",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@frame"];
 $1=self["@frame"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"frame",{},smalltalk.ObjectSpace)})},
 }, function($ctx1) {$ctx1.fill(self,"frame",{},smalltalk.ObjectSpace)})},
@@ -82,7 +88,8 @@ smalltalk.method({
 selector: "initialize",
 selector: "initialize",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 _st(self)._create();
 _st(self)._create();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ObjectSpace)})},
 messageSends: ["initialize", "create"]}),
 messageSends: ["initialize", "create"]}),
@@ -94,7 +101,8 @@ smalltalk.method({
 selector: "isConnected",
 selector: "isConnected",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._frame())._notNil();
 $1=_st(_st(self)._frame())._notNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isConnected",{},smalltalk.ObjectSpace)})},
 }, function($ctx1) {$ctx1.fill(self,"isConnected",{},smalltalk.ObjectSpace)})},
@@ -107,7 +115,8 @@ smalltalk.method({
 selector: "release",
 selector: "release",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@frame"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@frame"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.ObjectSpace)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ObjectSpace);
 smalltalk.ObjectSpace);
@@ -118,7 +127,8 @@ smalltalk.method({
 selector: "whenReadyDo:",
 selector: "whenReadyDo:",
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(window)._jQuery_(self["@frame"]))._bind_do_("load",aBlock);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(window)._jQuery_(self["@frame"]))._bind_do_("load",aBlock);
 return self}, function($ctx1) {$ctx1.fill(self,"whenReadyDo:",{aBlock:aBlock},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whenReadyDo:",{aBlock:aBlock},smalltalk.ObjectSpace)})},
 messageSends: ["bind:do:", "jQuery:"]}),
 messageSends: ["bind:do:", "jQuery:"]}),
 smalltalk.ObjectSpace);
 smalltalk.ObjectSpace);
@@ -130,7 +140,8 @@ smalltalk.method({
 selector: "on:",
 selector: "on:",
 fn: function (aFrame){
 fn: function (aFrame){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._basicNew();
 $2=_st(self)._basicNew();
 _st($2)._connectTo_(aFrame);
 _st($2)._connectTo_(aFrame);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -148,7 +159,8 @@ smalltalk.method({
 selector: "messageText",
 selector: "messageText",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return "The ObjectSpace is not connected";
+return smalltalk.withContext(function($ctx1) { 
+return "The ObjectSpace is not connected";
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ObjectSpaceConnectionError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ObjectSpaceConnectionError)})},
 messageSends: []}),
 messageSends: []}),
 smalltalk.ObjectSpaceConnectionError);
 smalltalk.ObjectSpaceConnectionError);
@@ -162,7 +174,9 @@ smalltalk.method({
 selector: "setUp",
 selector: "setUp",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@space"]=_st((smalltalk.ObjectSpace || ObjectSpace))._new();
+function $ObjectSpace(){return smalltalk.ObjectSpace||(typeof ObjectSpace=="undefined"?nil:ObjectSpace)}
+return smalltalk.withContext(function($ctx1) { 
+self["@space"]=_st($ObjectSpace())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ObjectSpaceTest)})},
 messageSends: ["new"]}),
 messageSends: ["new"]}),
 smalltalk.ObjectSpaceTest);
 smalltalk.ObjectSpaceTest);
@@ -173,7 +187,8 @@ smalltalk.method({
 selector: "tearDown",
 selector: "tearDown",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._destroy();
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._destroy();
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.ObjectSpaceTest)})},
 messageSends: ["destroy"]}),
 messageSends: ["destroy"]}),
 smalltalk.ObjectSpaceTest);
 smalltalk.ObjectSpaceTest);
@@ -184,12 +199,16 @@ smalltalk.method({
 selector: "testConnection",
 selector: "testConnection",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._destroy();
+function $ObjectSpaceConnectionError(){return smalltalk.ObjectSpaceConnectionError||(typeof ObjectSpaceConnectionError=="undefined"?nil:ObjectSpaceConnectionError)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._destroy();
 _st(self)._deny_(_st(self["@space"])._isConnected());
 _st(self)._deny_(_st(self["@space"])._isConnected());
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@space"])._do_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ObjectSpaceConnectionError || ObjectSpaceConnectionError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@space"])._do_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ObjectSpaceConnectionError());
 return self}, function($ctx1) {$ctx1.fill(self,"testConnection",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testConnection",{},smalltalk.ObjectSpaceTest)})},
 messageSends: ["destroy", "deny:", "isConnected", "should:raise:", "do:"]}),
 messageSends: ["destroy", "deny:", "isConnected", "should:raise:", "do:"]}),
 smalltalk.ObjectSpaceTest);
 smalltalk.ObjectSpaceTest);
@@ -200,7 +219,8 @@ smalltalk.method({
 selector: "testCreate",
 selector: "testCreate",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(self["@space"])._frame())._notNil());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(_st(self["@space"])._frame())._notNil());
 _st(self)._assert_(_st(self["@space"])._isConnected());
 _st(self)._assert_(_st(self["@space"])._isConnected());
 return self}, function($ctx1) {$ctx1.fill(self,"testCreate",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCreate",{},smalltalk.ObjectSpaceTest)})},
 messageSends: ["assert:", "notNil", "frame", "isConnected"]}),
 messageSends: ["assert:", "notNil", "frame", "isConnected"]}),
@@ -213,13 +233,17 @@ selector: "testEvaluation",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var result;
 var result;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._whenReadyDo_((function(){
-return smalltalk.withContext(function($ctx2) {
result=_st(self["@space"])._do_((function(){
-return smalltalk.withContext(function($ctx3) {
return smalltalk;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._whenReadyDo_((function(){
+return smalltalk.withContext(function($ctx2) {
+result=_st(self["@space"])._do_((function(){
+return smalltalk.withContext(function($ctx3) {
+return smalltalk;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 result;
 result;
 _st(self)._assert_equals_(_st(_st(result)._class())._name(),"Smalltalk");
 _st(self)._assert_equals_(_st(_st(result)._class())._name(),"Smalltalk");
-_st(self)._deny_(_st(_st(result)._class()).__eq((smalltalk.Smalltalk || Smalltalk)));
+_st(self)._deny_(_st(_st(result)._class()).__eq($Smalltalk()));
 return _st(self)._deny_(_st(result).__eq_eq(smalltalk));
 return _st(self)._deny_(_st(result).__eq_eq(smalltalk));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testEvaluation",{result:result},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testEvaluation",{result:result},smalltalk.ObjectSpaceTest)})},
@@ -232,7 +256,8 @@ smalltalk.method({
 selector: "testRelease",
 selector: "testRelease",
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._deny_(_st(_st(self["@space"])._frame())._isNil());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._deny_(_st(_st(self["@space"])._frame())._isNil());
 _st(self["@space"])._release();
 _st(self["@space"])._release();
 _st(self)._assert_(_st(_st(self["@space"])._frame())._isNil());
 _st(self)._assert_(_st(_st(self["@space"])._frame())._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testRelease",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testRelease",{},smalltalk.ObjectSpaceTest)})},

+ 49 - 24
js/Spaces.js

@@ -8,7 +8,8 @@ selector: "connectTo:",
 category: 'initialization',
 category: 'initialization',
 fn: function (aFrame){
 fn: function (aFrame){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._release();
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._release();
 self["@frame"]=aFrame;
 self["@frame"]=aFrame;
 return self}, function($ctx1) {$ctx1.fill(self,"connectTo:",{aFrame:aFrame},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"connectTo:",{aFrame:aFrame},smalltalk.ObjectSpace)})},
 args: ["aFrame"],
 args: ["aFrame"],
@@ -25,7 +26,8 @@ selector: "create",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(window)._jQuery_("body"))._append_("<iframe style=\x22display: none;\x22></iframe>");
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(window)._jQuery_("body"))._append_("<iframe style=\x22display: none;\x22></iframe>");
 self["@frame"]=_st(_st(_st(window)._jQuery_("iframe"))._get())._last();
 self["@frame"]=_st(_st(_st(window)._jQuery_("iframe"))._get())._last();
 _st(_st(self["@frame"])._contentWindow())._location_(_st(window)._location());
 _st(_st(self["@frame"])._contentWindow())._location_(_st(window)._location());
 return self}, function($ctx1) {$ctx1.fill(self,"create",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"create",{},smalltalk.ObjectSpace)})},
@@ -43,7 +45,8 @@ selector: "destroy",
 category: 'releasing',
 category: 'releasing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 $1=self["@frame"];
 $1=self["@frame"];
 if(($receiver = $1) == nil || $receiver == undefined){
 if(($receiver = $1) == nil || $receiver == undefined){
 $2=self;
 $2=self;
@@ -68,10 +71,12 @@ selector: "do:",
 category: 'evaluating',
 category: 'evaluating',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+function $ObjectSpaceConnectionError(){return smalltalk.ObjectSpaceConnectionError||(typeof ObjectSpaceConnectionError=="undefined"?nil:ObjectSpaceConnectionError)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
 $1=_st(self)._isConnected();
 $1=_st(self)._isConnected();
 if(! smalltalk.assert($1)){
 if(! smalltalk.assert($1)){
-$2=_st((smalltalk.ObjectSpaceConnectionError || ObjectSpaceConnectionError))._signal();
+$2=_st($ObjectSpaceConnectionError())._signal();
 return $2;
 return $2;
 };
 };
 $3=_st(_st(self["@frame"])._contentWindow())._eval_(_st(_st("(").__comma(_st(aBlock)._compiledSource())).__comma(")()"));
 $3=_st(_st(self["@frame"])._contentWindow())._eval_(_st(_st("(").__comma(_st(aBlock)._compiledSource())).__comma(")()"));
@@ -91,7 +96,8 @@ selector: "frame",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=self["@frame"];
 $1=self["@frame"];
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"frame",{},smalltalk.ObjectSpace)})},
 }, function($ctx1) {$ctx1.fill(self,"frame",{},smalltalk.ObjectSpace)})},
@@ -109,7 +115,8 @@ selector: "initialize",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+return smalltalk.withContext(function($ctx1) { 
+smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
 _st(self)._create();
 _st(self)._create();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ObjectSpace)})},
 args: [],
 args: [],
@@ -126,7 +133,8 @@ selector: "isConnected",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
 $1=_st(_st(self)._frame())._notNil();
 $1=_st(_st(self)._frame())._notNil();
 return $1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isConnected",{},smalltalk.ObjectSpace)})},
 }, function($ctx1) {$ctx1.fill(self,"isConnected",{},smalltalk.ObjectSpace)})},
@@ -144,7 +152,8 @@ selector: "release",
 category: 'releasing',
 category: 'releasing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@frame"]=nil;
+return smalltalk.withContext(function($ctx1) { 
+self["@frame"]=nil;
 return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.ObjectSpace)})},
 args: [],
 args: [],
 source: "release\x0a\x09frame := nil",
 source: "release\x0a\x09frame := nil",
@@ -160,7 +169,8 @@ selector: "whenReadyDo:",
 category: 'events',
 category: 'events',
 fn: function (aBlock){
 fn: function (aBlock){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(_st(window)._jQuery_(self["@frame"]))._bind_do_("load",aBlock);
+return smalltalk.withContext(function($ctx1) { 
+_st(_st(window)._jQuery_(self["@frame"]))._bind_do_("load",aBlock);
 return self}, function($ctx1) {$ctx1.fill(self,"whenReadyDo:",{aBlock:aBlock},smalltalk.ObjectSpace)})},
 return self}, function($ctx1) {$ctx1.fill(self,"whenReadyDo:",{aBlock:aBlock},smalltalk.ObjectSpace)})},
 args: ["aBlock"],
 args: ["aBlock"],
 source: "whenReadyDo: aBlock\x0a\x09(window jQuery: frame)\x0a\x09\x09bind: 'load'\x0a\x09\x09do: aBlock",
 source: "whenReadyDo: aBlock\x0a\x09(window jQuery: frame)\x0a\x09\x09bind: 'load'\x0a\x09\x09do: aBlock",
@@ -177,7 +187,8 @@ selector: "on:",
 category: 'instance creation',
 category: 'instance creation',
 fn: function (aFrame){
 fn: function (aFrame){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $2,$3,$1;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
 $2=_st(self)._basicNew();
 $2=_st(self)._basicNew();
 _st($2)._connectTo_(aFrame);
 _st($2)._connectTo_(aFrame);
 $3=_st($2)._yourself();
 $3=_st($2)._yourself();
@@ -200,7 +211,8 @@ selector: "messageText",
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return "The ObjectSpace is not connected";
+return smalltalk.withContext(function($ctx1) { 
+return "The ObjectSpace is not connected";
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ObjectSpaceConnectionError)})},
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ObjectSpaceConnectionError)})},
 args: [],
 args: [],
 source: "messageText\x0a\x09^ 'The ObjectSpace is not connected'",
 source: "messageText\x0a\x09^ 'The ObjectSpace is not connected'",
@@ -219,7 +231,9 @@ selector: "setUp",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
self["@space"]=_st((smalltalk.ObjectSpace || ObjectSpace))._new();
+function $ObjectSpace(){return smalltalk.ObjectSpace||(typeof ObjectSpace=="undefined"?nil:ObjectSpace)}
+return smalltalk.withContext(function($ctx1) { 
+self["@space"]=_st($ObjectSpace())._new();
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ObjectSpaceTest)})},
 args: [],
 args: [],
 source: "setUp\x0a\x09space := ObjectSpace new",
 source: "setUp\x0a\x09space := ObjectSpace new",
@@ -235,7 +249,8 @@ selector: "tearDown",
 category: 'initialization',
 category: 'initialization',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._destroy();
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._destroy();
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.ObjectSpaceTest)})},
 args: [],
 args: [],
 source: "tearDown\x0a\x09space destroy",
 source: "tearDown\x0a\x09space destroy",
@@ -251,12 +266,16 @@ selector: "testConnection",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._destroy();
+function $ObjectSpaceConnectionError(){return smalltalk.ObjectSpaceConnectionError||(typeof ObjectSpaceConnectionError=="undefined"?nil:ObjectSpaceConnectionError)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._destroy();
 _st(self)._deny_(_st(self["@space"])._isConnected());
 _st(self)._deny_(_st(self["@space"])._isConnected());
 _st(self)._should_raise_((function(){
 _st(self)._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
return _st(self["@space"])._do_((function(){
-return smalltalk.withContext(function($ctx3) {
}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(smalltalk.ObjectSpaceConnectionError || ObjectSpaceConnectionError));
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@space"])._do_((function(){
+return smalltalk.withContext(function($ctx3) {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$ObjectSpaceConnectionError());
 return self}, function($ctx1) {$ctx1.fill(self,"testConnection",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testConnection",{},smalltalk.ObjectSpaceTest)})},
 args: [],
 args: [],
 source: "testConnection\x0a\x09space destroy.\x0a\x09self deny: space isConnected.\x0a\x09self should: [ space do: [] ] raise: ObjectSpaceConnectionError",
 source: "testConnection\x0a\x09space destroy.\x0a\x09self deny: space isConnected.\x0a\x09self should: [ space do: [] ] raise: ObjectSpaceConnectionError",
@@ -272,7 +291,8 @@ selector: "testCreate",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._assert_(_st(_st(self["@space"])._frame())._notNil());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._assert_(_st(_st(self["@space"])._frame())._notNil());
 _st(self)._assert_(_st(self["@space"])._isConnected());
 _st(self)._assert_(_st(self["@space"])._isConnected());
 return self}, function($ctx1) {$ctx1.fill(self,"testCreate",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testCreate",{},smalltalk.ObjectSpaceTest)})},
 args: [],
 args: [],
@@ -290,13 +310,17 @@ category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
 var result;
 var result;
-return smalltalk.withContext(function($ctx1) { 
_st(self["@space"])._whenReadyDo_((function(){
-return smalltalk.withContext(function($ctx2) {
result=_st(self["@space"])._do_((function(){
-return smalltalk.withContext(function($ctx3) {
return smalltalk;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+return smalltalk.withContext(function($ctx1) { 
+_st(self["@space"])._whenReadyDo_((function(){
+return smalltalk.withContext(function($ctx2) {
+result=_st(self["@space"])._do_((function(){
+return smalltalk.withContext(function($ctx3) {
+return smalltalk;
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
 result;
 result;
 _st(self)._assert_equals_(_st(_st(result)._class())._name(),"Smalltalk");
 _st(self)._assert_equals_(_st(_st(result)._class())._name(),"Smalltalk");
-_st(self)._deny_(_st(_st(result)._class()).__eq((smalltalk.Smalltalk || Smalltalk)));
+_st(self)._deny_(_st(_st(result)._class()).__eq($Smalltalk()));
 return _st(self)._deny_(_st(result).__eq_eq(smalltalk));
 return _st(self)._deny_(_st(result).__eq_eq(smalltalk));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"testEvaluation",{result:result},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testEvaluation",{result:result},smalltalk.ObjectSpaceTest)})},
@@ -314,7 +338,8 @@ selector: "testRelease",
 category: 'tests',
 category: 'tests',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
_st(self)._deny_(_st(_st(self["@space"])._frame())._isNil());
+return smalltalk.withContext(function($ctx1) { 
+_st(self)._deny_(_st(_st(self["@space"])._frame())._isNil());
 _st(self["@space"])._release();
 _st(self["@space"])._release();
 _st(self)._assert_(_st(_st(self["@space"])._frame())._isNil());
 _st(self)._assert_(_st(_st(self["@space"])._frame())._isNil());
 return self}, function($ctx1) {$ctx1.fill(self,"testRelease",{},smalltalk.ObjectSpaceTest)})},
 return self}, function($ctx1) {$ctx1.fill(self,"testRelease",{},smalltalk.ObjectSpaceTest)})},

+ 8 - 19
js/boot.js

@@ -71,9 +71,7 @@ function SmalltalkMetaclass() {
 function SmalltalkPackage() {}
 function SmalltalkPackage() {}
 function SmalltalkMethod() {}
 function SmalltalkMethod() {}
 function SmalltalkNil() {}
 function SmalltalkNil() {}
-function SmalltalkSymbol(string) {
-	this.value = string;
-}
+
 function SmalltalkOrganizer() {
 function SmalltalkOrganizer() {
 }
 }
 
 
@@ -165,17 +163,6 @@ function Smalltalk() {
 		}
 		}
 	};
 	};
 
 
-	/* The symbol table ensures symbol unicity */
-
-	var symbolTable = {};
-	st.symbolFor = function(string) {
-		if(symbolTable[string] === undefined) {
-			symbolTable[string] = new SmalltalkSymbol(string);
-		}
-
-		return symbolTable[string];
-	};
-
 	/* Unique ID number generator */
 	/* Unique ID number generator */
 
 
 	var oid = 0;
 	var oid = 0;
@@ -716,6 +703,9 @@ function Smalltalk() {
         }
         }
     };
     };
 
 
+    /* Backward compatibility with Amber 0.9.1 */
+    st.symbolFor = function(aString) { return aString; }
+
     /* Smalltalk initialization. Called on page load */
     /* Smalltalk initialization. Called on page load */
 
 
     st.initialize = function() {
     st.initialize = function() {
@@ -829,12 +819,11 @@ smalltalk.wrapClassName("Boolean", "Kernel-Objects", Boolean, smalltalk.Object);
 smalltalk.wrapClassName("Date", "Kernel-Objects", Date, smalltalk.Object);
 smalltalk.wrapClassName("Date", "Kernel-Objects", Date, smalltalk.Object);
 smalltalk.wrapClassName("UndefinedObject", "Kernel-Objects", SmalltalkNil, smalltalk.Object, false);
 smalltalk.wrapClassName("UndefinedObject", "Kernel-Objects", SmalltalkNil, smalltalk.Object, false);
 
 
-smalltalk.addClass("Collection", smalltalk.Object, null, "Kernel");
-smalltalk.addClass("IndexableCollection", smalltalk.Collection, null, "Kernel");
-smalltalk.addClass("SequenceableCollection", smalltalk.IndexableCollection, null, "Kernel");
-smalltalk.addClass("CharacterArray", smalltalk.SequenceableCollection, null, "Kernel");
+smalltalk.addClass("Collection", smalltalk.Object, null, "Kernel-Collections");
+smalltalk.addClass("IndexableCollection", smalltalk.Collection, null, "Kernel-Collections");
+smalltalk.addClass("SequenceableCollection", smalltalk.IndexableCollection, null, "Kernel-Collections");
+smalltalk.addClass("CharacterArray", smalltalk.SequenceableCollection, null, "Kernel-Collections");
 smalltalk.wrapClassName("String", "Kernel-Collections", String, smalltalk.CharacterArray);
 smalltalk.wrapClassName("String", "Kernel-Collections", String, smalltalk.CharacterArray);
-smalltalk.wrapClassName("Symbol", "Kernel-Collections", SmalltalkSymbol, smalltalk.CharacterArray, false);
 smalltalk.wrapClassName("Array", "Kernel-Collections", Array, smalltalk.SequenceableCollection);
 smalltalk.wrapClassName("Array", "Kernel-Collections", Array, smalltalk.SequenceableCollection);
 smalltalk.wrapClassName("RegularExpression", "Kernel-Collections", RegExp, smalltalk.Object);
 smalltalk.wrapClassName("RegularExpression", "Kernel-Collections", RegExp, smalltalk.Object);
 
 

+ 318 - 160
js/parser.js

@@ -43,17 +43,23 @@ smalltalk.parser = (function(){
         "identifier": parse_identifier,
         "identifier": parse_identifier,
         "varIdentifier": parse_varIdentifier,
         "varIdentifier": parse_varIdentifier,
         "keyword": parse_keyword,
         "keyword": parse_keyword,
+        "selector": parse_selector,
         "className": parse_className,
         "className": parse_className,
         "string": parse_string,
         "string": parse_string,
         "symbol": parse_symbol,
         "symbol": parse_symbol,
+        "bareSymbol": parse_bareSymbol,
         "number": parse_number,
         "number": parse_number,
         "hex": parse_hex,
         "hex": parse_hex,
         "float": parse_float,
         "float": parse_float,
         "integer": parse_integer,
         "integer": parse_integer,
         "literalArray": parse_literalArray,
         "literalArray": parse_literalArray,
+        "bareLiteralArray": parse_bareLiteralArray,
+        "literalArrayRest": parse_literalArrayRest,
         "dynamicArray": parse_dynamicArray,
         "dynamicArray": parse_dynamicArray,
         "dynamicDictionary": parse_dynamicDictionary,
         "dynamicDictionary": parse_dynamicDictionary,
         "pseudoVariable": parse_pseudoVariable,
         "pseudoVariable": parse_pseudoVariable,
+        "parseTimeLiteral": parse_parseTimeLiteral,
+        "runtimeLiteral": parse_runtimeLiteral,
         "literal": parse_literal,
         "literal": parse_literal,
         "variable": parse_variable,
         "variable": parse_variable,
         "classReference": parse_classReference,
         "classReference": parse_classReference,
@@ -575,6 +581,75 @@ smalltalk.parser = (function(){
         return result0;
         return result0;
       }
       }
       
       
+      function parse_selector() {
+        var cacheKey = "selector@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0, result1, result2;
+        var pos0, pos1;
+        
+        pos0 = clone(pos);
+        pos1 = clone(pos);
+        if (/^[a-zA-Z]/.test(input.charAt(pos.offset))) {
+          result0 = input.charAt(pos.offset);
+          advance(pos, 1);
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("[a-zA-Z]");
+          }
+        }
+        if (result0 !== null) {
+          result1 = [];
+          if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
+            result2 = input.charAt(pos.offset);
+            advance(pos, 1);
+          } else {
+            result2 = null;
+            if (reportFailures === 0) {
+              matchFailed("[a-zA-Z0-9:]");
+            }
+          }
+          while (result2 !== null) {
+            result1.push(result2);
+            if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
+              result2 = input.charAt(pos.offset);
+              advance(pos, 1);
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("[a-zA-Z0-9:]");
+              }
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = clone(pos1);
+          }
+        } else {
+          result0 = null;
+          pos = clone(pos1);
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, line, column, first, others) {return first + others.join("")})(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]);
+        }
+        if (result0 === null) {
+          pos = clone(pos0);
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
       function parse_className() {
       function parse_className() {
         var cacheKey = "className@" + pos.offset;
         var cacheKey = "className@" + pos.offset;
         var cachedResult = cache[cacheKey];
         var cachedResult = cache[cacheKey];
@@ -774,8 +849,8 @@ smalltalk.parser = (function(){
           return cachedResult.result;
           return cachedResult.result;
         }
         }
         
         
-        var result0, result1, result2, result3;
-        var pos0, pos1, pos2;
+        var result0, result1;
+        var pos0, pos1;
         
         
         pos0 = clone(pos);
         pos0 = clone(pos);
         pos1 = clone(pos);
         pos1 = clone(pos);
@@ -789,96 +864,7 @@ smalltalk.parser = (function(){
           }
           }
         }
         }
         if (result0 !== null) {
         if (result0 !== null) {
-          result1 = [];
-          pos2 = clone(pos);
-          if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
-            result3 = input.charAt(pos.offset);
-            advance(pos, 1);
-          } else {
-            result3 = null;
-            if (reportFailures === 0) {
-              matchFailed("[a-zA-Z0-9:]");
-            }
-          }
-          if (result3 !== null) {
-            result2 = [];
-            while (result3 !== null) {
-              result2.push(result3);
-              if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
-                result3 = input.charAt(pos.offset);
-                advance(pos, 1);
-              } else {
-                result3 = null;
-                if (reportFailures === 0) {
-                  matchFailed("[a-zA-Z0-9:]");
-                }
-              }
-            }
-          } else {
-            result2 = null;
-          }
-          if (result2 !== null) {
-            result2 = (function(offset, line, column, digits) {return digits.join("")})(pos2.offset, pos2.line, pos2.column, result2);
-          }
-          if (result2 === null) {
-            pos = clone(pos2);
-          }
-          if (result2 === null) {
-            pos2 = clone(pos);
-            result2 = parse_string();
-            if (result2 !== null) {
-              result2 = (function(offset, line, column, node) {return node._value()})(pos2.offset, pos2.line, pos2.column, result2);
-            }
-            if (result2 === null) {
-              pos = clone(pos2);
-            }
-          }
-          while (result2 !== null) {
-            result1.push(result2);
-            pos2 = clone(pos);
-            if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
-              result3 = input.charAt(pos.offset);
-              advance(pos, 1);
-            } else {
-              result3 = null;
-              if (reportFailures === 0) {
-                matchFailed("[a-zA-Z0-9:]");
-              }
-            }
-            if (result3 !== null) {
-              result2 = [];
-              while (result3 !== null) {
-                result2.push(result3);
-                if (/^[a-zA-Z0-9:]/.test(input.charAt(pos.offset))) {
-                  result3 = input.charAt(pos.offset);
-                  advance(pos, 1);
-                } else {
-                  result3 = null;
-                  if (reportFailures === 0) {
-                    matchFailed("[a-zA-Z0-9:]");
-                  }
-                }
-              }
-            } else {
-              result2 = null;
-            }
-            if (result2 !== null) {
-              result2 = (function(offset, line, column, digits) {return digits.join("")})(pos2.offset, pos2.line, pos2.column, result2);
-            }
-            if (result2 === null) {
-              pos = clone(pos2);
-            }
-            if (result2 === null) {
-              pos2 = clone(pos);
-              result2 = parse_string();
-              if (result2 !== null) {
-                result2 = (function(offset, line, column, node) {return node._value()})(pos2.offset, pos2.line, pos2.column, result2);
-              }
-              if (result2 === null) {
-                pos = clone(pos2);
-              }
-            }
-          }
+          result1 = parse_bareSymbol();
           if (result1 !== null) {
           if (result1 !== null) {
             result0 = [result0, result1];
             result0 = [result0, result1];
           } else {
           } else {
@@ -889,11 +875,51 @@ smalltalk.parser = (function(){
           result0 = null;
           result0 = null;
           pos = clone(pos1);
           pos = clone(pos1);
         }
         }
+        if (result0 !== null) {
+          result0 = (function(offset, line, column, rest) {return rest})(pos0.offset, pos0.line, pos0.column, result0[1]);
+        }
+        if (result0 === null) {
+          pos = clone(pos0);
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
+      function parse_bareSymbol() {
+        var cacheKey = "bareSymbol@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0;
+        var pos0, pos1;
+        
+        pos0 = clone(pos);
+        result0 = parse_selector();
+        if (result0 === null) {
+          result0 = parse_binarySelector();
+          if (result0 === null) {
+            pos1 = clone(pos);
+            result0 = parse_string();
+            if (result0 !== null) {
+              result0 = (function(offset, line, column, node) {return node._value()})(pos1.offset, pos1.line, pos1.column, result0);
+            }
+            if (result0 === null) {
+              pos = clone(pos1);
+            }
+          }
+        }
         if (result0 !== null) {
         if (result0 !== null) {
           result0 = (function(offset, line, column, val) {
           result0 = (function(offset, line, column, val) {
                               return smalltalk.ValueNode._new()
                               return smalltalk.ValueNode._new()
-                                     ._value_(smalltalk.symbolFor(val.join("").replace(/\"/ig, '"')))
-                          })(pos0.offset, pos0.line, pos0.column, result0[1]);
+                                     ._value_(val)
+                          })(pos0.offset, pos0.line, pos0.column, result0);
         }
         }
         if (result0 === null) {
         if (result0 === null) {
           pos = clone(pos0);
           pos = clone(pos0);
@@ -1231,8 +1257,8 @@ smalltalk.parser = (function(){
           return cachedResult.result;
           return cachedResult.result;
         }
         }
         
         
-        var result0, result1, result2, result3, result4;
-        var pos0, pos1, pos2, pos3;
+        var result0, result1;
+        var pos0, pos1;
         
         
         pos0 = clone(pos);
         pos0 = clone(pos);
         pos1 = clone(pos);
         pos1 = clone(pos);
@@ -1246,72 +1272,166 @@ smalltalk.parser = (function(){
           }
           }
         }
         }
         if (result0 !== null) {
         if (result0 !== null) {
-          result1 = parse_ws();
+          result1 = parse_literalArrayRest();
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = clone(pos1);
+          }
+        } else {
+          result0 = null;
+          pos = clone(pos1);
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, line, column, rest) {return rest})(pos0.offset, pos0.line, pos0.column, result0[1]);
+        }
+        if (result0 === null) {
+          pos = clone(pos0);
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
+      function parse_bareLiteralArray() {
+        var cacheKey = "bareLiteralArray@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0, result1;
+        var pos0, pos1;
+        
+        pos0 = clone(pos);
+        pos1 = clone(pos);
+        if (input.charCodeAt(pos.offset) === 40) {
+          result0 = "(";
+          advance(pos, 1);
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse_literalArrayRest();
           if (result1 !== null) {
           if (result1 !== null) {
-            result2 = [];
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = clone(pos1);
+          }
+        } else {
+          result0 = null;
+          pos = clone(pos1);
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, line, column, rest) {return rest})(pos0.offset, pos0.line, pos0.column, result0[1]);
+        }
+        if (result0 === null) {
+          pos = clone(pos0);
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
+      function parse_literalArrayRest() {
+        var cacheKey = "literalArrayRest@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0, result1, result2, result3;
+        var pos0, pos1, pos2, pos3;
+        
+        pos0 = clone(pos);
+        pos1 = clone(pos);
+        result0 = parse_ws();
+        if (result0 !== null) {
+          result1 = [];
+          pos2 = clone(pos);
+          pos3 = clone(pos);
+          result2 = parse_parseTimeLiteral();
+          if (result2 === null) {
+            result2 = parse_bareLiteralArray();
+            if (result2 === null) {
+              result2 = parse_bareSymbol();
+            }
+          }
+          if (result2 !== null) {
+            result3 = parse_ws();
+            if (result3 !== null) {
+              result2 = [result2, result3];
+            } else {
+              result2 = null;
+              pos = clone(pos3);
+            }
+          } else {
+            result2 = null;
+            pos = clone(pos3);
+          }
+          if (result2 !== null) {
+            result2 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result2[0]);
+          }
+          if (result2 === null) {
+            pos = clone(pos2);
+          }
+          while (result2 !== null) {
+            result1.push(result2);
             pos2 = clone(pos);
             pos2 = clone(pos);
             pos3 = clone(pos);
             pos3 = clone(pos);
-            result3 = parse_literal();
-            if (result3 !== null) {
-              result4 = parse_ws();
-              if (result4 !== null) {
-                result3 = [result3, result4];
+            result2 = parse_parseTimeLiteral();
+            if (result2 === null) {
+              result2 = parse_bareLiteralArray();
+              if (result2 === null) {
+                result2 = parse_bareSymbol();
+              }
+            }
+            if (result2 !== null) {
+              result3 = parse_ws();
+              if (result3 !== null) {
+                result2 = [result2, result3];
               } else {
               } else {
-                result3 = null;
+                result2 = null;
                 pos = clone(pos3);
                 pos = clone(pos3);
               }
               }
             } else {
             } else {
-              result3 = null;
+              result2 = null;
               pos = clone(pos3);
               pos = clone(pos3);
             }
             }
-            if (result3 !== null) {
-              result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
+            if (result2 !== null) {
+              result2 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result2[0]);
             }
             }
-            if (result3 === null) {
+            if (result2 === null) {
               pos = clone(pos2);
               pos = clone(pos2);
             }
             }
-            while (result3 !== null) {
-              result2.push(result3);
-              pos2 = clone(pos);
-              pos3 = clone(pos);
-              result3 = parse_literal();
-              if (result3 !== null) {
-                result4 = parse_ws();
-                if (result4 !== null) {
-                  result3 = [result3, result4];
-                } else {
-                  result3 = null;
-                  pos = clone(pos3);
-                }
+          }
+          if (result1 !== null) {
+            result2 = parse_ws();
+            if (result2 !== null) {
+              if (input.charCodeAt(pos.offset) === 41) {
+                result3 = ")";
+                advance(pos, 1);
               } else {
               } else {
                 result3 = null;
                 result3 = null;
-                pos = clone(pos3);
-              }
-              if (result3 !== null) {
-                result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
-              }
-              if (result3 === null) {
-                pos = clone(pos2);
+                if (reportFailures === 0) {
+                  matchFailed("\")\"");
+                }
               }
               }
-            }
-            if (result2 !== null) {
-              result3 = parse_ws();
               if (result3 !== null) {
               if (result3 !== null) {
-                if (input.charCodeAt(pos.offset) === 41) {
-                  result4 = ")";
-                  advance(pos, 1);
-                } else {
-                  result4 = null;
-                  if (reportFailures === 0) {
-                    matchFailed("\")\"");
-                  }
-                }
-                if (result4 !== null) {
-                  result0 = [result0, result1, result2, result3, result4];
-                } else {
-                  result0 = null;
-                  pos = clone(pos1);
-                }
+                result0 = [result0, result1, result2, result3];
               } else {
               } else {
                 result0 = null;
                 result0 = null;
                 pos = clone(pos1);
                 pos = clone(pos1);
@@ -1332,7 +1452,7 @@ smalltalk.parser = (function(){
           result0 = (function(offset, line, column, lits) {
           result0 = (function(offset, line, column, lits) {
                              return smalltalk.ValueNode._new()
                              return smalltalk.ValueNode._new()
                                     ._value_(lits)
                                     ._value_(lits)
-                         })(pos0.offset, pos0.line, pos0.column, result0[2]);
+                         })(pos0.offset, pos0.line, pos0.column, result0[1]);
         }
         }
         if (result0 === null) {
         if (result0 === null) {
           pos = clone(pos0);
           pos = clone(pos0);
@@ -1597,8 +1717,8 @@ smalltalk.parser = (function(){
         return result0;
         return result0;
       }
       }
       
       
-      function parse_literal() {
-        var cacheKey = "literal@" + pos.offset;
+      function parse_parseTimeLiteral() {
+        var cacheKey = "parseTimeLiteral@" + pos.offset;
         var cachedResult = cache[cacheKey];
         var cachedResult = cache[cacheKey];
         if (cachedResult) {
         if (cachedResult) {
           pos = clone(cachedResult.nextPos);
           pos = clone(cachedResult.nextPos);
@@ -1613,18 +1733,9 @@ smalltalk.parser = (function(){
           if (result0 === null) {
           if (result0 === null) {
             result0 = parse_literalArray();
             result0 = parse_literalArray();
             if (result0 === null) {
             if (result0 === null) {
-              result0 = parse_dynamicDictionary();
+              result0 = parse_string();
               if (result0 === null) {
               if (result0 === null) {
-                result0 = parse_dynamicArray();
-                if (result0 === null) {
-                  result0 = parse_string();
-                  if (result0 === null) {
-                    result0 = parse_symbol();
-                    if (result0 === null) {
-                      result0 = parse_block();
-                    }
-                  }
-                }
+                result0 = parse_symbol();
               }
               }
             }
             }
           }
           }
@@ -1637,6 +1748,53 @@ smalltalk.parser = (function(){
         return result0;
         return result0;
       }
       }
       
       
+      function parse_runtimeLiteral() {
+        var cacheKey = "runtimeLiteral@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0;
+        
+        result0 = parse_dynamicDictionary();
+        if (result0 === null) {
+          result0 = parse_dynamicArray();
+          if (result0 === null) {
+            result0 = parse_block();
+          }
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
+      function parse_literal() {
+        var cacheKey = "literal@" + pos.offset;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = clone(cachedResult.nextPos);
+          return cachedResult.result;
+        }
+        
+        var result0;
+        
+        result0 = parse_runtimeLiteral();
+        if (result0 === null) {
+          result0 = parse_parseTimeLiteral();
+        }
+        
+        cache[cacheKey] = {
+          nextPos: clone(pos),
+          result:  result0
+        };
+        return result0;
+      }
+      
       function parse_variable() {
       function parse_variable() {
         var cacheKey = "variable@" + pos.offset;
         var cacheKey = "variable@" + pos.offset;
         var cachedResult = cache[cacheKey];
         var cachedResult = cache[cacheKey];

+ 10 - 6
js/parser.pegjs

@@ -6,18 +6,18 @@ ws             = (separator / comments)*
 identifier     = first:[a-zA-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
 identifier     = first:[a-zA-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
 varIdentifier  = first:[a-z] others:[a-zA-Z0-9]* {return first + others.join("")}
 varIdentifier  = first:[a-z] others:[a-zA-Z0-9]* {return first + others.join("")}
 keyword        = first:identifier last:[:] {return first + last}
 keyword        = first:identifier last:[:] {return first + last}
+selector      = first:[a-zA-Z] others:[a-zA-Z0-9\:]* {return first + others.join("")}
 className      = first:[A-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
 className      = first:[A-Z] others:[a-zA-Z0-9]* {return first + others.join("")}
 string         = ['] val:(("''" {return "'"} / [^'])*) ['] {
 string         = ['] val:(("''" {return "'"} / [^'])*) ['] {
                      return smalltalk.ValueNode._new()
                      return smalltalk.ValueNode._new()
                             ._value_(val.join("").replace(/\"/ig, '"'))
                             ._value_(val.join("").replace(/\"/ig, '"'))
                  }
                  }
 
 
-symbol         = "#"val:(
-                         digits:[a-zA-Z0-9\:]+ {return digits.join("")}
-                       / node:string {return node._value()})*
+symbol         = "#" rest:bareSymbol {return rest}
+bareSymbol         = val:(selector / binarySelector / node:string {return node._value()})
                   {
                   {
                       return smalltalk.ValueNode._new()
                       return smalltalk.ValueNode._new()
-                             ._value_(smalltalk.symbolFor(val.join("").replace(/\"/ig, '"')))
+                             ._value_(val)
                   }
                   }
 number         = n:(hex / float / integer) {
 number         = n:(hex / float / integer) {
                      return smalltalk.ValueNode._new()
                      return smalltalk.ValueNode._new()
@@ -26,7 +26,9 @@ number         = n:(hex / float / integer) {
 hex            = neg:[-]? "16r" num:[0-9a-fA-F]+ {return parseInt((neg + num.join("")), 16)}
 hex            = neg:[-]? "16r" num:[0-9a-fA-F]+ {return parseInt((neg + num.join("")), 16)}
 float          = neg:[-]?int:[0-9]+ "." dec:[0-9]+ {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)}
 float          = neg:[-]?int:[0-9]+ "." dec:[0-9]+ {return parseFloat((neg + int.join("") + "." + dec.join("")), 10)}
 integer        = neg:[-]?digits:[0-9]+ {return (parseInt(neg+digits.join(""), 10))}
 integer        = neg:[-]?digits:[0-9]+ {return (parseInt(neg+digits.join(""), 10))}
-literalArray   = "#(" ws lits:(lit:literal ws {return lit._value()})* ws ")" {
+literalArray   = "#(" rest:literalArrayRest {return rest}
+bareLiteralArray   = "(" rest:literalArrayRest {return rest}
+literalArrayRest   = ws lits:(lit:(parseTimeLiteral / bareLiteralArray / bareSymbol) ws {return lit._value()})* ws ")" {
                      return smalltalk.ValueNode._new()
                      return smalltalk.ValueNode._new()
                             ._value_(lits)
                             ._value_(lits)
                  }
                  }
@@ -45,7 +47,9 @@ pseudoVariable = val:(
                        return smalltalk.ValueNode._new()
                        return smalltalk.ValueNode._new()
                               ._value_(val)
                               ._value_(val)
                    }
                    }
-literal        = pseudoVariable / number / literalArray / dynamicDictionary / dynamicArray / string / symbol / block
+parseTimeLiteral        = pseudoVariable / number / literalArray / string / symbol
+runtimeLiteral        = dynamicDictionary / dynamicArray / block
+literal        = runtimeLiteral / parseTimeLiteral
 
 
 
 
 variable       = identifier:varIdentifier {
 variable       = identifier:varIdentifier {

+ 5 - 1
package.json

@@ -16,6 +16,9 @@
         "type": "git",
         "type": "git",
         "url": "git://github.com/amber-smalltalk/amber.git#0.10.0"
         "url": "git://github.com/amber-smalltalk/amber.git#0.10.0"
     },
     },
+    "engines": {
+        "node": "0.8.x"
+    },
     "bin": {
     "bin": {
         "amber": "./bin/amber",
         "amber": "./bin/amber",
         "amberc": "./bin/amberc",
         "amberc": "./bin/amberc",
@@ -26,7 +29,8 @@
     },
     },
     "devDependencies": {
     "devDependencies": {
         "pegjs": "~0.7.0",
         "pegjs": "~0.7.0",
-        "grunt": "~0.3.17",
+        "grunt": "~0.4.0",
+        "grunt-contrib-jshint": "~0.3.0",
         "grunt-image-embed": "~0.1.3",
         "grunt-image-embed": "~0.1.3",
         "grunt-contrib-mincss": "~0.3.2"
         "grunt-contrib-mincss": "~0.3.2"
     }
     }

+ 4 - 4
server/FileServer.st

@@ -48,11 +48,11 @@ initialize
 !
 !
 
 
 checkDirectoryLayout
 checkDirectoryLayout
-	(path existsSync: self basePath, 'index.html') ifFalse: [
+	(fs existsSync: self basePath, 'index.html') ifFalse: [
 		console warn: 'Warning: project directory does not contain index.html'].
 		console warn: 'Warning: project directory does not contain index.html'].
-	(path existsSync: self basePath, 'st') ifFalse: [
+	(fs existsSync: self basePath, 'st') ifFalse: [
 		console warn: 'Warning: project directory is missing an "st" directory'].
 		console warn: 'Warning: project directory is missing an "st" directory'].
-	(path existsSync: self basePath, 'js') ifFalse: [
+	(fs existsSync: self basePath, 'js') ifFalse: [
 		console warn: 'Warning: project directory is missing a "js" directory'].
 		console warn: 'Warning: project directory is missing a "js" directory'].
 ! !
 ! !
 
 
@@ -111,7 +111,7 @@ handleGETRequest: aRequest respondTo: aResponse
 	| uri filename |
 	| uri filename |
 	uri := (url parse: aRequest url) pathname.
 	uri := (url parse: aRequest url) pathname.
 	filename := path join: self basePath with: uri.
 	filename := path join: self basePath with: uri.
-	path exists: filename do: [:aBoolean |
+	fs exists: filename do: [:aBoolean |
 		aBoolean
 		aBoolean
 			ifFalse: [self respondNotFoundTo: aResponse]
 			ifFalse: [self respondNotFoundTo: aResponse]
 			ifTrue: [self respondFileNamed: filename to: aResponse]]
 			ifTrue: [self respondFileNamed: filename to: aResponse]]

File diff ditekan karena terlalu besar
+ 221 - 196
server/server.js


+ 23 - 7
st/Compiler-IR.st

@@ -167,14 +167,14 @@ visitDynamicDictionaryNode: aNode
 
 
 visitJSStatementNode: aNode
 visitJSStatementNode: aNode
 	^ IRVerbatim new
 	^ IRVerbatim new
-		source: aNode source;
+		source: aNode source crlfSanitized;
 		yourself
 		yourself
 !
 !
 
 
 visitMethodNode: aNode
 visitMethodNode: aNode
 
 
 	self method: (IRMethod new
 	self method: (IRMethod new
-		source: self source;
+		source: self source crlfSanitized;
 		theClass: self theClass;
 		theClass: self theClass;
 		arguments: aNode arguments;
 		arguments: aNode arguments;
 		selector: aNode selector;
 		selector: aNode selector;
@@ -922,6 +922,7 @@ visitIRMethod: anIRMethod
 			nextPutFunctionWith: [
 			nextPutFunctionWith: [
 				self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |
 				self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |
 					each name asVariableName ]).
 					each name asVariableName ]).
+				anIRMethod classReferences do: [ :each | self stream nextPutClassRefFunction: each ].
 				self stream nextPutContextFor: anIRMethod during: [
 				self stream nextPutContextFor: anIRMethod during: [
 				anIRMethod internalVariables notEmpty ifTrue: [
 				anIRMethod internalVariables notEmpty ifTrue: [
 					self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |
 					self stream nextPutVars: (anIRMethod internalVariables asArray collect: [ :each |
@@ -1031,8 +1032,7 @@ nextPutAssignment
 
 
 nextPutBlockContextFor: anIRClosure during: aBlock
 nextPutBlockContextFor: anIRClosure during: aBlock
 	self
 	self
-		nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {';
-		nextPutAll: String cr.
+		nextPutAll: 'return smalltalk.withContext(function(', anIRClosure scope alias, ') {'; lf.
 	
 	
 	aBlock value.
 	aBlock value.
 	
 	
@@ -1053,6 +1053,23 @@ nextPutBlockContextFor: anIRClosure during: aBlock
 		nextPutAll: anIRClosure method scope alias, ')})'
 		nextPutAll: anIRClosure method scope alias, ')})'
 !
 !
 
 
+nextPutClassRefFunction: aString
+	"Creates an inner function $aString into method and called as `$Foo()`whenever the global is accessed.
+	This ensures that undefined global access will answer `nil`"
+	
+	stream
+		nextPutAll: 'function $';
+		nextPutAll: aString;
+		nextPutAll: '(){return smalltalk.';
+		nextPutAll: aString;
+		nextPutAll: '||(typeof ';
+		nextPutAll: aString;
+		nextPutAll: '=="undefined"?nil:';
+		nextPutAll: aString;
+		nextPutAll: ')}';
+		lf
+!
+
 nextPutClosureWith: aBlock arguments: anArray
 nextPutClosureWith: aBlock arguments: anArray
 	stream nextPutAll: '(function('.
 	stream nextPutAll: '(function('.
 	anArray
 	anArray
@@ -1065,8 +1082,7 @@ nextPutClosureWith: aBlock arguments: anArray
 
 
 nextPutContextFor: aMethod during: aBlock
 nextPutContextFor: aMethod during: aBlock
 	self
 	self
-		nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { ';
-		nextPutAll: String cr.
+		nextPutAll: 'return smalltalk.withContext(function(', aMethod scope alias, ') { '; lf.
 	aBlock value.
 	aBlock value.
 	
 	
 	self
 	self
@@ -1119,7 +1135,7 @@ nextPutIfElse: aBlock with: ifBlock with: elseBlock
 nextPutMethodDeclaration: aMethod with: aBlock
 nextPutMethodDeclaration: aMethod with: aBlock
 	stream
 	stream
 		nextPutAll: 'smalltalk.method({'; lf;
 		nextPutAll: 'smalltalk.method({'; lf;
-		nextPutAll: 'selector: "', aMethod selector, '",'; lf;
+		nextPutAll: 'selector: ', aMethod selector asJavascript, ','; lf;
 		nextPutAll: 'source: ', aMethod source asJavascript, ',';lf.
 		nextPutAll: 'source: ', aMethod source asJavascript, ',';lf.
 	aBlock value.
 	aBlock value.
 	stream
 	stream

+ 11 - 59
st/Compiler-Inlining.st

@@ -53,24 +53,6 @@ accept: aVisitor
 	^ aVisitor visitIRInlinedReturn: self
 	^ aVisitor visitIRInlinedReturn: self
 ! !
 ! !
 
 
-IRInlinedReturn subclass: #IRInlinedNonLocalReturn
-	instanceVariableNames: ''
-	package: 'Compiler-Inlining'!
-!IRInlinedNonLocalReturn commentStamp!
-I represent an inlined non local return instruction.!
-
-!IRInlinedNonLocalReturn methodsFor: 'testing'!
-
-isInlined
-	^ true
-! !
-
-!IRInlinedNonLocalReturn methodsFor: 'visiting'!
-
-accept: aVisitor
-	^ aVisitor visitIRInlinedNonLocalReturn: self
-! !
-
 IRSend subclass: #IRInlinedSend
 IRSend subclass: #IRInlinedSend
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Compiler-Inlining'!
 	package: 'Compiler-Inlining'!
@@ -163,12 +145,6 @@ assignmentInliner
 		yourself
 		yourself
 !
 !
 
 
-nonLocalReturnInliner
-	^ IRNonLocalReturnInliner new
-		translator: self;
-		yourself
-!
-
 returnInliner
 returnInliner
 	^ IRReturnInliner new
 	^ IRReturnInliner new
 		translator: self;
 		translator: self;
@@ -225,9 +201,7 @@ visitIRAssignment: anIRAssignment
 !
 !
 
 
 visitIRNonLocalReturn: anIRNonLocalReturn
 visitIRNonLocalReturn: anIRNonLocalReturn
-	^ (self shouldInlineReturn: anIRNonLocalReturn)
-		ifTrue: [ self nonLocalReturnInliner inlineReturn: anIRNonLocalReturn ]
-		ifFalse: [ self transformNonLocalReturn: anIRNonLocalReturn ]
+	^ self transformNonLocalReturn: anIRNonLocalReturn
 !
 !
 
 
 visitIRReturn: anIRReturn
 visitIRReturn: anIRReturn
@@ -422,6 +396,16 @@ inlineClosure: anIRClosure
 
 
 	"Add a block sequence"
 	"Add a block sequence"
 	sequence := self inlinedSequence.
 	sequence := self inlinedSequence.
+
+	"Map the closure arguments to the receiver of the message send"
+	anIRClosure arguments do: [ :each |
+		inlinedClosure add: (IRTempDeclaration new name: each; yourself).
+		sequence add: (IRAssignment new
+			add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: each; yourself));
+			add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: '$receiver'; yourself));
+			yourself) ].
+			
+	"To ensure the correct order of the closure instructions: first the temps then the sequence"
 	inlinedClosure add: sequence.
 	inlinedClosure add: sequence.
 
 
 	"Get all the statements"
 	"Get all the statements"
@@ -466,15 +450,11 @@ inlinedSend: inlinedSend with: anIRInstruction with: anotherIRInstruction
 	| inlinedClosure1 inlinedClosure2 |
 	| inlinedClosure1 inlinedClosure2 |
 
 
 	anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].
 	anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].
-	anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].
-
 	anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].
 	anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].
-	anotherIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].
 
 
 	inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).
 	inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).
 	inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).
 	inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).
 
 
-
 	inlinedSend
 	inlinedSend
 		add: self send instructions first;
 		add: self send instructions first;
 		add: inlinedClosure1;
 		add: inlinedClosure1;
@@ -554,34 +534,6 @@ inlineClosure: anIRClosure
 	^ inlinedClosure
 	^ inlinedClosure
 ! !
 ! !
 
 
-IRSendInliner subclass: #IRNonLocalReturnInliner
-	instanceVariableNames: ''
-	package: 'Compiler-Inlining'!
-
-!IRNonLocalReturnInliner methodsFor: 'factory'!
-
-inlinedReturn
-	^ IRInlinedNonLocalReturn new
-! !
-
-!IRNonLocalReturnInliner methodsFor: 'inlining'!
-
-inlineClosure: anIRClosure
-	"| inlinedClosure statements |
-
-	inlinedClosure := super inlineClosure: anIRClosure.
-	statements := inlinedClosure instructions last instructions.
-	
-	statements ifNotEmpty: [
-		statements last replaceWith: (IRNonLocalReturn new
-			add: statements last copy;
-			yourself) ].
-
-	^ inlinedClosure"
-
-	^ super inlineCLosure: anIRClosure
-! !
-
 IRSendInliner subclass: #IRReturnInliner
 IRSendInliner subclass: #IRReturnInliner
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Compiler-Inlining'!
 	package: 'Compiler-Inlining'!

+ 5 - 1
st/Compiler-Semantic.st

@@ -306,7 +306,11 @@ I am an class reference variable!
 !ClassRefVar methodsFor: 'accessing'!
 !ClassRefVar methodsFor: 'accessing'!
 
 
 alias
 alias
-	^ '(smalltalk.', self name, ' || ', self name, ')'
+	"Fixes issue #190.
+	A function is created in the method definition, answering the class or nil.
+	See JSStream >> #nextPutClassRefFunction:"
+	
+	^ '$', self name, '()'
 ! !
 ! !
 
 
 !ClassRefVar methodsFor: 'testing'!
 !ClassRefVar methodsFor: 'testing'!

+ 22 - 0
st/Compiler-Tests.st

@@ -252,6 +252,12 @@ testAssignment
 	self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1
 	self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1
 !
 !
 
 
+testBackslashSelectors
+	
+	self should: '\ arg ^ 4' return: 4.
+	self should: '\\ arg ^ 42' return: 42
+!
+
 testBlockReturn
 testBlockReturn
 	self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).
 	self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).
 	self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).
 	self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).
@@ -356,6 +362,11 @@ testNonLocalReturn
 	self should: 'foo [ :x | ^ x + x ] value: 4. ^ 2' return: 8
 	self should: 'foo [ :x | ^ x + x ] value: 4. ^ 2' return: 8
 !
 !
 
 
+testPascalCaseGlobal
+	self should: 'foo ^Object' return: (smalltalk at: 'Object').
+	self should: 'foo ^NonExistent' return: nil
+!
+
 testSendReceiverAndArgumentsOrdered
 testSendReceiverAndArgumentsOrdered
 	self should: 'foo
 	self should: 'foo
 	| x |
 	| x |
@@ -410,6 +421,17 @@ testifNotNil
 	self should: 'foo nil ifNotNil: [ ^ 2 ]' return: receiver.
 	self should: 'foo nil ifNotNil: [ ^ 2 ]' return: receiver.
 !
 !
 
 
+testifNotNilWithArgument
+	self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ]' return: 3.
+	self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ]' return: nil.
+	
+	self should: 'foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 3.
+	self should: 'foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 5.
+	
+	self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 3.
+	self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 5
+!
+
 testifTrue
 testifTrue
 	self should: 'foo false ifTrue: [ ^ 1 ]' return: receiver.
 	self should: 'foo false ifTrue: [ ^ 1 ]' return: receiver.
 	self should: 'foo true ifTrue: [ ^ 2 ]' return: 2.
 	self should: 'foo true ifTrue: [ ^ 2 ]' return: 2.

+ 5 - 6
st/Kernel-Classes.st

@@ -90,8 +90,8 @@ lookupSelector: selector
 	^ nil
 	^ nil
 !
 !
 
 
-methodAt: aSymbol
-	^ self methodDictionary at: aSymbol asString
+methodAt: aString
+	^ self methodDictionary at: aString
 !
 !
 
 
 methodDictionary
 methodDictionary
@@ -284,8 +284,8 @@ canUnderstand: aSelector
 		self superclass notNil and: [self superclass canUnderstand: aSelector]]
 		self superclass notNil and: [self superclass canUnderstand: aSelector]]
 !
 !
 
 
-includesSelector: aSymbol
-	^ self methodDictionary includesKey: aSymbol asString
+includesSelector: aString
+	^ self methodDictionary includesKey: aString
 !
 !
 
 
 inheritsFrom: aClass
 inheritsFrom: aClass
@@ -393,8 +393,7 @@ definition
 	^ String streamContents: [ :stream |
 	^ String streamContents: [ :stream |
 		stream
 		stream
 			nextPutAll: self asString;
 			nextPutAll: self asString;
-			nextPutAll: ' class ';
-			nextPutAll: 'instanceVariableNames: '''.
+			nextPutAll: ' instanceVariableNames: '''.
 		self instanceVariableNames
 		self instanceVariableNames
 			do: [ :each | stream nextPutAll: each ]
 			do: [ :each | stream nextPutAll: each ]
 			separatedBy: [ stream nextPutAll: ' ' ].
 			separatedBy: [ stream nextPutAll: ' ' ].

+ 6 - 139
st/Kernel-Collections.st

@@ -1049,7 +1049,7 @@ asString
 !
 !
 
 
 asSymbol
 asSymbol
-	^self subclassResponsibility
+	^self asString
 !
 !
 
 
 asUppercase
 asUppercase
@@ -1188,13 +1188,17 @@ asString
 !
 !
 
 
 asSymbol
 asSymbol
-	^Symbol lookup: self
+	^ self
 !
 !
 
 
 asUppercase
 asUppercase
 	<return self.toUpperCase()>
 	<return self.toUpperCase()>
 !
 !
 
 
+crlfSanitized
+	^self lines join: String lf
+!
+
 reversed
 reversed
 	<return self.split("").reverse().join("")>
 	<return self.split("").reverse().join("")>
 !
 !
@@ -1434,143 +1438,6 @@ randomNotIn: aString
     ^result
     ^result
 ! !
 ! !
 
 
-CharacterArray subclass: #Symbol
-	instanceVariableNames: ''
-	package: 'Kernel-Collections'!
-!Symbol commentStamp!
-I represent Strings that are created uniquely.
-Symbols are unique through the system.
-
-Thus, someString asSymbol == someString asSymbol.!
-
-!Symbol methodsFor: 'accessing'!
-
-at: anIndex ifAbsent: aBlock
-	^self asString at: anIndex ifAbsent: aBlock
-!
-
-indexOf: anElement
-	^ self asString indexOf: anElement
-!
-
-size
-	^self asString size
-! !
-
-!Symbol methodsFor: 'comparing'!
-
-< aSymbol
-	^self asString < aSymbol asString
-!
-
-<= aSymbol
-	^self asString <= aSymbol asString
-!
-
-= aSymbol
-	aSymbol class = self class ifFalse: [^false].
-	^self asString = aSymbol asString
-!
-
-> aSymbol
-	^self asString > aSymbol asString
-!
-
->= aSymbol
-	^self asString >= aSymbol asString
-! !
-
-!Symbol methodsFor: 'converting'!
-
-asJSON
-	^self asString asJSON
-!
-
-asJavascript
-	^'smalltalk.symbolFor(', self asString asJavascript, ')'
-!
-
-asSelector
-	^self asString asSelector
-!
-
-asString
-	<return self.value>
-!
-
-asSymbol
-	^self
-! !
-
-!Symbol methodsFor: 'copying'!
-
-copyFrom: anIndex to: anotherIndex
-	^self class fromString: (self asString copyFrom: anIndex to: anotherIndex)
-!
-
-deepCopy
-	^self
-!
-
-shallowCopy
-	^self
-! !
-
-!Symbol methodsFor: 'enumerating'!
-
-collect: aBlock
-	^ (self asString collect: aBlock) asSymbol
-!
-
-detect: aBlock
-	^ self asString detect: aBlock
-!
-
-do: aBlock
-	self asString do: aBlock
-!
-
-select: aBlock
-	^ (self asString select: aBlock) asSymbol
-!
-
-withIndexDo: aBlock
-	self asString withIndexDo: aBlock
-! !
-
-!Symbol methodsFor: 'evaluating'!
-
-value: anObject
-	^anObject perform: self
-! !
-
-!Symbol methodsFor: 'printing'!
-
-printOn: aStream
-	aStream nextPutAll: '#'.
-	super printOn: aStream
-! !
-
-!Symbol methodsFor: 'testing'!
-
-isSymbol
-	^true
-! !
-
-!Symbol class methodsFor: 'instance creation'!
-
-basicNew
-	self shouldNotImplement
-!
-
-fromString: aString
-	^self lookup: aString
-!
-
-lookup: aString
-	<return smalltalk.symbolFor(aString);>
-! !
-
 Collection subclass: #Set
 Collection subclass: #Set
 	instanceVariableNames: 'elements'
 	instanceVariableNames: 'elements'
 	package: 'Kernel-Collections'!
 	package: 'Kernel-Collections'!

+ 35 - 39
st/Kernel-Objects.st

@@ -67,12 +67,12 @@ identityHash
 	>
 	>
 !
 !
 
 
-instVarAt: aSymbol
-	<return self['@'+aSymbol._asString()]>
+instVarAt: aString
+	< return self['@'+aString] >
 !
 !
 
 
-instVarAt: aSymbol put: anObject
-	<self['@' + aSymbol._asString()] = anObject>
+instVarAt: aString put: anObject
+	< self['@' + aString] = anObject >
 !
 !
 
 
 size
 size
@@ -217,20 +217,20 @@ initialize
 
 
 !Object methodsFor: 'message handling'!
 !Object methodsFor: 'message handling'!
 
 
-basicPerform: aSymbol
-	^self basicPerform: aSymbol withArguments: #()
+basicPerform: aString
+	^self basicPerform: aString withArguments: #()
 !
 !
 
 
-basicPerform: aSymbol withArguments: aCollection
-	<return self[aSymbol].apply(self, aCollection);>
+basicPerform: aString withArguments: aCollection
+	<return self[aString].apply(self, aCollection);>
 !
 !
 
 
-perform: aSymbol
-	^self perform: aSymbol withArguments: #()
+perform: aString
+	^self perform: aString withArguments: #()
 !
 !
 
 
-perform: aSymbol withArguments: aCollection
-	<return smalltalk.send(self, aSymbol._asSelector(), aCollection)>
+perform: aString withArguments: aCollection
+	<return smalltalk.send(self, aString._asSelector(), aCollection)>
 ! !
 ! !
 
 
 !Object methodsFor: 'printing'!
 !Object methodsFor: 'printing'!
@@ -265,17 +265,17 @@ ifNil: aBlock
 
 
 ifNil: aBlock ifNotNil: anotherBlock
 ifNil: aBlock ifNotNil: anotherBlock
 	"inlined in the Compiler"
 	"inlined in the Compiler"
-	^anotherBlock value
+	^anotherBlock value: self
 !
 !
 
 
 ifNotNil: aBlock
 ifNotNil: aBlock
 	"inlined in the Compiler"
 	"inlined in the Compiler"
-	^aBlock value
+	^aBlock value: self
 !
 !
 
 
 ifNotNil: aBlock ifNil: anotherBlock
 ifNotNil: aBlock ifNil: anotherBlock
 	"inlined in the Compiler"
 	"inlined in the Compiler"
-	^aBlock value
+	^aBlock value: self
 !
 !
 
 
 isBoolean
 isBoolean
@@ -675,40 +675,37 @@ __Note:__ For keyword-based messages, only the first keyword is kept: `window fo
 
 
 !JSObjectProxy methodsFor: 'accessing'!
 !JSObjectProxy methodsFor: 'accessing'!
 
 
-at: aSymbol
-	<return self['@jsObject'][aSymbol._asString()]>
+at: aString
+	<return self['@jsObject'][aString]>
 !
 !
 
 
-at: aSymbol ifAbsent: aBlock
-	"return the aSymbol property or evaluate aBlock if the property is not defined on the object"
+at: aString ifAbsent: aBlock
+	"return the aString property or evaluate aBlock if the property is not defined on the object"
 	<
 	<
-		var obj = self['@jsObject'],
-			symbol = aSymbol._asString();
-		return symbol in obj ? obj[symbol] : aBlock();
+		var obj = self['@jsObject'];
+		return aString in obj ? obj[aString] : aBlock();
 	>
 	>
 !
 !
 
 
-at: aSymbol ifPresent: aBlock
+at: aString ifPresent: aBlock
 	"return the evaluation of aBlock with the value if the property is defined or return nil"
 	"return the evaluation of aBlock with the value if the property is defined or return nil"
 	<
 	<
-		var obj = self['@jsObject'],
-			symbol = aSymbol._asString();
-		return symbol in obj ? aBlock(obj[symbol]) : nil;
+		var obj = self['@jsObject'];
+		return aString in obj ? aBlock(obj[aString]) : nil;
 	>
 	>
 !
 !
 
 
-at: aSymbol ifPresent: aBlock ifAbsent: anotherBlock
+at: aString ifPresent: aBlock ifAbsent: anotherBlock
 	"return the evaluation of aBlock with the value if the property is defined
 	"return the evaluation of aBlock with the value if the property is defined
 	or return value of anotherBlock"
 	or return value of anotherBlock"
 	<
 	<
-		var obj = self['@jsObject'],
-			symbol = aSymbol._asString();
-		return symbol in obj ? aBlock(obj[symbol]) : anotherBlock();
+		var obj = self['@jsObject'];
+		return aString in obj ? aBlock(obj[aString]) : anotherBlock();
 	>
 	>
 !
 !
 
 
-at: aSymbol put: anObject
-	<self['@jsObject'][aSymbol._asString()] = anObject>
+at: aString put: anObject
+	<self['@jsObject'][aString] = anObject>
 !
 !
 
 
 jsObject
 jsObject
@@ -722,7 +719,10 @@ jsObject: aJSObject
 value
 value
 	"if attribute 'value' exists on the JS object return it,
 	"if attribute 'value' exists on the JS object return it,
 	otherwise return the result of Object>>value."
 	otherwise return the result of Object>>value."
-	^ self at: 'value' ifAbsent: [super value]
+	
+	^ self 
+		at: 'value' 
+		ifAbsent: [ super value ]
 ! !
 ! !
 
 
 !JSObjectProxy methodsFor: 'enumerating'!
 !JSObjectProxy methodsFor: 'enumerating'!
@@ -845,10 +845,6 @@ identityHash
 	<return self % aNumber>
 	<return self % aNumber>
 !
 !
 
 
-\\ aNumber
-	<return self % aNumber>
-!
-
 abs
 abs
 	<return Math.abs(self);>
 	<return Math.abs(self);>
 !
 !
@@ -1510,8 +1506,8 @@ It requires the `Compiler` package and the `js/parser.js` parser file in order t
 
 
 !Smalltalk methodsFor: 'accessing'!
 !Smalltalk methodsFor: 'accessing'!
 
 
-at: aSymbol
-	<return self[aSymbol._asString()]>
+at: aString
+	<return self[aString]>
 !
 !
 
 
 parse: aString
 parse: aString

+ 6 - 131
st/Kernel-Tests.st

@@ -871,133 +871,6 @@ collectionClass
 	^ String
 	^ String
 ! !
 ! !
 
 
-SequenceableCollectionTest subclass: #SymbolTest
-	instanceVariableNames: ''
-	package: 'Kernel-Tests'!
-
-!SymbolTest methodsFor: 'accessing'!
-
-collection
-	^ #hello
-!
-
-collectionWithDuplicates
-	^ #phhaaarorra
-! !
-
-!SymbolTest methodsFor: 'tests'!
-
-testAsString
-	self assert: #hello asString equals: 'hello'
-!
-
-testAsSymbol
-	self assert: #hello == #hello asSymbol
-!
-
-testAt
-	self assert: (#hello at: 1) equals: 'h'.
-	self assert: (#hello at: 5) equals: 'o'.
-	self assert: (#hello at: 6 ifAbsent: [nil]) equals: nil
-!
-
-testAtPut
-	"Symbol instances are read-only"
-	self should: ['hello' at: 1 put: 'a'] raise: Error
-!
-
-testCollect
-	| newCollection |
-	newCollection := #hheelllloo.
-	self
-		assertSameContents: (self collection collect: [ :each |
-			each, each ])
-		as: newCollection
-!
-
-testComparing
-	self assert: #ab > #aa.
-	self deny: #ab > #ba.
-
-	self assert: #ab < #ba.
-	self deny: #bb < #ba.
-
-	self assert: #ab >= #aa.
-	self deny: #ab >= #ba.
-
-	self assert: #ab <= #ba.
-	self deny: #bb <= #ba
-!
-
-testCopying
-	self assert: #hello copy == #hello.
-	self assert: #hello deepCopy == #hello
-!
-
-testDetect
-	self assert: (self collection detect: [ :each | each = 'h' ]) equals: 'h'.
-	self
-		should: [ self collection detect: [ :each | each = 'z' ] ]
-		raise: Error
-!
-
-testEquality
-	self assert: (#hello = #hello).
-	self deny: #hello = #world.
-
-	self assert: (#hello = #hello yourself).
-	self assert: (#hello yourself = #hello).
-
-	self deny: #hello = 'hello'.
-	self deny: 'hello' = #hello.
-!
-
-testIdentity
-	self assert: #hello == #hello.
-	self deny: #hello == #world.
-
-	self assert: #hello = #hello yourself.
-	self assert: #hello yourself = #hello asString asSymbol
-!
-
-testIndexOf
-	self assert: (self collection indexOf: 'e') equals: 2.
-	self should: [ self collection indexOf: 999 ] raise: Error.
-	self assert: (self collection indexOf: 999 ifAbsent: [ 'sentinel' ]) equals: 'sentinel'
-!
-
-testIsEmpty
-	self deny: self collection isEmpty.
-	self assert: '' asSymbol isEmpty
-!
-
-testIsSymbolIsString
-	self assert: #hello isSymbol.
-	self deny: 'hello' isSymbol.
-	self deny: #hello isString.
-	self assert: 'hello' isString
-!
-
-testSelect
-	| newCollection |
-	newCollection := 'o'.
-	self
-		assertSameContents: (self collection select: [ :each |
-			each = 'o' ])
-		as: newCollection
-!
-
-testSize
-	self assert: #a size equals: 1.
-	self assert: #aaaaa size equals: 5
-! !
-
-!SymbolTest class methodsFor: 'accessing'!
-
-collectionClass
-	^ Symbol
-! !
-
 TestCase subclass: #JSObjectProxyTest
 TestCase subclass: #JSObjectProxyTest
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	package: 'Kernel-Tests'!
 	package: 'Kernel-Tests'!
@@ -1021,11 +894,13 @@ testAtIfAbsent
 
 
 testAtIfPresent
 testAtIfPresent
 	| testObject |
 	| testObject |
+	
 	testObject := self jsObject.
 	testObject := self jsObject.
-	self assert: (testObject at: 'abc' ifPresent: [:x|'hello ',x asString]) equals: nil.
-	self assert: (testObject at: 'e' ifPresent: [:x|'hello ',x asString]) equals: 'hello nil'.
-	self assert: (testObject at: 'a' ifPresent: [:x|'hello ',x asString]) equals: 'hello 1'.
-	self assert: (testObject at: 'f' ifPresent: [:x|'hello ',x asString]) equals: 'hello nil'.
+	
+	self assert: (testObject at: 'abc' ifPresent: [ :x | 'hello ',x asString ]) equals: nil.
+	self assert: (testObject at: 'e' ifPresent: [:x | 'hello ',x asString ]) equals: 'hello nil'.
+	self assert: (testObject at: 'a' ifPresent: [:x | 'hello ',x asString ]) equals: 'hello 1'.
+	self assert: (testObject at: 'f' ifPresent: [:x | 'hello ',x asString ]) equals: 'hello nil'.
 !
 !
 
 
 testAtIfPresentIfAbsent
 testAtIfPresentIfAbsent

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini