Browse Source

Merge branch 'master' into ast-interpreter

Conflicts:
	js/Benchfib.deploy.js
	js/Canvas.deploy.js
	js/Compiler-AST.deploy.js
	js/Compiler-Core.deploy.js
	js/Compiler-IR.deploy.js
	js/Compiler-Inlining.deploy.js
	js/Compiler-Interpreter.deploy.js
	js/Compiler-Interpreter.js
	js/Compiler-Semantic.deploy.js
	js/Compiler-Tests.deploy.js
	js/Examples.deploy.js
	js/Helios-Announcements.deploy.js
	js/Helios-Browser.deploy.js
	js/Helios-Commands-Browser.deploy.js
	js/Helios-Commands-Core.deploy.js
	js/Helios-Commands-Tools.deploy.js
	js/Helios-Core.deploy.js
	js/Helios-Core.js
	js/Helios-Debugger.deploy.js
	js/Helios-Inspector.deploy.js
	js/Helios-KeyBindings.deploy.js
	js/Helios-Layout.deploy.js
	js/Helios-References.deploy.js
	js/Helios-Transcript.deploy.js
	js/Helios-Workspace-Tests.deploy.js
	js/Helios-Workspace.deploy.js
	js/IDE.deploy.js
	js/IDE.js
	js/Importer-Exporter.deploy.js
	js/Importer-Exporter.js
	js/Kernel-Announcements.deploy.js
	js/Kernel-Classes.deploy.js
	js/Kernel-Classes.js
	js/Kernel-Collections.deploy.js
	js/Kernel-Collections.js
	js/Kernel-Exceptions.deploy.js
	js/Kernel-Infrastructure.deploy.js
	js/Kernel-Methods.deploy.js
	js/Kernel-Objects.deploy.js
	js/Kernel-Tests.deploy.js
	js/Kernel-Transcript.deploy.js
	js/SUnit-Tests.deploy.js
	js/SUnit.deploy.js
	js/Spaces.deploy.js
Nicolas Petton 11 years ago
parent
commit
75c0969e7e
100 changed files with 3771 additions and 60763 deletions
  1. 10 74
      Gruntfile.js
  2. 1 2
      bin/amber
  3. 1040 433
      bin/amber-cli.js
  4. 1 0
      bin/amber.bat
  5. 7 13
      bin/amberc
  6. 1 0
      bin/amberc.bat
  7. 118 96
      bin/amberc.js
  8. 27 0
      bin/release.sh
  9. 0 3
      bin/server
  10. 0 3
      bin/server.bat
  11. 17 0
      bin/setversion.sh
  12. 1 1
      bower.json
  13. 18 5
      cli/index.html
  14. 0 769
      cli/js/AmberCli.deploy.js
  15. 8 5
      cli/js/AmberCli.js
  16. 17 17
      cli/st/AmberCli.st
  17. 37 13
      css/helios.css
  18. 44 20
      css/helios.less
  19. 10 15
      grunt/tasks/grunt-amberc.js
  20. 0 17
      grunt/tasks/grunt-css2js.js
  21. 1 1
      grunt/tasks/grunt-peg.js
  22. 11 15
      helios.html
  23. 21 10
      index.html
  24. 0 219
      js/Benchfib.deploy.js
  25. 3 2
      js/Benchfib.js
  26. 0 2829
      js/Canvas.deploy.js
  27. 3 2
      js/Canvas.js
  28. 0 1652
      js/Compiler-AST.deploy.js
  29. 3 2
      js/Compiler-AST.js
  30. 0 759
      js/Compiler-Core.deploy.js
  31. 15 14
      js/Compiler-Core.js
  32. 0 161
      js/Compiler-Exceptions.deploy.js
  33. 3 2
      js/Compiler-Exceptions.js
  34. 0 2781
      js/Compiler-IR.deploy.js
  35. 3 25
      js/Compiler-IR.js
  36. 0 1161
      js/Compiler-Inlining.deploy.js
  37. 64 63
      js/Compiler-Inlining.js
  38. 0 2657
      js/Compiler-Interpreter.deploy.js
  39. 337 263
      js/Compiler-Interpreter.js
  40. 0 1399
      js/Compiler-Semantic.deploy.js
  41. 49 55
      js/Compiler-Semantic.js
  42. 0 1529
      js/Compiler-Tests.deploy.js
  43. 3 2
      js/Compiler-Tests.js
  44. 0 86
      js/Examples.deploy.js
  45. 3 2
      js/Examples.js
  46. 0 439
      js/Helios-Announcements.deploy.js
  47. 3 2
      js/Helios-Announcements.js
  48. 0 2990
      js/Helios-Browser.deploy.js
  49. 3 2
      js/Helios-Browser.js
  50. 0 422
      js/Helios-Commands-Browser.deploy.js
  51. 3 2
      js/Helios-Commands-Browser.js
  52. 0 716
      js/Helios-Commands-Core.deploy.js
  53. 3 2
      js/Helios-Commands-Core.js
  54. 0 1345
      js/Helios-Commands-Tools.deploy.js
  55. 3 2
      js/Helios-Commands-Tools.js
  56. 0 4053
      js/Helios-Core.deploy.js
  57. 162 159
      js/Helios-Core.js
  58. 0 776
      js/Helios-Debugger.deploy.js
  59. 3 2
      js/Helios-Debugger.js
  60. 0 9
      js/Helios-Exceptions.deploy.js
  61. 3 2
      js/Helios-Exceptions.js
  62. 0 1062
      js/Helios-Inspector.deploy.js
  63. 3 2
      js/Helios-Inspector.js
  64. 0 1728
      js/Helios-KeyBindings.deploy.js
  65. 3 2
      js/Helios-KeyBindings.js
  66. 0 395
      js/Helios-Layout.deploy.js
  67. 3 2
      js/Helios-Layout.js
  68. 0 844
      js/Helios-References.deploy.js
  69. 3 2
      js/Helios-References.js
  70. 0 175
      js/Helios-Transcript.deploy.js
  71. 3 2
      js/Helios-Transcript.js
  72. 0 20
      js/Helios-Workspace-Tests.deploy.js
  73. 3 2
      js/Helios-Workspace-Tests.js
  74. 0 1579
      js/Helios-Workspace.deploy.js
  75. 3 2
      js/Helios-Workspace.js
  76. 0 5540
      js/IDE.deploy.js
  77. 141 137
      js/IDE.js
  78. 0 1450
      js/Importer-Exporter.deploy.js
  79. 929 734
      js/Importer-Exporter.js
  80. 0 557
      js/Kernel-Announcements.deploy.js
  81. 3 2
      js/Kernel-Announcements.js
  82. 0 1639
      js/Kernel-Classes.deploy.js
  83. 197 105
      js/Kernel-Classes.js
  84. 0 4301
      js/Kernel-Collections.deploy.js
  85. 215 140
      js/Kernel-Collections.js
  86. 0 455
      js/Kernel-Exceptions.deploy.js
  87. 3 2
      js/Kernel-Exceptions.js
  88. 0 1779
      js/Kernel-Infrastructure.deploy.js
  89. 188 57
      js/Kernel-Infrastructure.js
  90. 0 1390
      js/Kernel-Methods.deploy.js
  91. 3 2
      js/Kernel-Methods.js
  92. 0 2672
      js/Kernel-Objects.deploy.js
  93. 3 2
      js/Kernel-Objects.js
  94. 0 4147
      js/Kernel-Tests.deploy.js
  95. 3 221
      js/Kernel-Tests.js
  96. 0 154
      js/Kernel-Transcript.deploy.js
  97. 3 2
      js/Kernel-Transcript.js
  98. 0 431
      js/SUnit-Tests.deploy.js
  99. 3 2
      js/SUnit-Tests.js
  100. 0 925
      js/SUnit.deploy.js

+ 10 - 74
Gruntfile.js

@@ -3,8 +3,6 @@ module.exports = function(grunt) {
   grunt.loadTasks('./grunt/tasks');
 
   grunt.loadNpmTasks('grunt-contrib-jshint');
-//  grunt.loadNpmTasks('grunt-image-embed');
-//  grunt.loadNpmTasks('grunt-contrib-mincss');
 
   grunt.registerTask('default', ['peg', 'amberc:all']);
 
@@ -35,9 +33,9 @@ module.exports = function(grunt) {
       all: {
         output_dir : 'js',
         src: ['st/Kernel-Objects.st', 'st/Kernel-Classes.st', 'st/Kernel-Methods.st', 'st/Kernel-Collections.st',
-              'st/Kernel-Exceptions.st', 'st/Kernel-Transcript.st', 'st/Kernel-Announcements.st',
+              'st/Kernel-Infrastructure.st', 'st/Kernel-Exceptions.st', 'st/Kernel-Transcript.st', 'st/Kernel-Announcements.st',
               'st/Importer-Exporter.st', 'st/Compiler-Exceptions.st', 'st/Compiler-Core.st', 'st/Compiler-AST.st',
-              'st/Compiler-IR.st', 'st/Compiler-Inlining.st', 'st/Compiler-Semantic.st',
+              'st/Compiler-IR.st', 'st/Compiler-Inlining.st', 'st/Compiler-Semantic.st', 'st/Compiler-Interpreter.st',
               'st/Canvas.st', 'st/SUnit.st', 'st/IDE.st',
               'st/Kernel-Tests.st', 'st/Compiler-Tests.st', 'st/SUnit-Tests.st',
               'st/Helios-Core.st', 'st/Helios-Exceptions.st', 'st/Helios-Announcements.st',
@@ -48,32 +46,27 @@ module.exports = function(grunt) {
               'st/Helios-Workspace-Tests.st',
               'st/Benchfib.st', 'st/Examples.st', 'st/Spaces.st'
               ],
-        jsGlobals: ['navigator'],
-        deploy: true
+        jsGlobals: ['navigator']
       },
       amber_kernel: {
         output_dir : 'js',
         src: ['st/Kernel-Objects.st', 'st/Kernel-Classes.st', 'st/Kernel-Methods.st', 'st/Kernel-Collections.st',
-              'st/Kernel-Exceptions.st', 'st/Kernel-Transcript.st', 'st/Kernel-Announcements.st'],
-        deploy: true
+              'st/Kernel-Infrastructure.st', 'st/Kernel-Exceptions.st', 'st/Kernel-Transcript.st', 'st/Kernel-Announcements.st']
       },
       amber_compiler: {
         output_dir : 'js',
         src: ['st/Importer-Exporter.st', 'st/Compiler-Exceptions.st', 'st/Compiler-Core.st', 'st/Compiler-AST.st',
-              'st/Compiler-IR.st', 'st/Compiler-Inlining.st', 'st/Compiler-Semantic.st'],
-        output_name: 'Compiler',
-        deploy: true
+              'st/Compiler-IR.st', 'st/Compiler-Inlining.st', 'st/Compiler-Semantic.st', 'st/Compiler-Interpreter.st'],
+        output_name: 'Compiler'
       },
       amber_canvas: {
         output_dir : 'js',
-        src: ['st/Canvas.st', 'st/SUnit.st'],
-        deploy: true
+        src: ['st/Canvas.st', 'st/SUnit.st']
       },
       amber_IDE: {
         output_dir : 'js',
         src: ['st/IDE.st'],
-        libraries: ['Canvas'],
-        deploy: true
+        libraries: ['Canvas']
       },
       amber_tests: {
         output_dir : 'js',
@@ -105,7 +98,8 @@ module.exports = function(grunt) {
             'Compiler-IR', 'Compiler-Inlining', 'Compiler-Semantic', 'Compiler-Interpreter', '@parser'
         ],
         main_class: 'AmberCli',
-        output_name: 'amber-cli'
+        output_name: '../../bin/amber-cli',
+        amd_namespace: 'amber_cli'
       }
     },
 
@@ -115,64 +109,6 @@ module.exports = function(grunt) {
       repl: ['repl/*.js'],
       tests: ['test/*.js'],
       grunt: ['grunt.js', 'grunt/**/*.js']
-    },
-/*
-    concat: {
-      deploy: {
-        src: ['tmp/amber-compiled.deploy.js'],
-        dest: 'dist/amber-<%= pkg.version %>.deploy.js'
-      },
-
-      css: {
-        src: [
-          'css/amber.css',
-          'js/lib/CodeMirror/codemirror.css',
-          'js/lib/CodeMirror/amber.css'
-        ],
-        dest: 'tmp/amber.css'
-      },
-
-      dev: {
-        src: [
-          'js/lib/jQuery/jquery-ui-1.8.16.custom.min.js',
-          'js/lib/jQuery/jquery.textarea.js',
-          'js/lib/CodeMirror/codemirror.js',
-          'js/lib/CodeMirror/smalltalk.js',
-          'tmp/amber-compiled.js',
-          'tmp/css.js'
-        ],
-        dest: 'dist/amber-<%= pkg.version %>.js'
-      }
-    },
-
-    imageEmbed: {
-      dev: {
-        src: ['tmp/amber.css'],
-        dest: 'tmp/amber-images.css',
-        options: {baseDir: 'public'}
-      }
-    },
-
-    mincss: {
-      dev: {
-        src: ['tmp/amber-images.css'],
-        dest: 'tmp/amber.min.css'
-      }
-    },
-
-    css2js: {
-      dev: {
-        src: 'tmp/amber.min.css',
-        dest: 'tmp/css.js'
-      }
-    },
-
-    min: {
-      deploy: {
-        src: 'dist/amber-<%= pkg.version %>.deploy.js',
-        dest: 'dist/amber-<%= pkg.version %>.deploy.min.js'
-      }
     }
-*/
   });
 };

+ 1 - 2
bin/amber

@@ -1,3 +1,2 @@
 #!/bin/bash
-cd `dirname $0`/..
-node ./cli/js/amber-cli.js repl
+node `dirname $0`/amber-cli.js $@

File diff suppressed because it is too large
+ 1040 - 433
bin/amber-cli.js


+ 1 - 0
bin/amber.bat

@@ -0,0 +1 @@
+@node "%~dp0\amber-cli.js" %*

+ 7 - 13
bin/amberc

@@ -44,15 +44,15 @@ function handle_options(optionsArray, amber_dir) {
 			case '-g':
 				defaults.jsGlobals.push.apply(defaults.jsGlobals, optionsArray.shift().split(','));
 				break;
-			case '-i':
-				defaults.init = optionsArray.shift();
-				break;
 			case '-m':
 				defaults.main = optionsArray.shift();
 				break;
 			case '-M':
 				defaults.mainfile = optionsArray.shift();
 				break;
+			case '-n':
+				defaults.amd_namespace = optionsArray.shift();
+				break;
 			case '-o':
 				defaults.closure = true;
 				defaults.closure_parts = true;
@@ -66,9 +66,6 @@ function handle_options(optionsArray, amber_dir) {
 				defaults.closure_options = defaults.closure_options + ' --compilation_level ADVANCED_OPTIMIZATIONS';
 				defaults.closure_full = true;
 				break;
-			case '-d':
-				defaults.deploy = true;
-				break;
 			case '-D':
 				defaults.output_dir = optionsArray.shift();
 				break;
@@ -146,15 +143,16 @@ function print_usage() {
 	console.log('     Comma separated list of JS global variable names.');
 	console.log('     The names are added to a list containing "window", "document" and others.');
 	console.log('');
-	console.log('  -i init_file');
-	console.log('     Add library initializer <init_file> instead of default $AMBER/js/init.js ');
-	console.log('');
 	console.log('  -m main_class');
 	console.log('     Add a call to the class method main_class>>main at the end of <Program>.');
 	console.log('');
 	console.log('  -M main_file');
 	console.log('     Add <main_file> at the end of <Program.js> acting as #main.');
 	console.log('');
+	console.log('  -n amd_namespace');
+	console.log('     Export packages with <amd_namespace> as the require.js namespace.');
+	console.log('     Default value is "amber_core".');
+	console.log('');
 	console.log('  -o');
 	console.log('     Optimize each .js file using the Google closure compiler.');
 	console.log('     Using Closure compiler found at ~/compiler.jar');
@@ -165,10 +163,6 @@ function print_usage() {
 	console.log('');
 	console.log('  -A Same as -O but use --compilation_level ADVANCED_OPTIMIZATIONS');
 	console.log('');
-	console.log('  -d');
-	console.log('     Additionally export code for deploy - stripped from source etc.');
-	console.log('     Uses suffix ".deploy.js" in addition to any explicit suffic set by -s.');
-	console.log('');
 	console.log('  -D');
 	console.log('     Specifies the output directory for all generated .js files.');
 	console.log('     The hierarchy of the input files is not maintaned.');

+ 1 - 0
bin/amberc.bat

@@ -0,0 +1 @@
+@node "%~dp0\amberc" %*

+ 118 - 96
bin/amberc.js

@@ -42,32 +42,80 @@ function always_resolve(callback) {
 }
 
 
+/**
+ * Helper for concatenating Amber generated AMD modules.
+ * The produced output can be exported and run as an independent program.
+ *
+ * var concatenator = createConcatenator();
+ * concatenator.start(); // write the required AMD define header
+ * concatenator.add(module1);
+ * concatenator.addId(module1_ID);
+ * //...
+ * concatenator.finish("//some last code");
+ * var concatenation = concatenator.toString();
+ * // The variable concatenation contains the concatenated result
+ * // which can either be stored in a file or interpreted with eval().
+ */
+function createConcatenator () {
+	return {
+		elements: [],
+		ids: [],
+		add: function () {
+			this.elements.push.apply(this.elements, arguments);
+		},
+		addId: function () {
+			this.ids.push.apply(this.ids, arguments);
+		},
+		forEach: function () {
+			this.elements.forEach.apply(this.elements, arguments);
+		},
+		start: function () {
+			this.add(
+				'var define = (' + require('amdefine') + ')(), requirejs = define.require;',
+				'define("amber_vm/browser-compatibility", [], {});'
+			);
+		},
+		finish: function (realWork) {
+			this.add(
+				'define("amber_vm/_init", ["amber_vm/smalltalk","' + this.ids.join('","') + '"], function (smalltalk) {',
+				'smalltalk.initialize();',
+				realWork,
+				'});',
+				'requirejs("amber_vm/_init");'
+			);
+		},
+		toString: function () {
+			return this.elements.join('\n');
+		}
+	};
+}
+
 /**
  * Combine several async functions and evaluate callback once all of them have finished.
  * Taken from: http://howtonode.org/control-flow
  */
 function Combo(callback) {
-  this.callback = callback;
-  this.items = 0;
-  this.results = [];
+	this.callback = callback;
+	this.items = 0;
+	this.results = [];
 }
 
 Combo.prototype = {
-  add: function () {
-	var self = this,
+	add: function () {
+		var self = this,
 		id = this.items;
-	this.items++;
-	return function () {
-	  self.check(id, arguments);
-	};
-  },
-  check: function (id, arguments) {
-	this.results[id] = Array.prototype.slice.call(arguments);
-	this.items--;
-	if (this.items == 0) {
-	  this.callback.apply(this, this.results);
+		this.items++;
+		return function () {
+			self.check(id, arguments);
+		};
+	},
+	check: function (id, arguments) {
+		this.results[id] = Array.prototype.slice.call(arguments);
+		this.items--;
+		if (this.items == 0) {
+			this.callback.apply(this, this.results);
+		}
 	}
-  }
 };
 
 var path = require('path'),
@@ -83,11 +131,11 @@ var path = require('path'),
 function AmberC(amber_dir, closure_jar) {
 	this.amber_dir = amber_dir;
 	this.closure_jar = closure_jar || '';
-	this.kernel_libraries = ['@boot', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods',
-	                         'Kernel-Collections', 'Kernel-Infrastructure', 'Kernel-Exceptions', 'Kernel-Transcript',
-	                         'Kernel-Announcements'];
+	this.kernel_libraries = ['@boot', '@smalltalk', '@nil', '@_st', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods',
+							'Kernel-Collections', 'Kernel-Infrastructure', 'Kernel-Exceptions', 'Kernel-Transcript',
+							'Kernel-Announcements'];
 	this.compiler_libraries = this.kernel_libraries.concat(['@parser', 'Importer-Exporter', 'Compiler-Exceptions',
-							  'Compiler-Core', 'Compiler-AST', 'Compiler-IR', 'Compiler-Inlining', 'Compiler-Semantic']);
+							'Compiler-Core', 'Compiler-AST', 'Compiler-Exceptions', 'Compiler-IR', 'Compiler-Inlining', 'Compiler-Semantic']);
 }
 
 
@@ -101,20 +149,18 @@ var createDefaults = function(amber_dir, finished_callback){
 
 	return {
 		'load': [],
-		'init': path.join(amber_dir, 'support', 'init.js'),
 		'main': undefined,
 		'mainfile': undefined,
 		'stFiles': [],
 		'jsFiles': [],
 		'jsGlobals': [],
+		'amd_namespace': 'amber_core',
 		'closure': false,
-		'closure_parts': false,
 		'closure_full': false,
 		'closure_options': ' --language_in=ECMASCRIPT5 ',
 		'suffix': '',
 		'loadsuffix': '',
 		'suffix_used': '',
-		'deploy': false,
 		'libraries': [],
 		'compile': [],
 		'compiled': [],
@@ -138,8 +184,8 @@ AmberC.prototype.main = function(configuration, finished_callback) {
 		configuration.finished_callback = finished_callback;
 	}
 
-	if (configuration.closure || configuration.closure_parts || configuration.closure_full) {
-		configuration.deploy = true;
+	if (configuration.amd_namespace.length == 0) {
+		configuration.amd_namespace = 'amber_core';
 	}
 
 	console.ambercLog = console.log;
@@ -165,9 +211,6 @@ AmberC.prototype.check_configuration_ok = function(configuration) {
 	if (undefined === configuration) {
 		throw new Error('AmberC.check_configuration_ok(): missing configuration object');
 	}
-	if (undefined === configuration.init) {
-		throw new Error('AmberC.check_configuration_ok(): init value missing in configuration object');
-	}
 
 	if (0 === configuration.jsFiles.length && 0 === configuration.stFiles.lenght) {
 		throw new Error('AmberC.check_configuration_ok(): no files to compile/link specified in configuration object');
@@ -192,7 +235,6 @@ AmberC.prototype.check_for_closure_compiler = function(callback) {
 			if (null !== error) {
 				console.warn('java is not installed but is needed for running the Closure compiler (-O, -A or -o flags).');
 				defaults.closure = false;
-				defaults.closure_parts = false;
 				defaults.closure_full = false;
 				callback();
 				return;
@@ -201,7 +243,6 @@ AmberC.prototype.check_for_closure_compiler = function(callback) {
 				if (!exists) {
 					console.warn('Can not find Closure compiler at: ' + self.closure_jar);
 					defaults.closure = false;
-					defaults.closure_parts = false;
 					defaults.closure_full = false;
 				} else {
 					console.warn('Closure compiler found at: ' + self.closure_jar);
@@ -224,8 +265,10 @@ AmberC.prototype.check_for_closure_compiler = function(callback) {
  * @param callback gets called on success with path to .js file as parameter
  */
 AmberC.prototype.resolve_js = function(filename, callback) {
-    var special = filename[0] == "@";
-    if (special) { filename = filename.slice(1); }
+	var special = filename[0] == "@";
+	if (special) {
+		filename = filename.slice(1);
+	}
 	var baseName = path.basename(filename, '.js');
 	var jsFile = baseName + this.defaults.loadsuffix + '.js';
 	var amberJsFile = path.join(this.amber_dir, special?'support':'js', jsFile);
@@ -330,7 +373,7 @@ AmberC.prototype.resolve_libraries = function() {
 	// Resolve libraries listed in this.kernel_libraries
 	var self = this;
 	var all_resolved = new Combo(function(resolved_kernel_files, resolved_compiler_files) {
-		self.resolve_init(resolved_compiler_files[0]);
+		self.create_compiler(resolved_compiler_files[0]);
 	});
 	this.resolve_kernel(all_resolved.add());
 	this.resolve_compiler(all_resolved.add());
@@ -390,23 +433,6 @@ AmberC.prototype.resolve_compiler = function(callback) {
 };
 
 
-/**
- * Resolves default.init and adds it to compilerFiles.
- * Followed by create_compiler().
- */
-AmberC.prototype.resolve_init = function(compilerFiles) {
-	// check and add init.js
-	var initFile = this.defaults.init;
-	if ('.js' !== path.extname(initFile)) {
-		initFile = this.resolve_js(initFile);
-		this.defaults.init = initFile;
-	}
-	compilerFiles.push(initFile);
-
-	this.create_compiler(compilerFiles);
-};
-
-
 /**
  * Read all .js files needed by compiler and eval() them.
  * The finished Compiler gets stored in defaults.smalltalk.
@@ -415,13 +441,23 @@ AmberC.prototype.resolve_init = function(compilerFiles) {
 AmberC.prototype.create_compiler = function(compilerFilesArray) {
 	var self = this;
 	var compiler_files = new Combo(function() {
-		var content = '(function() {';
+		var builder = createConcatenator();
+		builder.add('(function() {');
+		builder.start();
+
 		Array.prototype.slice.call(arguments).forEach(function(data) {
 			// data is an array where index 0 is the error code and index 1 contains the data
-			content += data[1];
+			builder.add(data[1]);
+			// matches and returns the "module_id" string in the AMD definition: define("module_id", ...)
+			var match = ('' + data[1]).match(/^define\("([^"]*)"/);
+			if (match) {
+				builder.addId(match[1]);
+			}
 		});
-		content = content + 'return global_smalltalk;})();';
-		self.defaults.smalltalk = eval(content);
+		// store the generated smalltalk env in self.defaults.smalltalk
+		builder.finish('self.defaults.smalltalk = smalltalk;');
+		builder.add('})();');
+		eval(builder.toString());
 		console.log('Compiler loaded');
 		self.defaults.smalltalk.ErrorHandler._setCurrent_(self.defaults.smalltalk.RethrowErrorHandler._new());
 
@@ -491,24 +527,14 @@ AmberC.prototype.category_export = function() {
 		var jsFile = category + defaults.suffix_used + '.js';
 		jsFile = path.join(jsFilePath, jsFile);
 		defaults.compiled.push(jsFile);
-		var jsFileDeploy = category + defaults.suffix_used + '.deploy.js';
-		jsFileDeploy = path.join(jsFilePath, jsFileDeploy);
-
-		console.log('Exporting ' + (defaults.deploy ? '(debug + deploy)' : '(debug)')
-			+ ' category ' + category + ' as ' + jsFile
-			+ (defaults.deploy ? ' and ' + jsFileDeploy : ''));
 		var smalltalk = defaults.smalltalk;
 		var pluggableExporter = smalltalk.PluggableExporter;
 		var packageObject = smalltalk.Package._named_(category);
+		packageObject._transport()._namespace_(defaults.amd_namespace);
 		fs.writeFile(jsFile, smalltalk.String._streamContents_(function (stream) {
-			pluggableExporter._forRecipe_(smalltalk.Exporter._default()._recipe())._exportPackage_on_(packageObject, stream); }), function(err) {
-			if (defaults.deploy) {
-				fs.writeFile(jsFileDeploy, smalltalk.String._streamContents_(function (stream) {
-					pluggableExporter._forRecipe_(smalltalk.StrippedExporter._default()._recipe())._exportPackage_on_(packageObject, stream); }), callback);
-			} else {
+			smalltalk.AmdExporter._new()._exportPackage_on_(packageObject, stream); }), function(err) {
 				callback(null, null);
-			}
-		});
+			});
 	}, function(err, result){
 		self.verify();
 	});
@@ -524,12 +550,6 @@ AmberC.prototype.verify = function() {
 	var self = this;
 	// copy array
 	var compiledFiles = this.defaults.compiled.slice(0);
-	// append deploy files if necessary
-	if (true === this.defaults.deploy) {
-		this.defaults.compiled.forEach(function(file) {
-			compiledFiles.push(file.replace(/\.js/g, '.deploy.js'));
-		});
-	}
 
 	async_map(compiledFiles,
 		function(file, callback) {
@@ -570,20 +590,11 @@ AmberC.prototype.compose_js_files = function() {
 
 	if (0 !== defaults.compiled.length) {
 		var compiledFiles = defaults.compiled.slice(0);
-		if (true === defaults.deploy) {
-			compiledFiles = compiledFiles.map(function(file) {
-				return file.replace(/\.js$/g, '.deploy.js');
-			});
-		}
+
 		console.log('Collecting compiled files: ' + compiledFiles);
 		program_files.push.apply(program_files, compiledFiles);
 	}
 
-	if (undefined !== defaults.init) {
-		console.log('Adding initializer ' + defaults.init);
-		program_files.push(defaults.init);
-	}
-
 	console.ambercLog('Writing program file: %s.js', programFile);
 
 	var fileStream = fs.createWriteStream(programFile + defaults.suffix_used + '.js');
@@ -596,25 +607,45 @@ AmberC.prototype.compose_js_files = function() {
 		self.optimize();
 	});
 
+	var builder = createConcatenator();
+	builder.add('#!/usr/bin/env node');
+	builder.start();
+
 	program_files.forEach(function(file) {
 		if(fs.existsSync(file)) {
 			console.log('Adding : ' + file);
-			fileStream.write(fs.readFileSync(file));
+			var buffer = fs.readFileSync(file);
+			// matches and returns the "module_id" string in the AMD define: define("module_id", ...)
+			var match = buffer.toString().match(/^define\("([^"]*)"/);
+			if (match /*&& match[1].slice(0,9) !== "amber_vm/"*/) {
+				builder.addId(match[1]);
+			}
+			builder.add(buffer);
 		} else {
 			fileStream.end();
 			throw(new Error('Can not find file ' + file));
 		}
 	});
+
+	var mainFunctionOrFile = '';
+
 	if (undefined !== defaults.main) {
 		console.log('Adding call to: %s>>main', defaults.main);
-		fileStream.write('smalltalk.' + defaults.main + '._main()');
+		mainFunctionOrFile += 'smalltalk.' + defaults.main + '._main();';
 	}
 
 	if (undefined !== defaults.mainfile && fs.existsSync(defaults.mainfile)) {
 		console.log('Adding main file: ' + defaults.mainfile);
-		fileStream.write(fs.readFileSync(defaults.mainfile));
+		mainFunctionOrFile += '\n' + fs.readFileSync(defaults.mainfile);
 	}
 
+	builder.finish(mainFunctionOrFile);
+
+	console.log('Writing...');
+	builder.forEach(function (element) {
+		fileStream.write(element);
+		fileStream.write('\n');
+	});
 	console.log('Done.');
 	fileStream.end();
 };
@@ -622,7 +653,7 @@ AmberC.prototype.compose_js_files = function() {
 
 /**
  * Optimize created JavaScript files with Google Closure compiler depending
- * on the flags: defaults.closure_parts, defaults.closure_full.
+ * on the flag: defaults.closure_full.
  */
 AmberC.prototype.optimize = function() {
 	var defaults = this.defaults;
@@ -635,15 +666,6 @@ AmberC.prototype.optimize = function() {
 		}
 	});
 
-	if (defaults.closure_parts) {
-		console.log('Compiling all js files using Google closure compiler.');
-		defaults.compiled.forEach(function(file) {
-			var deployFile = file.replace(/\.js$/g, '.deploy.js');
-			console.log('Compiling ' + deployFile + ' file using Google closure compiler.');
-			var minifiedName = deployFile.replace(/\.js$/g, '.min.js');
-			self.closure_compile(deployFile, minifiedName, optimization_done.add());
-		});
-	}
 	if (defaults.closure_full && (undefined !== defaults.program)) {
 		var programFile = defaults.program;
 		if (undefined !== defaults.output_dir) {

+ 27 - 0
bin/release.sh

@@ -0,0 +1,27 @@
+#!/bin/sh
+cd `dirname "$0"`/..
+echo git reset --hard
+echo git checkout master
+echo -n "Which version are you going to publish [0 to skip]? "
+VER=`head -n 1`
+if [ "$VER" = "0" ]; then :; else
+	echo "Publishing version $VER"
+	bin/setversion.sh "$VER"
+	cp package.json package.json.bak
+	sed -e 's@/amber.git.*"@/amber.git#'"$VER"'"@' package.json.bak >package.json
+	rm package.json.bak
+	echo git commit -a -m "Release version $VER"
+	echo git tag -a "$VER"
+	echo bower upload
+	echo npm upload
+fi
+echo -n "Which version are you going to work on? "
+VERF=`head -n 1`
+VER="${VER}-pre"
+echo "Setting version $VER"
+bin/setversion.sh "$VER"
+cp package.json package.json.bak
+sed -e 's@/amber.git.*"@/amber.git"@' package.json.bak >package.json
+rm package.json.bak
+echo git commit -a -m "Working on $VERF"
+echo git push --tags

+ 0 - 3
bin/server

@@ -1,3 +0,0 @@
-#!/bin/bash
-cd `dirname $0`/..
-node ./cli/js/amber-cli.js serve $@

+ 0 - 3
bin/server.bat

@@ -1,3 +0,0 @@
-@cd "%~dp0\.." 
-@node .\cli\js\amber-cli.js serve %*
-

+ 17 - 0
bin/setversion.sh

@@ -0,0 +1,17 @@
+#!/bin/sh
+cd `dirname "$0"`
+cd ../st
+rm -f *.js
+cp Kernel-Infrastructure.st Kernel-Infrastructure.st.bak
+sed -e "/^version\$/,/^\! \!\$/ s/\^ '[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\(-pre\)\{0,1\}'\$/^ '$1'/" Kernel-Infrastructure.st.bak >Kernel-Infrastructure.st
+rm Kernel-Infrastructure.st.bak
+cd ..
+bin/amberc -d -l Kernel-Objects,Kernel-Collections Kernel-Infrastructure.st
+cd st
+mv *.js ../js
+cd ..
+for F in *.json; do
+  cp $F $F.bak
+  sed -e 's/"version": "[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\(-pre\)\{0,1\}"/"version": "'"$1"'"/' $F.bak >$F
+  rm $F.bak
+done

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "amber",
-  "version": "0.11.0",
+  "version": "0.12.0-pre",
   "main": "support/amber.js",
   "ignore": [
     "**/.*",

+ 18 - 5
cli/index.html

@@ -5,15 +5,28 @@
     <title>Amber Smalltalk</title> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <meta name="author" content="Nicolas Petton" /> 
-    <script type='text/javascript' src='../support/amber.js'></script>
+    <script type='text/javascript' src='../support/requirejs/require.min.js'></script>
+    <script src='../support/amber.js'></script>
+
   </head> 
 
   <body> 
     <script type='text/javascript'>
-      loadAmber({
-        files: ['AmberCli.js'],
-        prefix: 'cli/js',
-        ready: function() {smalltalk.Browser._open()}})
+    require.config({
+        paths: {
+            'amber_cli': 'js',
+            'amber_cli/_source': 'st'
+        }
+    });
+    require(
+        ["amber/devel",
+            "amber_cli/AmberCli" ],
+        function (smalltalk) {
+            smalltalk.defaultAmdNamespace = 'amber_cli';
+            smalltalk.initialize();
+            smalltalk.Browser._openOn_(smalltalk.AmberCli);
+        }
+    );
     </script> 
   </body> 
 </html> 

File diff suppressed because it is too large
+ 0 - 769
cli/js/AmberCli.deploy.js


+ 8 - 5
cli/js/AmberCli.js

@@ -1,4 +1,7 @@
+define("amber_cli/AmberCli", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('AmberCli');
+smalltalk.packages["AmberCli"].transport = {"type":"amd","amdNamespace":"amber_cli"};
+
 smalltalk.addClass('AmberCli', smalltalk.Object, [], 'AmberCli');
 smalltalk.AmberCli.comment="I am the Amber CLI (CommandLine Interface) tool which runs on Node.js.\x0a\x0aMy responsibility is to start different Amber programs like the FileServer or the Repl.\x0aWhich program to start is determined by the first commandline parameters passed to the AmberCli executable.\x0aUse `help` to get a list of all available options.\x0aAny further commandline parameters are passed to the specific program.\x0a\x0a## Commands\x0a\x0aNew commands can be added by creating a class side method in the `commands` protocol which takes one parameter.\x0aThis parameter is an array of all commandline options + values passed on to the program.\x0aAny `camelCaseCommand` is transformed into a commandline parameter of the form `camel-case-command` and vice versa.";
 
@@ -90,7 +93,7 @@ _st(console)._log_("Required is at least Node.js v0.8.x or greater.");
 return (-1);
 };
 args=_st(process)._argv();
-_st(args)._removeFrom_to_((1),(3));
+_st(args)._removeFrom_to_((1),(2));
 $2=_st(args)._isEmpty();
 if(smalltalk.assert($2)){
 self._help_(nil);
@@ -100,7 +103,7 @@ return $3;
 };
 return self}, function($ctx1) {$ctx1.fill(self,"main",{args:args,nodeMinorVersion:nodeMinorVersion},smalltalk.AmberCli.klass)})},
 args: [],
-source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args nodeMinorVersion |\x0a\x0a\x09nodeMinorVersion := ((process version) tokenize: '.') second asNumber.\x0a\x09nodeMinorVersion < 8 ifTrue: [\x0a\x09\x09console log: 'You are currently using Node.js ', (process version).\x0a\x09\x09console log: 'Required is at least Node.js v0.8.x or greater.'.\x0a\x09\x09^ -1.\x0a\x09].\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 3.\x0a\x09\x0a\x09(args isEmpty)\x0a\x09\x09ifTrue: [self help: nil]\x0a\x09\x09ifFalse: [^self handleArguments: args]",
+source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args nodeMinorVersion |\x0a\x0a\x09nodeMinorVersion := ((process version) tokenize: '.') second asNumber.\x0a\x09nodeMinorVersion < 8 ifTrue: [\x0a\x09\x09console log: 'You are currently using Node.js ', (process version).\x0a\x09\x09console log: 'Required is at least Node.js v0.8.x or greater.'.\x0a\x09\x09^ -1.\x0a\x09].\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 2.\x0a\x09\x0a\x09(args isEmpty)\x0a\x09\x09ifTrue: [self help: nil]\x0a\x09\x09ifFalse: [^self handleArguments: args]",
 messageSends: ["asNumber", "second", "tokenize:", "version", "ifTrue:", "log:", ",", "<", "argv", "removeFrom:to:", "ifTrue:ifFalse:", "help:", "handleArguments:", "isEmpty"],
 referencedClasses: []
 }),
@@ -455,7 +458,7 @@ category: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+smalltalk.FileServer.superclass.fn.prototype._initialize.apply(_st(self), []);
 self["@path"]=self._require_("path");
 self["@http"]=self._require_("http");
 self["@fs"]=self._require_("fs");
@@ -1381,7 +1384,7 @@ fn: function (){
 var self=this;
 function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
 return smalltalk.withContext(function($ctx1) { 
-smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
+smalltalk.Repl.superclass.fn.prototype._initialize.apply(_st(self), []);
 self["@session"]=_st($DoIt())._new();
 self["@readline"]=_st(require)._value_("readline");
 self["@util"]=_st(require)._value_("util");
@@ -1765,4 +1768,4 @@ referencedClasses: []
 }),
 smalltalk.Repl.klass);
 
-
+});

+ 17 - 17
cli/st/AmberCli.st

@@ -84,7 +84,7 @@ main
 
 	args := process argv.
 	"Remove the first args which contain the path to the node executable and the script file."
-	args removeFrom: 1 to: 3.
+	args removeFrom: 1 to: 2.
 	
 	(args isEmpty)
 		ifTrue: [self help: nil]
@@ -903,12 +903,12 @@ My runtime requirement is a functional Node.js executable with working Readline
 
 !Repl methodsFor: 'accessing'!
 
-prompt
-	^'amber >> '
-!
-
 commands
 	^ commands
+!
+
+prompt
+	^'amber >> '
 ! !
 
 !Repl methodsFor: 'actions'!
@@ -955,14 +955,14 @@ initialize
 	self setupCommands
 !
 
-setupHotkeys
-	process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].
-!
-
 setupCommands
 	commands := Dictionary from: {
 		{':q'} -> [process exit].
 		{''} -> [interface prompt]}
+!
+
+setupHotkeys
+	process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].
 ! !
 
 !Repl methodsFor: 'private'!
@@ -987,6 +987,14 @@ assignNewVariable: buffer do: aBlock
 		aBlock value: varName value: value]
 !
 
+clearScreen
+	| esc cls |
+	esc := String fromCharCode: 27.
+	cls := esc, '[2J', esc, '[0;0f'.
+	process stdout write: cls.
+	interface prompt
+!
+
 encapsulateVariable: aString withValue: anObject in: aClass
 	"Add getter and setter for given variable to session."
 	| compiler |
@@ -1033,14 +1041,6 @@ onKeyPress: key
 		ifTrue: [self clearScreen]
 !
 
-clearScreen
-	| esc cls |
-	esc := String fromCharCode: 27.
-	cls := esc, '[2J', esc, '[0;0f'.
-	process stdout write: cls.
-	interface prompt
-!
-
 parseAssignment: aString do: aBlock
 	"Assigns a new variable if the given string is an assignment expression. Calls the given block with name and value.
 	 If the string is not one no variable will be assigned and the block will be called with nil for both arguments."

+ 37 - 13
css/helios.css

@@ -1,8 +1,3 @@
-body {
-  font-size: 11px;
-  font-family: "Lucida Grande", helvetica, arial, sans;
-  background: #eee;
-}
 .clearfix:after {
   content: ".";
   display: block;
@@ -20,6 +15,11 @@ html[xmlns] .clearfix {
 * html .clearfix {
   height: 1%;
 }
+#helios {
+    font-size: 11px;
+    font-family: "Lucida Grande", helvetica, arial, sans;
+    background: #eee;
+}
 #helios a {
   cursor: pointer;
 }
@@ -35,7 +35,6 @@ html[xmlns] .clearfix {
   overflow: hidden;
   height: 100%;
   width: 100%;
-  background: #fff;
 }
 #helios .CodeMirror-hints {
   border-radius: 0;
@@ -111,7 +110,8 @@ html[xmlns] .clearfix {
   font-size: 11px;
   line-height: 16px;
 }
-#helios .navbar-fixed-top a span {
+#helios .navbar-fixed-top a span,
+#helios .dialog .nav a span {
   padding: 1px;
   padding-left: 18px;
   background-position: center left;
@@ -127,22 +127,28 @@ html[xmlns] .clearfix {
   background-position: center left;
   margin-top: 2px;
 }
-#helios .navbar-fixed-top a span.references {
+#helios .navbar-fixed-top a span.references,
+#helios .dialog .nav a span.references {
   background-image: url('../images/references.png');
 }
-#helios .navbar-fixed-top a span.browser {
+#helios .navbar-fixed-top a span.browser,
+#helios .dialog .nav a span.browser {
   background-image: url('../images/browser.png');
 }
-#helios .navbar-fixed-top a span.sunit {
+#helios .navbar-fixed-top a span.sunit,
+#helios .dialog .nav a span.sunit {
   background-image: url('../images/sunit.png');
 }
-#helios .navbar-fixed-top a span.workspace {
+#helios .navbar-fixed-top a span.workspace,
+#helios .dialog .nav a span.workspace {
   background-image: url('../images/workspace.png');
 }
-#helios .navbar-fixed-top a span.debugger {
+#helios .navbar-fixed-top a span.debugger,
+#helios .dialog .nav a span.debugger {
   background-image: url('../images/debugger.png');
 }
-#helios .navbar-fixed-top a span.inspector {
+#helios .navbar-fixed-top a span.inspector,
+#helios .dialog .nav a span.inspector {
   background-image: url('../images/inspector.png');
 }
 #helios .navbar-fixed-top .navbar-inner {
@@ -632,6 +638,24 @@ html[xmlns] .clearfix {
   -moz-transition: top .5s;
   -o-transition: top .5s;
 }
+#helios .confirmation .hl_widget:focus,
+#helios .dialog .hl_widget:focus {
+  outline: 0 none;
+}
+#helios .confirmation .hl_widget .form-actions,
+#helios .dialog .hl_widget .form-actions {
+  padding: 0;
+  border: 0;
+}
+#helios .confirmation .nav,
+#helios .dialog .nav {
+  border: 1px solid #999;
+}
+#helios .confirmation .nav span,
+#helios .dialog .nav span {
+  font-size: 11px;
+  font-weight: normal;
+}
 #helios .confirmation .title,
 #helios .dialog .title {
   font-size: 16px;

+ 44 - 20
css/helios.less

@@ -44,7 +44,6 @@ html[xmlns] .clearfix {
 	overflow: hidden;
 	height: 100%;
 	width: 100%;
-	background: #fff;
     }
 
     .CodeMirror-hints {
@@ -133,7 +132,8 @@ html[xmlns] .clearfix {
 	line-height: 16px;
     }
 
-    .navbar-fixed-top a span {
+    .navbar-fixed-top a span,
+    .dialog .nav a span {
 	padding: 1px;
 	padding-left: 18px;
 	background-position: center left;
@@ -151,27 +151,31 @@ html[xmlns] .clearfix {
 	margin-top: 2px;
     }
 
-    .navbar-fixed-top a span.references {
-	background-image: url('../images/references.png')
-    }
+    .navbar-fixed-top a,
+    .dialog .nav a {
 
-    .navbar-fixed-top a span.browser {
-	background-image: url('../images/browser.png')
-    }
+	span.references {
+	    background-image: url('../images/references.png')
+	}
 
-    .navbar-fixed-top a span.sunit {
-	background-image: url('../images/sunit.png')
-    }
+	span.browser {
+	    background-image: url('../images/browser.png')
+	}
 
-    .navbar-fixed-top a span.workspace {
-	background-image: url('../images/workspace.png')
-    }
+	span.sunit {
+	    background-image: url('../images/sunit.png')
+	}
 
-    .navbar-fixed-top a span.debugger {
-	background-image: url('../images/debugger.png')
-    }
-    .navbar-fixed-top a span.inspector {
-	background-image: url('../images/inspector.png')
+	span.workspace {
+	    background-image: url('../images/workspace.png')
+	}
+
+	span.debugger {
+	    background-image: url('../images/debugger.png')
+	}
+	span.inspector {
+	    background-image: url('../images/inspector.png')
+	}
     }
 
 
@@ -732,6 +736,27 @@ html[xmlns] .clearfix {
 	-moz-transition: top .5s;
 	-o-transition: top .5s;
 
+	.hl_widget {
+	
+	    &:focus {
+		outline: 0 none;
+	    }
+
+	    .form-actions {
+		padding: 0;
+		border: 0;
+	    }
+	}
+
+	.nav {
+	    border: 1px solid #999;
+
+	    span {
+		font-size: 11px;
+		font-weight: normal;
+	    }
+	}
+
 	.title {
 	    font-size: 16px;
 	    margin-bottom: 15px;
@@ -752,7 +777,6 @@ html[xmlns] .clearfix {
 	    width: 235px;
 	}
 
-
 	.progress {
 	    height: 5px;
 

+ 10 - 15
grunt/tasks/grunt-amberc.js

@@ -18,12 +18,11 @@ module.exports = function(grunt) {
          libraries: 'Canvas',                   // optional
          jsGlobals: ['global1', 'global2'],     // optional
          main_class: 'HelloWorld',              // optional
-         output_name: 'helloWorld',            // optional
-         init: 'myInit',                       // optional
-         main_file: 'myMain.js',               // optional
-         deploy: true,                         // optional
-         output_suffix: 'mySuffix',            // optional
-         library_suffix: '-0.9'                // optional
+         output_name: 'helloWorld',             // optional
+         amd_namespace: 'MyNamespace',          // optional (default: 'amber')
+         main_file: 'myMain.js',                // optional
+         output_suffix: 'mySuffix',             // optional
+         library_suffix: '-0.9'                 // optional
        },
      },
 
@@ -49,8 +48,7 @@ module.exports = function(grunt) {
     // generate the amberc configuration out of the given target properties
     var configuration = generateCompilerConfiguration(this.data, grunt.config('amberc.options.amber_dir'));
 
-    // run the compiler
-    // change back to the old working directory and call the async callback once finished
+    // run the compiler and call the async callback once finished
     var self = this;
     compiler.main(configuration, function(){
       // signal that task has finished
@@ -67,10 +65,6 @@ module.exports = function(grunt) {
     if (undefined !== libraries) {
       configuration.load = libraries;
     }
-    var initFile = data.init;
-    if (undefined !== initFile) {
-      configuration.init = initFile;
-    }
     var mainClass = data.main_class;
     if (undefined !== mainClass) {
       configuration.main = mainClass;
@@ -79,9 +73,6 @@ module.exports = function(grunt) {
     if (undefined !== mainFile) {
       configuration.mainfile = mainFile;
     }
-    if (true === data.deploy) {
-      configuration.deploy = true;
-    }
     var outputSuffix = data.output_suffix;
     if (undefined !== outputSuffix) {
       configuration.suffix = outputSuffix;
@@ -110,6 +101,10 @@ module.exports = function(grunt) {
     if (undefined !== outputName) {
       configuration.program = outputName;
     }
+    var amdNamespace = data.amd_namespace;
+    if (undefined !== amdNamespace) {
+      configuration.amd_namespace = amdNamespace;
+    }
     if (undefined !== data.output_dir) {
       configuration.output_dir = data.output_dir;
     }

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

@@ -1,17 +0,0 @@
-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.');
-  });
-
-};

+ 1 - 1
grunt/tasks/grunt-peg.js

@@ -23,7 +23,7 @@ module.exports = function(grunt) {
       export_var: 'module.exports'
     });
     var parser = PEG.buildParser(grunt.file.read(this.data.src), options);
-    var content = '(function(smalltalk,nil){\n'+options.export_var + ' = ' + parser.toSource() + ';\n})(global_smalltalk,global_nil);';
+    var content = 'define("amber_vm/parser", ["./smalltalk", "./nil"], function(smalltalk, nil) {\n'+options.export_var + ' = ' + parser.toSource() + ';\n});';
     grunt.file.write(this.data.dest, content);
   });
 };

+ 11 - 15
helios.html

@@ -4,30 +4,26 @@
     <title>Helios IDE</title>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <meta name="author" content="Nicolas Petton" />
-    <link rel="stylesheet" type="text/css" href='support/bootstrap/css/bootstrap.css' />
     <link type="image/x-icon" rel="shortcut icon" href="/favicon.ico"/>
-    <link rel="stylesheet" type="text/css" href='css/helios.css' />
   </head>
   <body id="helios">
     <div id="helper">Loading Helios...</div>
 
     <div id="includes">
-      <script type='text/javascript' src='support/jQuery/jquery-1.8.2.min.js'></script>
-      <script type='text/javascript' src='support/jQuery/jquery-ui-1.8.24.custom.min.js'></script>
-      <script type='text/javascript' src='support/bootstrap/js/bootstrap.js'></script>
-      <script type='text/javascript' src='support/showdown/showdown.js'></script>
       <script type='text/javascript' src='support/amber.js'></script>
+      <script type='text/javascript' src='support/requirejs/require.min.js'></script>
       <script type='text/javascript'>
-        loadAmber({packages: [
-          'Spaces', 'Helios-Core', 'Helios-Exceptions', 'Helios-Commands-Core',
-          'Helios-Commands-Tools', 'Helios-Commands-Browser', 'Helios-Layout', 'Helios-KeyBindings',
-          'Helios-Browser', 'Helios-Workspace', 'Helios-Transcript', 'Helios-Debugger',
-          'Helios-Inspector', 'Helios-References', 'Helios-Announcements', 'Helios-Workspace-Tests'
-        ]})
+          require(
+                  ["amber/helios"],
+                  function (smalltalk) {
+                      window.onbeforeunload = function() {
+                          return 'Do you want to close Amber? All uncommitted changes will be lost.';
+                      };
 
-        window.onbeforeunload = function() {
-          return 'Do you want to close Amber? All uncommitted changes will be lost.';
-        };
+                      smalltalk.defaultAmdNamespace = "amber_core";
+                      smalltalk.initialize();
+                  }
+          );
       </script>
     </div>
   </body>

+ 21 - 10
index.html

@@ -1,14 +1,25 @@
-<!DOCTYPE html> 
-<html> 
+<!DOCTYPE html>
+<html>
 
-  <head> 
-    <title>Amber Smalltalk</title> 
-    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
-    <meta name="author" content="Nicolas Petton" /> 
+<head>
+    <title>Amber Smalltalk</title>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <meta name="author" content="Nicolas Petton"/>
     <script type='text/javascript' src='support/amber.js'></script>
-  </head> 
+    <script type='text/javascript' src='support/requirejs/require.min.js'></script>
+</head>
 
-  <body> 
-    <script type='text/javascript'> loadAmber({ready: function(smalltalk) {smalltalk.Browser._open()}}) </script>
-  </body> 
+<body>
+<script type='text/javascript'>
+    require(
+        ["amber/devel"],
+        function (smalltalk) {
+            smalltalk.defaultAmdNamespace = "amber_core";
+            smalltalk.initialize();
+
+            smalltalk.Browser._open()
+        }
+    );
+</script>
+</body>
 </html> 

+ 0 - 219
js/Benchfib.deploy.js

@@ -1,219 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Benchfib');
-
-smalltalk.addClass('Benchfib', smalltalk.Object, [], 'Benchfib');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "main",
-fn: function (){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-result=(0)._tinyBenchmarks();
-_st(console)._log_("0 tinyBenchmarks => ".__comma(result));
-return self}, function($ctx1) {$ctx1.fill(self,"main",{result:result},smalltalk.Benchfib.klass)})},
-messageSends: ["tinyBenchmarks", "log:", ","]}),
-smalltalk.Benchfib.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "benchFib",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self.__lt((2));
-if(smalltalk.assert($2)){
-$1=(1);
-} else {
-$1=_st(_st(_st(self.__minus((1)))._benchFib()).__plus(_st(self.__minus((2)))._benchFib())).__plus((1));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"benchFib",{},smalltalk.Number)})},
-messageSends: ["ifTrue:ifFalse:", "<", "+", "benchFib", "-"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "benchmark",
-fn: function (){
-var self=this;
-var size,flags,prime,k,count;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-size=(8190);
-(1)._to_do_(self,(function(iter){
-return smalltalk.withContext(function($ctx2) {
-count=(0);
-count;
-flags=_st($Array())._new();
-flags;
-_st(size)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(flags)._add_(true);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return (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;
-k=_st(i).__plus(prime);
-k;
-_st((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(k).__lt_eq(size);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx4) {
-_st(flags)._at_put_(k,false);
-k=_st(k).__plus(prime);
-return k;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
-count=_st(count).__plus((1));
-return count;
-};
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1,1)})}));
-$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:", "at:", "+", "whileTrue:", "<=", "at:put:"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsbenchFib",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-if (this < 2) {
-return 1;
-} else {
-return (this-1)._jsbenchFib() + (this-2)._jsbenchFib() + 1;};
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchFib",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsbenchmark",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-var size = 8190;
-var count;
-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;
-		}
-	}
-}
-return count;
-return self}, function($ctx1) {$ctx1.fill(self,"jsbenchmark",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jstinyBenchmarks",
-fn: function (){
-var self=this;
-var t1,t2,r,n1,n2;
-function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-n1=(1);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-t1=_st($Date())._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(n1)._jsbenchmark();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-t1;
-return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n1=_st(n1).__star((2));
-return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-n2=(28);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-t2=_st($Date())._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
-r=_st(n2)._jsbenchFib();
-return r;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-t2;
-return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n2=_st(n2).__plus((1));
-return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
-$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;
-}, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
-messageSends: ["whileTrue:", "millisecondsToRun:", "jsbenchmark", "<", "*", "jsbenchFib", "+", ",", "printString", "/"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tinyBenchmarks",
-fn: function (){
-var self=this;
-var t1,t2,r,n1,n2;
-function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-n1=(1);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-t1=_st($Date())._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(n1)._benchmark();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-t1;
-return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n1=_st(n1).__star((2));
-return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-n2=(16);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-t2=_st($Date())._millisecondsToRun_((function(){
-return smalltalk.withContext(function($ctx3) {
-r=_st(n2)._benchFib();
-return r;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-t2;
-return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n2=_st(n2).__plus((1));
-return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
-$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;
-}, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
-messageSends: ["whileTrue:", "millisecondsToRun:", "benchmark", "<", "*", "benchFib", "+", ",", "printString", "/"]}),
-smalltalk.Number);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Benchfib.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Benchfib", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Benchfib');
+smalltalk.packages["Benchfib"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Benchfib', smalltalk.Object, [], 'Benchfib');
 
@@ -251,4 +252,4 @@ referencedClasses: ["Date"]
 }),
 smalltalk.Number);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 2829
js/Canvas.deploy.js

@@ -1,2829 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Canvas');
-
-smalltalk.addClass('BrowserInterface', smalltalk.Object, [], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ajax:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(jQuery)._ajax_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},smalltalk.BrowserInterface)})},
-messageSends: ["ajax:"]}),
-smalltalk.BrowserInterface);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alert:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(window)._alert_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},smalltalk.BrowserInterface)})},
-messageSends: ["alert:"]}),
-smalltalk.BrowserInterface);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(window)._confirm_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},smalltalk.BrowserInterface)})},
-messageSends: ["confirm:"]}),
-smalltalk.BrowserInterface);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAvailable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return typeof window !== "undefined" && typeof jQuery !== "undefined";
-return self}, function($ctx1) {$ctx1.fill(self,"isAvailable",{},smalltalk.BrowserInterface)})},
-messageSends: []}),
-smalltalk.BrowserInterface);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "prompt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(window)._prompt_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},smalltalk.BrowserInterface)})},
-messageSends: ["prompt:"]}),
-smalltalk.BrowserInterface);
-
-
-smalltalk.BrowserInterface.klass.iVarNames = ['uiWorker','ajaxWorker'];
-
-smalltalk.addClass('HTMLCanvas', smalltalk.Object, ['root'], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "a",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("a");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"a",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "abbr",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("abbr");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"abbr",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "address",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("address");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"address",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "area",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("area");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"area",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "article",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("article");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"article",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "aside",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("aside");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"aside",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "audio",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("audio");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"audio",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "base",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("base");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"base",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "blockquote",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("blockquote");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"blockquote",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "body",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("body");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"body",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "br",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("br");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"br",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "button",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("button");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"button",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canvas",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("canvas");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canvas",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "caption",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("caption");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"caption",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cite",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("cite");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cite",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "code",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("code");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"code",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "col",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("col");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"col",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "colgroup",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("colgroup");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"colgroup",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "command",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("command");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"command",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "datalist",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("datalist");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"datalist",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("dd");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"dd",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "del",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("del");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"del",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "details",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("details");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"details",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "div",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("div");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"div",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "div:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._div())._with_(aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"div:",{aBlock:aBlock},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "div"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dl",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("dl");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"dl",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("dt");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"dt",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "em",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("em");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"em",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "embed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("embed");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"embed",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "entity:",
-fn: function (aString){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-result=_st(_st("<span />"._asJQuery())._html_(_st("&".__comma(aString)).__comma(";")))._text();
-$1=_st(_st(result)._size()).__eq((1));
-if(! smalltalk.assert($1)){
-self._error_("Not an HTML entity: ".__comma(aString));
-};
-self._with_(result);
-return self}, function($ctx1) {$ctx1.fill(self,"entity:",{aString:aString,result:result},smalltalk.HTMLCanvas)})},
-messageSends: ["text", "html:", "asJQuery", ",", "ifFalse:", "=", "size", "error:", "with:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fieldset",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("fieldset");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fieldset",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "figcaption",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("figcaption");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"figcaption",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "figure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("figure");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"figure",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "footer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("footer");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"footer",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "form",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("form");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"form",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h1",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h1");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h1",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h1:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h1())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h1:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h1"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h2",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h2");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h2",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h2:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h2())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h2:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h2"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h3",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h3");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h3",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h3:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h3())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h3:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h3"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h4",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h4");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h4",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h4:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h4())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h4:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h4"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h5",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h5");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h5",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h5:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h5())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h5:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h5"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h6",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("h6");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h6",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "h6:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._h6())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"h6:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "h6"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "head",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("head");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"head",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "header",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("header");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"header",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hgroup",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("hgroup");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hgroup",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hr",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("hr");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hr",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "html",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("html");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"html",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "iframe",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("iframe");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"iframe",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "iframe:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._iframe())._src_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"iframe:",{aString:aString},smalltalk.HTMLCanvas)})},
-messageSends: ["src:", "iframe"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "img",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("img");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"img",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "img:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._img())._src_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"img:",{aString:aString},smalltalk.HTMLCanvas)})},
-messageSends: ["src:", "img"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $TagBrush(){return smalltalk.TagBrush||(typeof TagBrush=="undefined"?nil:TagBrush)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.HTMLCanvas.superclass.fn.prototype._initialize.apply(_st(self), []);
-$1=self["@root"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@root"]=_st($TagBrush())._fromString_canvas_("div",self);
-self["@root"];
-} else {
-$1;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HTMLCanvas)})},
-messageSends: ["initialize", "ifNil:", "fromString:canvas:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromJQuery:",
-fn: function (aJQuery){
-var self=this;
-function $TagBrush(){return smalltalk.TagBrush||(typeof TagBrush=="undefined"?nil:TagBrush)}
-return smalltalk.withContext(function($ctx1) { 
-self["@root"]=_st($TagBrush())._fromJQuery_canvas_(aJQuery,self);
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromJQuery:",{aJQuery:aJQuery},smalltalk.HTMLCanvas)})},
-messageSends: ["fromJQuery:canvas:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "input",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("input");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"input",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("label");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "legend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("legend");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"legend",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "li",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("li");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"li",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "li:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._li())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"li:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "li"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "link",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("link");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"link",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "map",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("map");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"map",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "mark",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("mark");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"mark",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menu",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("menu");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"menu",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "meta",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("meta");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"meta",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nav",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("nav");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nav",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newTag:",
-fn: function (aString){
-var self=this;
-function $TagBrush(){return smalltalk.TagBrush||(typeof TagBrush=="undefined"?nil:TagBrush)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($TagBrush())._fromString_canvas_(aString,self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newTag:",{aString:aString},smalltalk.HTMLCanvas)})},
-messageSends: ["fromString:canvas:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "noscript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("noscript");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"noscript",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "object",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("object");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("ol");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ol",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ol:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._ol())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ol:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "ol"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "optgroup",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("optgroup");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"optgroup",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "option",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("option");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"option",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "output",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("output");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"output",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "p",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("p");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"p",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "p:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._p())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"p:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "p"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "param",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("param");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"param",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pre",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("pre");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pre",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "progress",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("progress");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"progress",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "root",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@root"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"root",{},smalltalk.HTMLCanvas)})},
-messageSends: []}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "root:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@root"]=aTagBrush;
-return self}, function($ctx1) {$ctx1.fill(self,"root:",{aTagBrush:aTagBrush},smalltalk.HTMLCanvas)})},
-messageSends: []}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "script",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("script");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"script",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "section",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("section");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"section",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "select",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("select");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"select",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "small",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("small");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"small",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippet:",
-fn: function (anElement){
-var self=this;
-var clone,caret;
-function $TagBrush(){return smalltalk.TagBrush||(typeof TagBrush=="undefined"?nil:TagBrush)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-clone=_st(_st(anElement)._asJQuery())._clone();
-self._with_(_st($TagBrush())._fromJQuery_canvas_(clone,self));
-caret=_st(clone)._find_("[data-snippet=\x22*\x22]");
-$1=_st(_st(caret)._toArray())._isEmpty();
-if(smalltalk.assert($1)){
-caret=clone;
-caret;
-};
-$2=_st($TagBrush())._fromJQuery_canvas_(_st(caret)._removeAttr_("data-snippet"),self);
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"snippet:",{anElement:anElement,clone:clone,caret:caret},smalltalk.HTMLCanvas)})},
-messageSends: ["clone", "asJQuery", "with:", "fromJQuery:canvas:", "find:", "ifTrue:", "isEmpty", "toArray", "removeAttr:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("source");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "span",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("span");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"span",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "span:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._span())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"span:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "span"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "strong",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("strong");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"strong",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "strong:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._strong())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"strong:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "strong"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "style",
-fn: function (){
-var self=this;
-function $StyleTag(){return smalltalk.StyleTag||(typeof StyleTag=="undefined"?nil:StyleTag)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@root"])._addBrush_(_st($StyleTag())._canvas_(self));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"style",{},smalltalk.HTMLCanvas)})},
-messageSends: ["addBrush:", "canvas:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "style:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._style();
-_st($2)._with_(aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"style:",{aString:aString},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "style", "yourself"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sub",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("sub");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sub",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "summary",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("summary");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"summary",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sup",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("sup");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sup",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "table",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("table");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"table",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tag:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@root"])._addBrush_(self._newTag_(aString));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tag:",{aString:aString},smalltalk.HTMLCanvas)})},
-messageSends: ["addBrush:", "newTag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tbody",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("tbody");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tbody",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "td",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("td");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"td",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "textarea",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("textarea");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"textarea",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tfoot",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("tfoot");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tfoot",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "th",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("th");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"th",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "thead",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("thead");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"thead",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "time",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("time");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"time",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "title",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("title");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"title",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tr",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("tr");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tr",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ul",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("ul");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ul",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ul:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._ul())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ul:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "ul"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "video",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tag_("video");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"video",{},smalltalk.HTMLCanvas)})},
-messageSends: ["tag:"]}),
-smalltalk.HTMLCanvas);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._root())._with_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},smalltalk.HTMLCanvas)})},
-messageSends: ["with:", "root"]}),
-smalltalk.HTMLCanvas);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browserVersion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(jQuery)._at_("browser"))._version();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"browserVersion",{},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["version", "at:"]}),
-smalltalk.HTMLCanvas.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMSIE",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("msie"))._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isMSIE",{},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["notNil", "at:"]}),
-smalltalk.HTMLCanvas.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMozilla",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("mozilla"))._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isMozilla",{},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["notNil", "at:"]}),
-smalltalk.HTMLCanvas.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOpera",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("opera"))._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOpera",{},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["notNil", "at:"]}),
-smalltalk.HTMLCanvas.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isWebkit",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("webkit"))._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isWebkit",{},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["notNil", "at:"]}),
-smalltalk.HTMLCanvas.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onJQuery:",
-fn: function (aJQuery){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._basicNew();
-_st($2)._initializeFromJQuery_(aJQuery);
-_st($2)._initialize();
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"onJQuery:",{aJQuery:aJQuery},smalltalk.HTMLCanvas.klass)})},
-messageSends: ["initializeFromJQuery:", "basicNew", "initialize", "yourself"]}),
-smalltalk.HTMLCanvas.klass);
-
-
-smalltalk.addClass('HTMLSnippet', smalltalk.Object, ['snippets'], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromJQuery:",
-fn: function (aJQuery){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._snippetsFromJQuery_(aJQuery))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._installSnippetFromJQuery_(_st(each)._asJQuery());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromJQuery:",{aJQuery:aJQuery},smalltalk.HTMLSnippet)})},
-messageSends: ["do:", "snippetsFromJQuery:", "installSnippetFromJQuery:", "asJQuery"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "installSnippetFromJQuery:",
-fn: function (element){
-var self=this;
-var name;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-name=_st(element)._attr_("data-snippet");
-$1=_st(name).__eq("*");
-if(! smalltalk.assert($1)){
-$2=_st("^\x5c*"._asRegexp())._test_(name);
-if(smalltalk.assert($2)){
-name=_st(name)._allButFirst();
-name;
-_st(element)._attr_put_("data-snippet","*");
-} else {
-_st(element)._removeAttr_("data-snippet");
-};
-self._snippetAt_install_(name,_st(_st(element)._detach())._get_((0)));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"installSnippetFromJQuery:",{element:element,name:name},smalltalk.HTMLSnippet)})},
-messageSends: ["attr:", "ifFalse:", "=", "ifTrue:ifFalse:", "test:", "asRegexp", "allButFirst", "attr:put:", "removeAttr:", "snippetAt:install:", "get:", "detach"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippetAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._snippets())._at_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"snippetAt:",{aString:aString},smalltalk.HTMLSnippet)})},
-messageSends: ["at:", "snippets"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippetAt:compile:",
-fn: function (aString,anElement){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-function $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($ClassBuilder())._new())._installMethod_forClass_category_(_st(_st((function(htmlReceiver){
-return smalltalk.withContext(function($ctx2) {
-return _st(htmlReceiver)._snippet_(anElement);
-}, function($ctx2) {$ctx2.fillBlock({htmlReceiver:htmlReceiver},$ctx1,1)})}))._currySelf())._asCompiledMethod_(aString),$HTMLCanvas(),"**snippets");
-return self}, function($ctx1) {$ctx1.fill(self,"snippetAt:compile:",{aString:aString,anElement:anElement},smalltalk.HTMLSnippet)})},
-messageSends: ["installMethod:forClass:category:", "new", "asCompiledMethod:", "currySelf", "snippet:"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippetAt:install:",
-fn: function (aString,anElement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._snippets())._at_put_(aString,anElement);
-self._snippetAt_compile_(aString,anElement);
-return self}, function($ctx1) {$ctx1.fill(self,"snippetAt:install:",{aString:aString,anElement:anElement},smalltalk.HTMLSnippet)})},
-messageSends: ["at:put:", "snippets", "snippetAt:compile:"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippets",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@snippets"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@snippets"]=smalltalk.HashedCollection._from_([]);
-$1=self["@snippets"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"snippets",{},smalltalk.HTMLSnippet)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HTMLSnippet);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "snippetsFromJQuery:",
-fn: function (aJQuery){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aJQuery)._find_("[data-snippet]"))._toArray();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"snippetsFromJQuery:",{aJQuery:aJQuery},smalltalk.HTMLSnippet)})},
-messageSends: ["toArray", "find:"]}),
-smalltalk.HTMLSnippet);
-
-
-smalltalk.HTMLSnippet.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@current"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.HTMLSnippet.klass)})},
-messageSends: []}),
-smalltalk.HTMLSnippet.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ensureCurrent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self["@current"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=smalltalk.HTMLSnippet.klass.superclass.fn.prototype._new.apply(_st(self), []);
-_st($2)._initializeFromJQuery_(_st(document)._asJQuery());
-$3=_st($2)._yourself();
-self["@current"]=$3;
-self["@current"];
-} else {
-$1;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"ensureCurrent",{},smalltalk.HTMLSnippet.klass)})},
-messageSends: ["ifNil:", "initializeFromJQuery:", "new", "asJQuery", "yourself"]}),
-smalltalk.HTMLSnippet.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.HTMLSnippet.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-$1=self._isDOMAvailable();
-if(smalltalk.assert($1)){
-self._ensureCurrent();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HTMLSnippet.klass)})},
-messageSends: ["initialize", "ifTrue:", "isDOMAvailable", "ensureCurrent"]}),
-smalltalk.HTMLSnippet.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isDOMAvailable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return typeof document !== 'undefined' ;
-return self}, function($ctx1) {$ctx1.fill(self,"isDOMAvailable",{},smalltalk.HTMLSnippet.klass)})},
-messageSends: []}),
-smalltalk.HTMLSnippet.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.HTMLSnippet.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.HTMLSnippet.klass);
-
-
-smalltalk.addClass('TagBrush', smalltalk.Object, ['canvas', 'element'], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accesskey:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("accesskey",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"accesskey:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "action:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("action",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"action:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._appendChild_(_st(aTagBrush)._element());
-$1=aTagBrush;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"addBrush:",{aTagBrush:aTagBrush},smalltalk.TagBrush)})},
-messageSends: ["appendChild:", "element"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "align:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("align",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"align:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("alt",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"alt:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "append:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(anObject)._appendToBrush_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"append:",{anObject:anObject},smalltalk.TagBrush)})},
-messageSends: ["appendToBrush:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendBlock:",
-fn: function (aBlock){
-var self=this;
-var root;
-return smalltalk.withContext(function($ctx1) { 
-root=_st(self["@canvas"])._root();
-_st(self["@canvas"])._root_(self);
-_st(aBlock)._value_(self["@canvas"]);
-_st(self["@canvas"])._root_(root);
-return self}, function($ctx1) {$ctx1.fill(self,"appendBlock:",{aBlock:aBlock,root:root},smalltalk.TagBrush)})},
-messageSends: ["root", "root:", "value:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendChild:",
-fn: function (anElement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var element=self['@element'];
-	if (null == element.canHaveChildren || element.canHaveChildren) {
-		element.appendChild(anElement);
-	} else {
-		element.text = String(element.text) + anElement.innerHTML;
-	} ;
-return self}, function($ctx1) {$ctx1.fill(self,"appendChild:",{anElement:anElement},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._appendChild_(self._createTextNodeFor_(aString));
-return self}, function($ctx1) {$ctx1.fill(self,"appendString:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["appendChild:", "createTextNodeFor:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aTagBrush)._addBrush_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"appendToBrush:",{aTagBrush:aTagBrush},smalltalk.TagBrush)})},
-messageSends: ["addBrush:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJQuery",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._element())._asJQuery();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJQuery",{},smalltalk.TagBrush)})},
-messageSends: ["asJQuery", "element"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (aString,aValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@element'].setAttribute(aString, aValue);
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,aValue:aValue},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "class:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@element'].className = aString;
-return self}, function($ctx1) {$ctx1.fill(self,"class:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cols:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("cols",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"cols:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contenteditable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("contenteditable",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"contenteditable:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._empty();
-$2=_st($1)._append_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"contents:",{anObject:anObject},smalltalk.TagBrush)})},
-messageSends: ["empty", "append:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contextmenu:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("contextmenu",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"contextmenu:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createElementFor:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return document.createElement(String(aString));
-return self}, function($ctx1) {$ctx1.fill(self,"createElementFor:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createTextNodeFor:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return document.createTextNode(String(aString));
-return self}, function($ctx1) {$ctx1.fill(self,"createTextNodeFor:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "draggable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("draggable",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"draggable:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "element",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@element"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"element",{},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "empty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._empty();
-return self}, function($ctx1) {$ctx1.fill(self,"empty",{},smalltalk.TagBrush)})},
-messageSends: ["empty", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "for:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("for",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "height:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("height",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"height:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hidden",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("hidden","hidden");
-return self}, function($ctx1) {$ctx1.fill(self,"hidden",{},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "href:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("href",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"href:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "id:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("id",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"id:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromJQuery:canvas:",
-fn: function (aJQuery,aCanvas){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@element"]=_st(aJQuery)._get_((0));
-self["@canvas"]=aCanvas;
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromJQuery:canvas:",{aJQuery:aJQuery,aCanvas:aCanvas},smalltalk.TagBrush)})},
-messageSends: ["get:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromString:canvas:",
-fn: function (aString,aCanvas){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@element"]=self._createElementFor_(aString);
-self["@canvas"]=aCanvas;
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromString:canvas:",{aString:aString,aCanvas:aCanvas},smalltalk.TagBrush)})},
-messageSends: ["createElementFor:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "media:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("media",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"media:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("method",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"method:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("name",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onBlur:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("blur",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onBlur:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onChange:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("change",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onChange:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClick:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("click",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDblClick:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("dblclick",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onDblClick:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onFocus:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("focus",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onFocus:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onFocusIn:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("focusin",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onFocusIn:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onFocusOut:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("focusout",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onFocusOut:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onHover:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("hover",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onHover:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyDown:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("keydown",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyPress:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("keypress",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyUp:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("keyup",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyUp:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseDown:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mousedown",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseDown:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseEnter:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mouseenter",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseEnter:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseLeave:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mouseleave",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseLeave:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseMove:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mousemove",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseMove:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseOut:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mouseout",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseOut:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseOver:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mouseover",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseOver:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMouseUp:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("mouseup",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onMouseUp:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSelect:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("select",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onSelect:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSubmit:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("submit",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onSubmit:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onUnload:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asJQuery())._bind_do_("unload",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onUnload:",{aBlock:aBlock},smalltalk.TagBrush)})},
-messageSends: ["bind:do:", "asJQuery"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "placeholder:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("placeholder",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"placeholder:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rel:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("rel",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"rel:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@element'].removeAttribute(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"removeAt:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: []}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rows:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("rows",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"rows:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "src:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("src",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"src:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "style:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("style",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"style:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabindex:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("tabindex",aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"tabindex:",{aNumber:aNumber},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "target:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("target",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"target:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "title:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("title",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"title:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "type:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("type",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"type:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valign:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("valign",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"valign:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("value",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "width:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_("width",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"width:",{aString:aString},smalltalk.TagBrush)})},
-messageSends: ["at:put:"]}),
-smalltalk.TagBrush);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._append_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},smalltalk.TagBrush)})},
-messageSends: ["append:"]}),
-smalltalk.TagBrush);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromJQuery:canvas:",
-fn: function (aJQuery,aCanvas){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromJQuery_canvas_(aJQuery,aCanvas);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromJQuery:canvas:",{aJQuery:aJQuery,aCanvas:aCanvas},smalltalk.TagBrush.klass)})},
-messageSends: ["initializeFromJQuery:canvas:", "new", "yourself"]}),
-smalltalk.TagBrush.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:canvas:",
-fn: function (aString,aCanvas){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromString_canvas_(aString,aCanvas);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromString:canvas:",{aString:aString,aCanvas:aCanvas},smalltalk.TagBrush.klass)})},
-messageSends: ["initializeFromString:canvas:", "new", "yourself"]}),
-smalltalk.TagBrush.klass);
-
-
-smalltalk.addClass('StyleTag', smalltalk.TagBrush, ['canvas', 'element'], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (aString){
-var self=this;
-function $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HTMLCanvas())._isMSIE();
-if(smalltalk.assert($1)){
-_st(_st(self._element())._styleSheet())._cssText_(aString);
-} else {
-smalltalk.StyleTag.superclass.fn.prototype._with_.apply(_st(self), [aString]);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"with:",{aString:aString},smalltalk.StyleTag)})},
-messageSends: ["ifTrue:ifFalse:", "isMSIE", "cssText:", "styleSheet", "element", "with:"]}),
-smalltalk.StyleTag);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canvas:",
-fn: function (aCanvas){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromString_canvas_("style",aCanvas);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canvas:",{aCanvas:aCanvas},smalltalk.StyleTag.klass)})},
-messageSends: ["initializeFromString:canvas:", "new", "yourself"]}),
-smalltalk.StyleTag.klass);
-
-
-smalltalk.addClass('Widget', smalltalk.InterfacingObject, [], 'Canvas');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._appendToJQuery_(_st(aTagBrush)._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"appendToBrush:",{aTagBrush:aTagBrush},smalltalk.Widget)})},
-messageSends: ["appendToJQuery:", "asJQuery"]}),
-smalltalk.Widget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToJQuery:",
-fn: function (aJQuery){
-var self=this;
-function $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
-return smalltalk.withContext(function($ctx1) { 
-self._renderOn_(_st($HTMLCanvas())._onJQuery_(aJQuery));
-return self}, function($ctx1) {$ctx1.fill(self,"appendToJQuery:",{aJQuery:aJQuery},smalltalk.Widget)})},
-messageSends: ["renderOn:", "onJQuery:"]}),
-smalltalk.Widget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Widget)})},
-messageSends: []}),
-smalltalk.Widget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "widget";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Widget.klass)})},
-messageSends: []}),
-smalltalk.Widget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aTagBrush)._append_(self._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"appendToBrush:",{aTagBrush:aTagBrush},smalltalk.Object)})},
-messageSends: ["append:", "asString"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToJQuery:",
-fn: function (aJQuery){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aJQuery)._append_(self._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"appendToJQuery:",{aJQuery:aJQuery},smalltalk.Object)})},
-messageSends: ["append:", "asString"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aTagBrush)._appendBlock_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"appendToBrush:",{aTagBrush:aTagBrush},smalltalk.BlockClosure)})},
-messageSends: ["appendBlock:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToJQuery:",
-fn: function (aJQuery){
-var self=this;
-function $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
-return smalltalk.withContext(function($ctx1) { 
-self._value_(_st($HTMLCanvas())._onJQuery_(aJQuery));
-return self}, function($ctx1) {$ctx1.fill(self,"appendToJQuery:",{aJQuery:aJQuery},smalltalk.BlockClosure)})},
-messageSends: ["value:", "onJQuery:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSnippet",
-fn: function (){
-var self=this;
-function $HTMLSnippet(){return smalltalk.HTMLSnippet||(typeof HTMLSnippet=="undefined"?nil:HTMLSnippet)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($HTMLSnippet())._current())._snippetAt_(self._asString());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asSnippet",{},smalltalk.CharacterArray)})},
-messageSends: ["snippetAt:", "current", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToBrush:",
-fn: function (aTagBrush){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aTagBrush)._appendString_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"appendToBrush:",{aTagBrush:aTagBrush},smalltalk.String)})},
-messageSends: ["appendString:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToJQuery:",
-fn: function (aJQuery){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aJQuery)._append_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"appendToJQuery:",{aJQuery:aJQuery},smalltalk.String)})},
-messageSends: ["append:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJQuery",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return jQuery(String(self));
-return self}, function($ctx1) {$ctx1.fill(self,"asJQuery",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJQuery",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return jQuery(self['@jsObject']);
-return self}, function($ctx1) {$ctx1.fill(self,"asJQuery",{},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Canvas.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Canvas", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Kernel-Infrastructure", "amber_core/Kernel-Methods", "amber_core/Kernel-Collections"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Canvas');
+smalltalk.packages["Canvas"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('BrowserInterface', smalltalk.Object, [], 'Canvas');
 smalltalk.BrowserInterface.comment="I am platform interface class that tries to use window and jQuery; that is, one for browser environment.\x0a\x0a## API\x0a\x0a    self isAvailable. \x22true if window and jQuery exist\x22.\x0a\x0a    self alert: 'Hey, there is a problem'.\x0a    self confirm: 'Affirmative?'.\x0a    self prompt: 'Your name:'.\x0a\x0a    self ajax: #{\x0a        'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a    }.";
@@ -3937,4 +3938,4 @@ referencedClasses: []
 }),
 smalltalk.JSObjectProxy);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1652
js/Compiler-AST.deploy.js

@@ -1,1652 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-AST');
-
-smalltalk.addClass('Node', smalltalk.Object, ['parent', 'position', 'nodes', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.Node)})},
-messageSends: ["visitNode:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._nodes())._add_(aNode);
-_st(aNode)._parent_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"addNode:",{aNode:aNode},smalltalk.Node)})},
-messageSends: ["add:", "nodes", "parent:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAssignmentNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isAssignmentNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBlockNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockSequenceNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBlockSequenceNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCascadeNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isCascadeNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isJSStatementNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isJSStatementNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isLastChild",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._parent())._nodes())._last()).__eq(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isLastChild",{},smalltalk.Node)})},
-messageSends: ["=", "last", "nodes", "parent"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReturnNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isReturnNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSendNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isSendNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValueNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isValueNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextChild",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self._nodes())._isEmpty();
-if(smalltalk.assert($2)){
-$1=self;
-} else {
-$1=_st(_st(self._nodes())._first())._nextChild();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextChild",{},smalltalk.Node)})},
-messageSends: ["ifTrue:ifFalse:", "isEmpty", "nodes", "nextChild", "first"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._parent();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-var node;
-node=$receiver;
-$1=_st(node)._nextNode_(self);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.Node)})},
-messageSends: ["ifNotNil:", "parent", "nextNode:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode:",
-fn: function (aNode){
-var self=this;
-var next;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-next=_st(self._nodes())._at_ifAbsent_(_st(_st(self._nodes())._indexOf_(aNode)).__plus((1)),(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=_st(next)._nextChild();
-return $2;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode,next:next},smalltalk.Node)})},
-messageSends: ["at:ifAbsent:", "nodes", "+", "indexOf:", "nextChild"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@nodes"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@nodes"]=_st($Array())._new();
-$1=self["@nodes"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.Node)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@nodes"]=aCollection;
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._parent_(self);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"nodes:",{aCollection:aCollection},smalltalk.Node)})},
-messageSends: ["do:", "parent:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@parent"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parent",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@parent"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"parent:",{aNode:aNode},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "position",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self["@position"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=self._parent();
-if(($receiver = $3) == nil || $receiver == undefined){
-$1=$3;
-} else {
-var node;
-node=$receiver;
-$1=_st(node)._position();
-};
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"position",{},smalltalk.Node)})},
-messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "position:",
-fn: function (aPosition){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@position"]=aPosition;
-return self}, function($ctx1) {$ctx1.fill(self,"position:",{aPosition:aPosition},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "postCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Node.superclass.fn.prototype._postCopy.apply(_st(self), []);
-_st(self._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._parent_(self);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"postCopy",{},smalltalk.Node)})},
-messageSends: ["postCopy", "do:", "nodes", "parent:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldBeAliased",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@shouldBeAliased"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},smalltalk.Node)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldBeAliased:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@shouldBeAliased"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased:",{aBoolean:aBoolean},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldBeInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@shouldBeInlined"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},smalltalk.Node)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldBeInlined:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@shouldBeInlined"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"shouldBeInlined:",{aBoolean:aBoolean},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stopOnStepping",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"stopOnStepping",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subtreeNeedsAliasing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._shouldBeAliased())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._shouldBeInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._nodes())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each)._subtreeNeedsAliasing();
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return false;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}))).__tild_eq(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.Node)})},
-messageSends: ["or:", "shouldBeAliased", "shouldBeInlined", "~=", "detect:ifNone:", "nodes", "subtreeNeedsAliasing"]}),
-smalltalk.Node);
-
-
-
-smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitAssignmentNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.AssignmentNode)})},
-messageSends: ["visitAssignmentNode:"]}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAssignmentNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isAssignmentNode",{},smalltalk.AssignmentNode)})},
-messageSends: []}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "left",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@left"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"left",{},smalltalk.AssignmentNode)})},
-messageSends: []}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "left:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@left"]=aNode;
-_st(aNode)._parent_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"left:",{aNode:aNode},smalltalk.AssignmentNode)})},
-messageSends: ["parent:"]}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Array())._with_with_(self._left(),self._right());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.AssignmentNode)})},
-messageSends: ["with:with:", "left", "right"]}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "right",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@right"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"right",{},smalltalk.AssignmentNode)})},
-messageSends: []}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "right:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@right"]=aNode;
-_st(aNode)._parent_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"right:",{aNode:aNode},smalltalk.AssignmentNode)})},
-messageSends: ["parent:"]}),
-smalltalk.AssignmentNode);
-
-
-
-smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters', 'scope'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitBlockNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.BlockNode)})},
-messageSends: ["visitBlockNode:"]}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBlockNode",{},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextChild",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextChild",{},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parameters",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@parameters"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@parameters"]=_st($Array())._new();
-$1=self["@parameters"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parameters",{},smalltalk.BlockNode)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parameters:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@parameters"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"parameters:",{aCollection:aCollection},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aLexicalScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aLexicalScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aLexicalScope:aLexicalScope},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subtreeNeedsAliasing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._shouldBeAliased())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._shouldBeInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.BlockNode)})},
-messageSends: ["or:", "shouldBeAliased", "shouldBeInlined"]}),
-smalltalk.BlockNode);
-
-
-
-smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitCascadeNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.CascadeNode)})},
-messageSends: ["visitCascadeNode:"]}),
-smalltalk.CascadeNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCascadeNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isCascadeNode",{},smalltalk.CascadeNode)})},
-messageSends: []}),
-smalltalk.CascadeNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@receiver"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.CascadeNode)})},
-messageSends: []}),
-smalltalk.CascadeNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{aNode:aNode},smalltalk.CascadeNode)})},
-messageSends: []}),
-smalltalk.CascadeNode);
-
-
-
-smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitDynamicArrayNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.DynamicArrayNode)})},
-messageSends: ["visitDynamicArrayNode:"]}),
-smalltalk.DynamicArrayNode);
-
-
-
-smalltalk.addClass('DynamicDictionaryNode', smalltalk.Node, [], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitDynamicDictionaryNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.DynamicDictionaryNode)})},
-messageSends: ["visitDynamicDictionaryNode:"]}),
-smalltalk.DynamicDictionaryNode);
-
-
-
-smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitJSStatementNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.JSStatementNode)})},
-messageSends: ["visitJSStatementNode:"]}),
-smalltalk.JSStatementNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isJSStatementNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isJSStatementNode",{},smalltalk.JSStatementNode)})},
-messageSends: []}),
-smalltalk.JSStatementNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.JSStatementNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.JSStatementNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.JSStatementNode)})},
-messageSends: []}),
-smalltalk.JSStatementNode);
-
-
-
-smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends', 'superSends'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitMethodNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.MethodNode)})},
-messageSends: ["visitMethodNode:"]}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@arguments"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=[];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.MethodNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@arguments"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferences",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@classReferences"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classReferences",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferences:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@classReferences"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"classReferences:",{aCollection:aCollection},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "extent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._source())._lines())._size()).__at(_st(_st(_st(_st(self._source())._lines())._last())._size()).__plus((1)));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extent",{},smalltalk.MethodNode)})},
-messageSends: ["@", "size", "lines", "source", "+", "last"]}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@messageSends"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@messageSends"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"messageSends:",{aCollection:aCollection},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aMethodScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aMethodScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aMethodScope:aMethodScope},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@source"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@superSends"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"superSends",{},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSends:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@superSends"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"superSends:",{aCollection:aCollection},smalltalk.MethodNode)})},
-messageSends: []}),
-smalltalk.MethodNode);
-
-
-
-smalltalk.addClass('ReturnNode', smalltalk.Node, ['scope'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitReturnNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.ReturnNode)})},
-messageSends: ["visitReturnNode:"]}),
-smalltalk.ReturnNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReturnNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isReturnNode",{},smalltalk.ReturnNode)})},
-messageSends: []}),
-smalltalk.ReturnNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nonLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._scope())._isMethodScope())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nonLocalReturn",{},smalltalk.ReturnNode)})},
-messageSends: ["not", "isMethodScope", "scope"]}),
-smalltalk.ReturnNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.ReturnNode)})},
-messageSends: []}),
-smalltalk.ReturnNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aLexicalScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aLexicalScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aLexicalScope:aLexicalScope},smalltalk.ReturnNode)})},
-messageSends: []}),
-smalltalk.ReturnNode);
-
-
-
-smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver', 'superSend', 'index'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitSendNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.SendNode)})},
-messageSends: ["visitSendNode:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@arguments"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@arguments"]=[];
-$1=self["@arguments"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.SendNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@arguments"]=aCollection;
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._parent_(self);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},smalltalk.SendNode)})},
-messageSends: ["do:", "parent:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cascadeNodeWithMessages:",
-fn: function (aCollection){
-var self=this;
-var first;
-function $SendNode(){return smalltalk.SendNode||(typeof SendNode=="undefined"?nil:SendNode)}
-function $CascadeNode(){return smalltalk.CascadeNode||(typeof CascadeNode=="undefined"?nil:CascadeNode)}
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$5,$3;
-$1=_st($SendNode())._new();
-_st($1)._selector_(self._selector());
-_st($1)._arguments_(self._arguments());
-$2=_st($1)._yourself();
-first=$2;
-$4=_st($CascadeNode())._new();
-_st($4)._receiver_(self._receiver());
-_st($4)._nodes_(_st(_st($Array())._with_(first)).__comma(aCollection));
-$5=_st($4)._yourself();
-$3=$5;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"cascadeNodeWithMessages:",{aCollection:aCollection,first:first},smalltalk.SendNode)})},
-messageSends: ["selector:", "new", "selector", "arguments:", "arguments", "yourself", "receiver:", "receiver", "nodes:", ",", "with:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@index"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@index"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"index:",{anInteger:anInteger},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCascadeSendNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._parent())._isCascadeNode();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isCascadeSendNode",{},smalltalk.SendNode)})},
-messageSends: ["isCascadeNode", "parent"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSendNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSendNode",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$5,$3;
-$1=self._receiver();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=_st(self._arguments())._copy();
-return $2;
-} else {
-$1;
-};
-$4=_st($Array())._with_(self._receiver());
-_st($4)._addAll_(self._arguments());
-$5=_st($4)._yourself();
-$3=$5;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.SendNode)})},
-messageSends: ["ifNil:", "receiver", "copy", "arguments", "addAll:", "with:", "yourself"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@receiver"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@receiver"]=aNode;
-$1=_st(aNode)._isNode();
-if(smalltalk.assert($1)){
-_st(aNode)._parent_(self);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{aNode:aNode},smalltalk.SendNode)})},
-messageSends: ["ifTrue:", "isNode", "parent:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stopOnStepping",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"stopOnStepping",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@superSend"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"superSend",{},smalltalk.SendNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSend:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@superSend"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"superSend:",{aBoolean:aBoolean},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueForReceiver:",
-fn: function (anObject){
-var self=this;
-function $SendNode(){return smalltalk.SendNode||(typeof SendNode=="undefined"?nil:SendNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$5,$4,$6,$1;
-$2=_st($SendNode())._new();
-_st($2)._position_(self._position());
-$3=$2;
-$5=self._receiver();
-if(($receiver = $5) == nil || $receiver == undefined){
-$4=anObject;
-} else {
-$4=_st(self._receiver())._valueForReceiver_(anObject);
-};
-_st($3)._receiver_($4);
-_st($2)._selector_(self._selector());
-_st($2)._arguments_(self._arguments());
-$6=_st($2)._yourself();
-$1=$6;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"valueForReceiver:",{anObject:anObject},smalltalk.SendNode)})},
-messageSends: ["position:", "new", "position", "receiver:", "ifNil:ifNotNil:", "receiver", "valueForReceiver:", "selector:", "selector", "arguments:", "arguments", "yourself"]}),
-smalltalk.SendNode);
-
-
-
-smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps', 'scope'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitSequenceNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.SequenceNode)})},
-messageSends: ["visitSequenceNode:"]}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asBlockSequenceNode",
-fn: function (){
-var self=this;
-function $BlockSequenceNode(){return smalltalk.BlockSequenceNode||(typeof BlockSequenceNode=="undefined"?nil:BlockSequenceNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($BlockSequenceNode())._new();
-_st($2)._position_(self._position());
-_st($2)._nodes_(self._nodes());
-_st($2)._temps_(self._temps());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asBlockSequenceNode",{},smalltalk.SequenceNode)})},
-messageSends: ["position:", "new", "position", "nodes:", "nodes", "temps:", "temps", "yourself"]}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.SequenceNode)})},
-messageSends: []}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aLexicalScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aLexicalScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aLexicalScope:aLexicalScope},smalltalk.SequenceNode)})},
-messageSends: []}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "temps",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@temps"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=[];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"temps",{},smalltalk.SequenceNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "temps:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@temps"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"temps:",{aCollection:aCollection},smalltalk.SequenceNode)})},
-messageSends: []}),
-smalltalk.SequenceNode);
-
-
-
-smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitBlockSequenceNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.BlockSequenceNode)})},
-messageSends: ["visitBlockSequenceNode:"]}),
-smalltalk.BlockSequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockSequenceNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBlockSequenceNode",{},smalltalk.BlockSequenceNode)})},
-messageSends: []}),
-smalltalk.BlockSequenceNode);
-
-
-
-smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitValueNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.ValueNode)})},
-messageSends: ["visitValueNode:"]}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._value())._isImmutable();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.ValueNode)})},
-messageSends: ["isImmutable", "value"]}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValueNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isValueNode",{},smalltalk.ValueNode)})},
-messageSends: []}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@value"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.ValueNode)})},
-messageSends: []}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@value"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject},smalltalk.ValueNode)})},
-messageSends: []}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "xxxDoIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._stack();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._value();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"xxxDoIt",{},smalltalk.ValueNode)})},
-messageSends: ["value", "stack"]}),
-smalltalk.ValueNode);
-
-
-
-smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitVariableNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.VariableNode)})},
-messageSends: ["visitVariableNode:"]}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._binding())._alias();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.VariableNode)})},
-messageSends: ["alias", "binding"]}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assigned",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@assigned"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"assigned",{},smalltalk.VariableNode)})},
-messageSends: ["ifNil:"]}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assigned:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@assigned"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"assigned:",{aBoolean:aBoolean},smalltalk.VariableNode)})},
-messageSends: []}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "beAssigned",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._binding())._validateAssignment();
-self["@assigned"]=true;
-return self}, function($ctx1) {$ctx1.fill(self,"beAssigned",{},smalltalk.VariableNode)})},
-messageSends: ["validateAssignment", "binding"]}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "binding",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@binding"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"binding",{},smalltalk.VariableNode)})},
-messageSends: []}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "binding:",
-fn: function (aScopeVar){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@binding"]=aScopeVar;
-return self}, function($ctx1) {$ctx1.fill(self,"binding:",{aScopeVar:aScopeVar},smalltalk.VariableNode)})},
-messageSends: []}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.VariableNode)})},
-messageSends: []}),
-smalltalk.VariableNode);
-
-
-
-smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitClassReferenceNode_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.ClassReferenceNode)})},
-messageSends: ["visitClassReferenceNode:"]}),
-smalltalk.ClassReferenceNode);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isNode",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ast",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self._source())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("Method source is empty");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$1=_st(_st($Smalltalk())._current())._parse_(self._source());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ast",{},smalltalk.CompiledMethod)})},
-messageSends: ["ifEmpty:", "source", "error:", "parse:", "current"]}),
-smalltalk.CompiledMethod);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Compiler-AST.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-AST", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Kernel-Methods"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-AST');
+smalltalk.packages["Compiler-AST"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Node', smalltalk.Object, ['parent', 'position', 'nodes', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
 smalltalk.Node.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aConcrete classes should implement `#accept:` to allow visiting.\x0a\x0a`position` holds a point containing line and column number of the symbol location in the original source file.";
@@ -2254,4 +2255,4 @@ referencedClasses: ["Smalltalk"]
 }),
 smalltalk.CompiledMethod);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 759
js/Compiler-Core.deploy.js

@@ -1,759 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Core');
-
-smalltalk.addClass('AbstractCodeGenerator', smalltalk.Object, ['currentClass', 'source'], 'Compiler-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNameFor:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
-} else {
-$1=_st(aClass)._name();
-};
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"]}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},smalltalk.AbstractCodeGenerator)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.AbstractCodeGenerator)})},
-messageSends: []}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@currentClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
-messageSends: []}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pseudoVariables",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._pseudoVariableNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},smalltalk.AbstractCodeGenerator)})},
-messageSends: ["pseudoVariableNames", "current"]}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "safeVariableNameFor:",
-fn: function (aString){
-var self=this;
-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)){
-$1=_st(aString).__comma("_");
-} else {
-$1=aString;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"safeVariableNameFor:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
-messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", "current", ","]}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.AbstractCodeGenerator)})},
-messageSends: ["ifNil:"]}),
-smalltalk.AbstractCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
-messageSends: []}),
-smalltalk.AbstractCodeGenerator);
-
-
-
-smalltalk.addClass('CodeGenerator', smalltalk.AbstractCodeGenerator, [], 'Compiler-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileNode:",
-fn: function (aNode){
-var self=this;
-var ir,stream;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-_st(self._semanticAnalyzer())._visit_(aNode);
-ir=_st(self._translator())._visit_(aNode);
-$2=self._irTranslator();
-_st($2)._currentClass_(self._currentClass());
-_st($2)._visit_(ir);
-$3=_st($2)._contents();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},smalltalk.CodeGenerator)})},
-messageSends: ["visit:", "semanticAnalyzer", "translator", "currentClass:", "irTranslator", "currentClass", "contents"]}),
-smalltalk.CodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "irTranslator",
-fn: function (){
-var self=this;
-function $IRJSTranslator(){return smalltalk.IRJSTranslator||(typeof IRJSTranslator=="undefined"?nil:IRJSTranslator)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRJSTranslator())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.CodeGenerator)})},
-messageSends: ["new"]}),
-smalltalk.CodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "semanticAnalyzer",
-fn: function (){
-var self=this;
-function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($SemanticAnalyzer())._on_(self._currentClass());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},smalltalk.CodeGenerator)})},
-messageSends: ["on:", "currentClass"]}),
-smalltalk.CodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "translator",
-fn: function (){
-var self=this;
-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_(self._source());
-_st($2)._theClass_(self._currentClass());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"translator",{},smalltalk.CodeGenerator)})},
-messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"]}),
-smalltalk.CodeGenerator);
-
-
-
-smalltalk.addClass('Compiler', smalltalk.Object, ['currentClass', 'source', 'unknownVariables', 'codeGeneratorClass'], 'Compiler-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeGeneratorClass",
-fn: function (){
-var self=this;
-function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@codeGeneratorClass"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$InliningCodeGenerator();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.Compiler)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeGeneratorClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@codeGeneratorClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass:",{aClass:aClass},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._compileNode_(self._parse_(aString));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Compiler)})},
-messageSends: ["compileNode:", "parse:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile:forClass:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._currentClass_(aClass);
-self._source_(aString);
-$1=self._compile_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compile:forClass:",{aString:aString,aClass:aClass},smalltalk.Compiler)})},
-messageSends: ["currentClass:", "source:", "compile:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileExpression:",
-fn: function (aString){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._currentClass_($DoIt());
-self._source_(_st("doIt ^[".__comma(aString)).__comma("] value"));
-$1=self._compileNode_(self._parse_(self._source()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compileExpression:",{aString:aString},smalltalk.Compiler)})},
-messageSends: ["currentClass:", "source:", ",", "compileNode:", "parse:", "source"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileExpression:on:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._currentClass_(_st(anObject)._class());
-self._source_(_st("xxxDoIt ^[".__comma(aString)).__comma("] value"));
-$1=self._compileNode_(self._parse_(self._source()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compileExpression:on:",{aString:aString,anObject:anObject},smalltalk.Compiler)})},
-messageSends: ["currentClass:", "class", "source:", ",", "compileNode:", "parse:", "source"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileNode:",
-fn: function (aNode){
-var self=this;
-var generator,result;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-generator=_st(self._codeGeneratorClass())._new();
-$1=generator;
-_st($1)._source_(self._source());
-$2=_st($1)._currentClass_(self._currentClass());
-result=_st(generator)._compileNode_(aNode);
-self._unknownVariables_([]);
-$3=result;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,generator:generator,result:result},smalltalk.Compiler)})},
-messageSends: ["new", "codeGeneratorClass", "source:", "source", "currentClass:", "currentClass", "compileNode:", "unknownVariables:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@currentClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return eval(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "evaluateExpression:",
-fn: function (aString){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._evaluateExpression_on_(aString,_st($DoIt())._new());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},smalltalk.Compiler)})},
-messageSends: ["evaluateExpression:on:", "new"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "evaluateExpression:on:",
-fn: function (aString,anObject){
-var self=this;
-var result,method;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-method=self._eval_(self._compileExpression_on_(aString,anObject));
-_st(method)._category_("xxxDoIt");
-_st(_st(anObject)._class())._addCompiledMethod_(method);
-result=_st(anObject)._xxxDoIt();
-_st(_st(anObject)._class())._removeCompiledMethod_(method);
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method},smalltalk.Compiler)})},
-messageSends: ["eval:", "compileExpression:on:", "category:", "addCompiledMethod:", "class", "xxxDoIt", "removeCompiledMethod:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "install:forClass:category:",
-fn: function (aString,aBehavior,anotherString){
-var self=this;
-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_(self._eval_(self._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
-messageSends: ["installMethod:forClass:category:", "new", "eval:", "compile:forClass:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parse:",
-fn: function (aString){
-var self=this;
-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;
-}, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.Compiler)})},
-messageSends: ["parse:", "current"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parseExpression:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._parse_(_st("doIt ^[".__comma(aString)).__comma("] value"));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
-messageSends: ["parse:", ","]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recompile:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(_st(_st(aClass)._methodDictionary())._values())._do_displayingProgress_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),"Recompiling ".__comma(_st(aClass)._name()));
-$1=_st(aClass)._isMetaclass();
-if(! smalltalk.assert($1)){
-self._recompile_(_st(aClass)._class());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler)})},
-messageSends: ["do:displayingProgress:", "values", "methodDictionary", "install:forClass:category:", "source", "category", ",", "name", "ifFalse:", "isMetaclass", "recompile:", "class"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recompileAll",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st($Smalltalk())._current())._classes())._do_displayingProgress_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._recompile_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),"Compiling all classes...");
-return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
-messageSends: ["do:displayingProgress:", "classes", "current", "recompile:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.Compiler)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unknownVariables",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@unknownVariables"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unknownVariables:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@unknownVariables"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"unknownVariables:",{aCollection:aCollection},smalltalk.Compiler)})},
-messageSends: []}),
-smalltalk.Compiler);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recompile:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._new())._recompile_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler.klass)})},
-messageSends: ["recompile:", "new"]}),
-smalltalk.Compiler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recompileAll",
-fn: function (){
-var self=this;
-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 self._recompile_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
-messageSends: ["do:", "classes", "current", "recompile:"]}),
-smalltalk.Compiler.klass);
-
-
-smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler-Core');
-
-
-smalltalk.addClass('NodeVisitor', smalltalk.Object, [], 'Compiler-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visit:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aNode)._accept_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["accept:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
-messageSends: ["collect:", "visit:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitAssignmentNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockSequenceNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitSequenceNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitSequenceNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitCascadeNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitClassReferenceNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitVariableNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitVariableNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicArrayNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicDictionaryNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitJSStatementNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitMethodNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitAll_(_st(aNode)._nodes());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitAll:", "nodes"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitReturnNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSendNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSequenceNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitValueNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitVariableNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitNode_(aNode);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.NodeVisitor)})},
-messageSends: ["visitNode:"]}),
-smalltalk.NodeVisitor);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 15 - 14
js/Compiler-Core.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Core", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Core');
+smalltalk.packages["Compiler-Core"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('AbstractCodeGenerator', smalltalk.Object, ['currentClass', 'source'], 'Compiler-Core');
 smalltalk.AbstractCodeGenerator.comment="I am the abstract super class of all code generators and provide their common API.";
@@ -26,7 +27,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.AbstractCodeGenerator)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09\x09ifTrue: [aClass instanceClass name, '.klass']\x0a\x09\x09ifFalse: [\x0a\x09\x09aClass isNil\x0a\x09\x09\x09ifTrue: ['nil']\x0a\x09\x09\x09ifFalse: [aClass name]]",
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"],
+messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
 referencedClasses: []
 }),
 smalltalk.AbstractCodeGenerator);
@@ -119,7 +120,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"safeVariableNameFor:",{aString:aString},smalltalk.AbstractCodeGenerator)})},
 args: ["aString"],
 source: "safeVariableNameFor: aString\x0a\x09^(Smalltalk current reservedWords includes: aString)\x0a\x09\x09ifTrue: [aString, '_']\x0a\x09\x09ifFalse: [aString]",
-messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", "current", ","],
+messageSends: ["ifTrue:ifFalse:", ",", "includes:", "reservedWords", "current"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.AbstractCodeGenerator);
@@ -187,7 +188,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},smalltalk.CodeGenerator)})},
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09^ self irTranslator\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
-messageSends: ["visit:", "semanticAnalyzer", "translator", "currentClass:", "irTranslator", "currentClass", "contents"],
+messageSends: ["visit:", "semanticAnalyzer", "translator", "currentClass:", "currentClass", "irTranslator", "contents"],
 referencedClasses: []
 }),
 smalltalk.CodeGenerator);
@@ -248,7 +249,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"translator",{},smalltalk.CodeGenerator)})},
 args: [],
 source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
-messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"],
+messageSends: ["source:", "source", "new", "theClass:", "currentClass", "yourself"],
 referencedClasses: ["IRASTTranslator"]
 }),
 smalltalk.CodeGenerator);
@@ -508,7 +509,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"install:forClass:category:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},smalltalk.Compiler)})},
 args: ["aString", "aBehavior", "anotherString"],
 source: "install: aString forClass: aBehavior category: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09installMethod: (self eval: (self compile: aString forClass: aBehavior))\x0a\x09\x09forClass: aBehavior\x0a\x09\x09category: anotherString",
-messageSends: ["installMethod:forClass:category:", "new", "eval:", "compile:forClass:"],
+messageSends: ["installMethod:forClass:category:", "eval:", "compile:forClass:", "new"],
 referencedClasses: ["ClassBuilder"]
 }),
 smalltalk.Compiler);
@@ -561,7 +562,7 @@ var $1;
 _st(_st(_st(aClass)._methodDictionary())._values())._do_displayingProgress_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._install_forClass_category_(_st(each)._source(),aClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),"Recompiling ".__comma(_st(aClass)._name()));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),"Recompiling ".__comma(_st(aClass)._name()));
 $1=_st(aClass)._isMetaclass();
 if(! smalltalk.assert($1)){
 self._recompile_(_st(aClass)._class());
@@ -569,7 +570,7 @@ self._recompile_(_st(aClass)._class());
 return self}, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},smalltalk.Compiler)})},
 args: ["aClass"],
 source: "recompile: aClass\x0a\x09aClass methodDictionary values\x0a\x09\x09do: [ :each | self install: each source forClass: aClass category: each category ]\x0a\x09\x09displayingProgress: 'Recompiling ', aClass name.\x0a\x09\x22self setupClass: aClass.\x22\x0a\x09aClass isMetaclass ifFalse: [ self recompile: aClass class ]",
-messageSends: ["do:displayingProgress:", "values", "methodDictionary", "install:forClass:category:", "source", "category", ",", "name", "ifFalse:", "isMetaclass", "recompile:", "class"],
+messageSends: ["do:displayingProgress:", "install:forClass:category:", "source", "category", ",", "name", "values", "methodDictionary", "ifFalse:", "recompile:", "class", "isMetaclass"],
 referencedClasses: []
 }),
 smalltalk.Compiler);
@@ -585,11 +586,11 @@ return smalltalk.withContext(function($ctx1) {
 _st(_st(_st($Smalltalk())._current())._classes())._do_displayingProgress_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._recompile_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),"Compiling all classes...");
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),"Compiling all classes...");
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
 args: [],
 source: "recompileAll\x0a\x09Smalltalk current classes \x0a\x09\x09do: [:each | self recompile: each ]\x0a\x09\x09displayingProgress: 'Compiling all classes...'",
-messageSends: ["do:displayingProgress:", "classes", "current", "recompile:"],
+messageSends: ["do:displayingProgress:", "recompile:", "classes", "current"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.Compiler);
@@ -695,11 +696,11 @@ return smalltalk.withContext(function($ctx1) {
 _st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._recompile_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
 args: [],
 source: "recompileAll\x0a\x09Smalltalk current classes do: [:each |\x0a\x09\x09self recompile: each]",
-messageSends: ["do:", "classes", "current", "recompile:"],
+messageSends: ["do:", "recompile:", "classes", "current"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.Compiler.klass);
@@ -740,7 +741,7 @@ var $1;
 $1=_st(aCollection)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
 args: ["aCollection"],
@@ -1021,4 +1022,4 @@ referencedClasses: []
 smalltalk.NodeVisitor);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 161
js/Compiler-Exceptions.deploy.js

@@ -1,161 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Exceptions');
-
-smalltalk.addClass('CompilerError', smalltalk.Error, [], 'Compiler-Exceptions');
-
-
-smalltalk.addClass('ParseError', smalltalk.CompilerError, [], 'Compiler-Exceptions');
-
-
-smalltalk.addClass('SemanticError', smalltalk.CompilerError, [], 'Compiler-Exceptions');
-
-
-smalltalk.addClass('InliningError', smalltalk.SemanticError, [], 'Compiler-Exceptions');
-
-
-smalltalk.addClass('InvalidAssignmentError', smalltalk.SemanticError, ['variableName'], 'Compiler-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=" Invalid assignment to variable: ".__comma(self._variableName());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.InvalidAssignmentError)})},
-messageSends: [",", "variableName"]}),
-smalltalk.InvalidAssignmentError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variableName"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.InvalidAssignmentError)})},
-messageSends: []}),
-smalltalk.InvalidAssignmentError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variableName"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.InvalidAssignmentError)})},
-messageSends: []}),
-smalltalk.InvalidAssignmentError);
-
-
-
-smalltalk.addClass('ShadowingVariableError', smalltalk.SemanticError, ['variableName'], 'Compiler-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("Variable shadowing error: ".__comma(self._variableName())).__comma(" is already defined");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
-messageSends: [",", "variableName"]}),
-smalltalk.ShadowingVariableError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variableName"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.ShadowingVariableError)})},
-messageSends: []}),
-smalltalk.ShadowingVariableError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variableName"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.ShadowingVariableError)})},
-messageSends: []}),
-smalltalk.ShadowingVariableError);
-
-
-
-smalltalk.addClass('UnknownVariableError', smalltalk.SemanticError, ['variableName'], 'Compiler-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("Unknown Variable error: ".__comma(self._variableName())).__comma(" is not defined");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
-messageSends: [",", "variableName"]}),
-smalltalk.UnknownVariableError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variableName"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.UnknownVariableError)})},
-messageSends: []}),
-smalltalk.UnknownVariableError);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variableName"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.UnknownVariableError)})},
-messageSends: []}),
-smalltalk.UnknownVariableError);
-
-
-
-smalltalk.addClass('RethrowErrorHandler', smalltalk.ErrorHandler, [], 'Compiler-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicSignal:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-throw anError;
-return self}, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},smalltalk.RethrowErrorHandler)})},
-messageSends: []}),
-smalltalk.RethrowErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleError:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.RethrowErrorHandler.superclass.fn.prototype._handleError_.apply(_st(self), [anError]);
-self._basicSignal_(anError);
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.RethrowErrorHandler)})},
-messageSends: ["handleError:", "basicSignal:"]}),
-smalltalk.RethrowErrorHandler);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Compiler-Exceptions.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Exceptions", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Exceptions"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Exceptions');
+smalltalk.packages["Compiler-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('CompilerError', smalltalk.Error, [], 'Compiler-Exceptions');
 smalltalk.CompilerError.comment="I am the common superclass of all compiling errors.";
@@ -221,4 +222,4 @@ referencedClasses: []
 smalltalk.RethrowErrorHandler);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 2781
js/Compiler-IR.deploy.js

@@ -1,2781 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-IR');
-
-smalltalk.addClass('IRASTTranslator', smalltalk.NodeVisitor, ['source', 'theClass', 'method', 'sequence', 'nextAlias'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias:",
-fn: function (aNode){
-var self=this;
-var variable;
-function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
-function $AliasVar(){return smalltalk.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
-function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-$1=_st(aNode)._isImmutable();
-if(smalltalk.assert($1)){
-$2=self._visit_(aNode);
-return $2;
-};
-$3=_st($IRVariable())._new();
-_st($3)._variable_(_st(_st($AliasVar())._new())._name_("$".__comma(self._nextAlias())));
-$4=_st($3)._yourself();
-variable=$4;
-$5=_st($IRAssignment())._new();
-_st($5)._add_(variable);
-_st($5)._add_(self._visit_(aNode));
-$6=_st($5)._yourself();
-_st(self._sequence())._add_($6);
-_st(_st(self._method())._internalVariables())._add_(variable);
-$7=variable;
-return $7;
-}, function($ctx1) {$ctx1.fill(self,"alias:",{aNode:aNode,variable:variable},smalltalk.IRASTTranslator)})},
-messageSends: ["ifTrue:", "isImmutable", "visit:", "variable:", "new", "name:", ",", "nextAlias", "yourself", "add:", "sequence", "internalVariables", "method"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "aliasTemporally:",
-fn: function (aCollection){
-var self=this;
-var threshold,result;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3,$5;
-threshold=(0);
-_st(aCollection)._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(each)._subtreeNeedsAliasing();
-if(smalltalk.assert($1)){
-threshold=i;
-return threshold;
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)})}));
-result=_st($OrderedCollection())._new();
-_st(aCollection)._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-$2=result;
-$4=_st(i).__lt_eq(threshold);
-if(smalltalk.assert($4)){
-$3=self._alias_(each);
-} else {
-$3=self._visit_(each);
-};
-return _st($2)._add_($3);
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)})}));
-$5=result;
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,result:result},smalltalk.IRASTTranslator)})},
-messageSends: ["withIndexDo:", "ifTrue:", "subtreeNeedsAliasing", "new", "add:", "ifTrue:ifFalse:", "<=", "alias:", "visit:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@method"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method:",
-fn: function (anIRMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=anIRMethod;
-return self}, function($ctx1) {$ctx1.fill(self,"method:",{anIRMethod:anIRMethod},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextAlias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@nextAlias"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@nextAlias"]=(0);
-self["@nextAlias"];
-} else {
-$1;
-};
-self["@nextAlias"]=_st(self["@nextAlias"]).__plus((1));
-$2=_st(self["@nextAlias"])._asString();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"nextAlias",{},smalltalk.IRASTTranslator)})},
-messageSends: ["ifNil:", "+", "asString"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sequence",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@sequence"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sequence",{},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sequence:",
-fn: function (anIRSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@sequence"]=anIRSequence;
-return self}, function($ctx1) {$ctx1.fill(self,"sequence:",{anIRSequence:anIRSequence},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@source"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.IRASTTranslator)})},
-messageSends: []}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitAssignmentNode:",
-fn: function (aNode){
-var self=this;
-var left,right,assignment;
-function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-right=self._visit_(_st(aNode)._right());
-left=self._visit_(_st(aNode)._left());
-$1=_st($IRAssignment())._new();
-_st($1)._add_(left);
-_st($1)._add_(right);
-$2=_st($1)._yourself();
-_st(self._sequence())._add_($2);
-$3=left;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment},smalltalk.IRASTTranslator)})},
-messageSends: ["visit:", "right", "left", "add:", "sequence", "new", "yourself"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockNode:",
-fn: function (aNode){
-var self=this;
-var closure;
-function $IRClosure(){return smalltalk.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
-function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st($IRClosure())._new();
-_st($1)._arguments_(_st(aNode)._parameters());
-_st($1)._scope_(_st(aNode)._scope());
-$2=_st($1)._yourself();
-closure=$2;
-_st(_st(_st(aNode)._scope())._temps())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$3=_st($IRTempDeclaration())._new();
-_st($3)._name_(_st(each)._name());
-_st($3)._scope_(_st(aNode)._scope());
-$4=_st($3)._yourself();
-return _st(closure)._add_($4);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(closure)._add_(self._visit_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$5=closure;
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure},smalltalk.IRASTTranslator)})},
-messageSends: ["arguments:", "new", "parameters", "scope:", "scope", "yourself", "do:", "temps", "add:", "name:", "name", "nodes", "visit:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockSequenceNode:",
-fn: function (aNode){
-var self=this;
-function $IRBlockSequence(){return smalltalk.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
-function $IRBlockReturn(){return smalltalk.IRBlockReturn||(typeof IRBlockReturn=="undefined"?nil:IRBlockReturn)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$1=self._withSequence_do_(_st($IRBlockSequence())._new(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(aNode)._nodes())._ifNotEmpty_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(self._sequence())._add_(self._visit_(each));
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)})}));
-$2=_st(_st(_st(aNode)._nodes())._last())._isReturnNode();
-if(smalltalk.assert($2)){
-return _st(self._sequence())._add_(self._visit_(_st(_st(aNode)._nodes())._last()));
-} else {
-$3=_st($IRBlockReturn())._new();
-_st($3)._add_(self._visit_(_st(_st(aNode)._nodes())._last()));
-$4=_st($3)._yourself();
-return _st(self._sequence())._add_($4);
-};
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "nodes", "do:", "allButLast", "add:", "sequence", "visit:", "ifFalse:ifTrue:", "isReturnNode", "last", "yourself"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitCascadeNode:",
-fn: function (aNode){
-var self=this;
-var alias;
-function $VariableNode(){return smalltalk.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aNode)._receiver())._isImmutable();
-if(! smalltalk.assert($1)){
-alias=self._alias_(_st(aNode)._receiver());
-alias;
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._receiver_(_st(_st($VariableNode())._new())._binding_(_st(alias)._variable()));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-};
-_st(_st(_st(aNode)._nodes())._allButLast())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._sequence())._add_(self._visit_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-$2=self._alias_(_st(_st(aNode)._nodes())._last());
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,alias:alias},smalltalk.IRASTTranslator)})},
-messageSends: ["ifFalse:", "isImmutable", "receiver", "alias:", "do:", "nodes", "receiver:", "binding:", "new", "variable", "allButLast", "add:", "sequence", "visit:", "last"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicArrayNode:",
-fn: function (aNode){
-var self=this;
-var array;
-function $IRDynamicArray(){return smalltalk.IRDynamicArray||(typeof IRDynamicArray=="undefined"?nil:IRDynamicArray)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-array=_st($IRDynamicArray())._new();
-_st(self._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(array)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=array;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},smalltalk.IRASTTranslator)})},
-messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicDictionaryNode:",
-fn: function (aNode){
-var self=this;
-var dictionary;
-function $IRDynamicDictionary(){return smalltalk.IRDynamicDictionary||(typeof IRDynamicDictionary=="undefined"?nil:IRDynamicDictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-dictionary=_st($IRDynamicDictionary())._new();
-_st(self._aliasTemporally_(_st(aNode)._nodes()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(dictionary)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=dictionary;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary},smalltalk.IRASTTranslator)})},
-messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitJSStatementNode:",
-fn: function (aNode){
-var self=this;
-function $IRVerbatim(){return smalltalk.IRVerbatim||(typeof IRVerbatim=="undefined"?nil:IRVerbatim)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRVerbatim())._new();
-_st($2)._source_(_st(_st(aNode)._source())._crlfSanitized());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["source:", "new", "crlfSanitized", "source", "yourself"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitMethodNode:",
-fn: function (aNode){
-var self=this;
-function $IRMethod(){return smalltalk.IRMethod||(typeof IRMethod=="undefined"?nil:IRMethod)}
-function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
-function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
-function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=_st($IRMethod())._new();
-_st($1)._source_(_st(self._source())._crlfSanitized());
-_st($1)._theClass_(self._theClass());
-_st($1)._arguments_(_st(aNode)._arguments());
-_st($1)._selector_(_st(aNode)._selector());
-_st($1)._messageSends_(_st(aNode)._messageSends());
-_st($1)._superSends_(_st(aNode)._superSends());
-_st($1)._classReferences_(_st(aNode)._classReferences());
-_st($1)._scope_(_st(aNode)._scope());
-$2=_st($1)._yourself();
-self._method_($2);
-_st(_st(_st(aNode)._scope())._temps())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$3=_st($IRTempDeclaration())._new();
-_st($3)._name_(_st(each)._name());
-_st($3)._scope_(_st(aNode)._scope());
-$4=_st($3)._yourself();
-return _st(self._method())._add_($4);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._method())._add_(self._visit_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$5=_st(_st(aNode)._scope())._hasLocalReturn();
-if(! smalltalk.assert($5)){
-$6=_st($IRVariable())._new();
-_st($6)._variable_(_st(_st(_st(aNode)._scope())._pseudoVars())._at_("self"));
-$7=_st($6)._yourself();
-_st(_st(self._method())._add_(_st($IRReturn())._new()))._add_($7);
-};
-$8=self._method();
-return $8;
-}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["method:", "source:", "new", "crlfSanitized", "source", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "messageSends:", "messageSends", "superSends:", "superSends", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "nodes", "visit:", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitReturnNode:",
-fn: function (aNode){
-var self=this;
-var return_;
-function $IRNonLocalReturn(){return smalltalk.IRNonLocalReturn||(typeof IRNonLocalReturn=="undefined"?nil:IRNonLocalReturn)}
-function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(aNode)._nonLocalReturn();
-if(smalltalk.assert($1)){
-return_=_st($IRNonLocalReturn())._new();
-} else {
-return_=_st($IRReturn())._new();
-};
-_st(return_)._scope_(_st(aNode)._scope());
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(return_)._add_(self._alias_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-$2=return_;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode,return_:return_},smalltalk.IRASTTranslator)})},
-messageSends: ["ifTrue:ifFalse:", "nonLocalReturn", "new", "scope:", "scope", "do:", "nodes", "add:", "alias:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSendNode:",
-fn: function (aNode){
-var self=this;
-var send,all,receiver,arguments;
-function $IRSend(){return smalltalk.IRSend||(typeof IRSend=="undefined"?nil:IRSend)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-send=_st($IRSend())._new();
-$1=send;
-_st($1)._selector_(_st(aNode)._selector());
-$2=_st($1)._index_(_st(aNode)._index());
-$3=_st(aNode)._superSend();
-if(smalltalk.assert($3)){
-_st(send)._classSend_(_st(self._theClass())._superclass());
-};
-all=self._aliasTemporally_(_st([_st(aNode)._receiver()]).__comma(_st(aNode)._arguments()));
-receiver=_st(all)._first();
-arguments=_st(all)._allButFirst();
-_st(send)._add_(receiver);
-_st(arguments)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(send)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$4=send;
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,send:send,all:all,receiver:receiver,arguments:arguments},smalltalk.IRASTTranslator)})},
-messageSends: ["new", "selector:", "selector", "index:", "index", "ifTrue:", "superSend", "classSend:", "superclass", "theClass", "aliasTemporally:", ",", "receiver", "arguments", "first", "allButFirst", "add:", "do:"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSequenceNode:",
-fn: function (aNode){
-var self=this;
-function $IRSequence(){return smalltalk.IRSequence||(typeof IRSequence=="undefined"?nil:IRSequence)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$1=self._withSequence_do_(_st($IRSequence())._new(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(aNode)._nodes())._do_((function(each){
-var instruction;
-return smalltalk.withContext(function($ctx3) {
-instruction=self._visit_(each);
-instruction;
-$2=_st(instruction)._isVariable();
-if(! smalltalk.assert($2)){
-return _st(self._sequence())._add_(instruction);
-};
-}, function($ctx3) {$ctx3.fillBlock({each:each,instruction:instruction},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["withSequence:do:", "new", "do:", "nodes", "visit:", "ifFalse:", "isVariable", "add:", "sequence"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitValueNode:",
-fn: function (aNode){
-var self=this;
-function $IRValue(){return smalltalk.IRValue||(typeof IRValue=="undefined"?nil:IRValue)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRValue())._new();
-_st($2)._value_(_st(aNode)._value());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["value:", "new", "value", "yourself"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitVariableNode:",
-fn: function (aNode){
-var self=this;
-function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRVariable())._new();
-_st($2)._variable_(_st(aNode)._binding());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["variable:", "new", "binding", "yourself"]}),
-smalltalk.IRASTTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withSequence:do:",
-fn: function (aSequence,aBlock){
-var self=this;
-var outerSequence;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-outerSequence=self._sequence();
-self._sequence_(aSequence);
-_st(aBlock)._value();
-self._sequence_(outerSequence);
-$1=aSequence;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"withSequence:do:",{aSequence:aSequence,aBlock:aBlock,outerSequence:outerSequence},smalltalk.IRASTTranslator)})},
-messageSends: ["sequence", "sequence:", "value"]}),
-smalltalk.IRASTTranslator);
-
-
-
-smalltalk.addClass('IRInstruction', smalltalk.Object, ['parent', 'instructions'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRInstruction_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInstruction)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(anObject)._parent_(self);
-$1=_st(self._instructions())._add_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},smalltalk.IRInstruction)})},
-messageSends: ["parent:", "add:", "instructions"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeAssigned",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeAssigned",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instructions",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@instructions"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@instructions"]=_st($OrderedCollection())._new();
-$1=self["@instructions"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"instructions",{},smalltalk.IRInstruction)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClosure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isClosure",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isMethod",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isReturn",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isSend",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSequence",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isSequence",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isTempDeclaration",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isTempDeclaration",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isVariable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isVariable",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._parent())._method();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.IRInstruction)})},
-messageSends: ["method", "parent"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "needsBoxingAsReceiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@parent"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parent",{},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@parent"]=anIRInstruction;
-return self}, function($ctx1) {$ctx1.fill(self,"parent:",{anIRInstruction:anIRInstruction},smalltalk.IRInstruction)})},
-messageSends: []}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._parent())._remove_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.IRInstruction)})},
-messageSends: ["remove:", "parent"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._instructions())._remove_(anIRInstruction);
-return self}, function($ctx1) {$ctx1.fill(self,"remove:",{anIRInstruction:anIRInstruction},smalltalk.IRInstruction)})},
-messageSends: ["remove:", "instructions"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "replace:with:",
-fn: function (anIRInstruction,anotherIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(anotherIRInstruction)._parent_(self);
-_st(self._instructions())._at_put_(_st(self._instructions())._indexOf_(anIRInstruction),anotherIRInstruction);
-return self}, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRInstruction)})},
-messageSends: ["parent:", "at:put:", "instructions", "indexOf:"]}),
-smalltalk.IRInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "replaceWith:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._parent())._replace_with_(self,anIRInstruction);
-return self}, function($ctx1) {$ctx1.fill(self,"replaceWith:",{anIRInstruction:anIRInstruction},smalltalk.IRInstruction)})},
-messageSends: ["replace:with:", "parent"]}),
-smalltalk.IRInstruction);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aBuilder){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._builder_(aBuilder);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aBuilder:aBuilder},smalltalk.IRInstruction.klass)})},
-messageSends: ["builder:", "new", "yourself"]}),
-smalltalk.IRInstruction.klass);
-
-
-smalltalk.addClass('IRAssignment', smalltalk.IRInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRAssignment_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRAssignment)})},
-messageSends: ["visitIRAssignment:"]}),
-smalltalk.IRAssignment);
-
-
-
-smalltalk.addClass('IRDynamicArray', smalltalk.IRInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRDynamicArray_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRDynamicArray)})},
-messageSends: ["visitIRDynamicArray:"]}),
-smalltalk.IRDynamicArray);
-
-
-
-smalltalk.addClass('IRDynamicDictionary', smalltalk.IRInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRDynamicDictionary_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRDynamicDictionary)})},
-messageSends: ["visitIRDynamicDictionary:"]}),
-smalltalk.IRDynamicDictionary);
-
-
-
-smalltalk.addClass('IRScopedInstruction', smalltalk.IRInstruction, ['scope'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.IRScopedInstruction)})},
-messageSends: []}),
-smalltalk.IRScopedInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope},smalltalk.IRScopedInstruction)})},
-messageSends: []}),
-smalltalk.IRScopedInstruction);
-
-
-
-smalltalk.addClass('IRClosureInstruction', smalltalk.IRScopedInstruction, ['arguments'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@arguments"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=[];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.IRClosureInstruction)})},
-messageSends: ["ifNil:"]}),
-smalltalk.IRClosureInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@arguments"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},smalltalk.IRClosureInstruction)})},
-messageSends: []}),
-smalltalk.IRClosureInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "locals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(self._arguments())._copy();
-_st($2)._addAll_(_st(self._tempDeclarations())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.IRClosureInstruction)})},
-messageSends: ["addAll:", "copy", "arguments", "collect:", "tempDeclarations", "name", "yourself"]}),
-smalltalk.IRClosureInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.IRClosureInstruction.superclass.fn.prototype._scope_.apply(_st(self), [aScope]);
-_st(aScope)._instruction_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope},smalltalk.IRClosureInstruction)})},
-messageSends: ["scope:", "instruction:"]}),
-smalltalk.IRClosureInstruction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tempDeclarations",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._instructions())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._isTempDeclaration();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{},smalltalk.IRClosureInstruction)})},
-messageSends: ["select:", "instructions", "isTempDeclaration"]}),
-smalltalk.IRClosureInstruction);
-
-
-
-smalltalk.addClass('IRClosure', smalltalk.IRClosureInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRClosure_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRClosure)})},
-messageSends: ["visitIRClosure:"]}),
-smalltalk.IRClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClosure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isClosure",{},smalltalk.IRClosure)})},
-messageSends: []}),
-smalltalk.IRClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sequence",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._instructions())._last();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sequence",{},smalltalk.IRClosure)})},
-messageSends: ["last", "instructions"]}),
-smalltalk.IRClosure);
-
-
-
-smalltalk.addClass('IRMethod', smalltalk.IRClosureInstruction, ['theClass', 'source', 'selector', 'classReferences', 'messageSends', 'superSends', 'internalVariables'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRMethod_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRMethod)})},
-messageSends: ["visitIRMethod:"]}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferences",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@classReferences"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classReferences",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferences:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@classReferences"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"classReferences:",{aCollection:aCollection},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "internalVariables",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@internalVariables"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@internalVariables"]=_st($Set())._new();
-$1=self["@internalVariables"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"internalVariables",{},smalltalk.IRMethod)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isMethod",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@messageSends"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@messageSends"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"messageSends:",{aCollection:aCollection},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@source"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@superSends"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"superSends",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSends:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@superSends"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"superSends:",{aCollection:aCollection},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.IRMethod)})},
-messageSends: []}),
-smalltalk.IRMethod);
-
-
-
-smalltalk.addClass('IRReturn', smalltalk.IRScopedInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRReturn_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRReturn)})},
-messageSends: ["visitIRReturn:"]}),
-smalltalk.IRReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeAssigned",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeAssigned",{},smalltalk.IRReturn)})},
-messageSends: []}),
-smalltalk.IRReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBlockReturn",{},smalltalk.IRReturn)})},
-messageSends: []}),
-smalltalk.IRReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{},smalltalk.IRReturn)})},
-messageSends: []}),
-smalltalk.IRReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNonLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isLocalReturn())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isNonLocalReturn",{},smalltalk.IRReturn)})},
-messageSends: ["not", "isLocalReturn"]}),
-smalltalk.IRReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isReturn",{},smalltalk.IRReturn)})},
-messageSends: []}),
-smalltalk.IRReturn);
-
-
-
-smalltalk.addClass('IRBlockReturn', smalltalk.IRReturn, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRBlockReturn_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRBlockReturn)})},
-messageSends: ["visitIRBlockReturn:"]}),
-smalltalk.IRBlockReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBlockReturn",{},smalltalk.IRBlockReturn)})},
-messageSends: []}),
-smalltalk.IRBlockReturn);
-
-
-
-smalltalk.addClass('IRNonLocalReturn', smalltalk.IRReturn, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRNonLocalReturn_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRNonLocalReturn)})},
-messageSends: ["visitIRNonLocalReturn:"]}),
-smalltalk.IRNonLocalReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isLocalReturn",{},smalltalk.IRNonLocalReturn)})},
-messageSends: []}),
-smalltalk.IRNonLocalReturn);
-
-
-
-smalltalk.addClass('IRTempDeclaration', smalltalk.IRScopedInstruction, ['name'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRTempDeclaration_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRTempDeclaration)})},
-messageSends: ["visitIRTempDeclaration:"]}),
-smalltalk.IRTempDeclaration);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isTempDeclaration",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isTempDeclaration",{},smalltalk.IRTempDeclaration)})},
-messageSends: []}),
-smalltalk.IRTempDeclaration);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@name"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.IRTempDeclaration)})},
-messageSends: []}),
-smalltalk.IRTempDeclaration);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@name"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.IRTempDeclaration)})},
-messageSends: []}),
-smalltalk.IRTempDeclaration);
-
-
-
-smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'classSend', 'index'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRSend_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRSend)})},
-messageSends: ["visitIRSend:"]}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@classSend"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classSend",{},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classSend:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@classSend"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"classSend:",{aClass:aClass},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@index"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@index"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"index:",{anInteger:anInteger},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSend",{},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.IRSend)})},
-messageSends: []}),
-smalltalk.IRSend);
-
-
-
-smalltalk.addClass('IRSequence', smalltalk.IRInstruction, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRSequence_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRSequence)})},
-messageSends: ["visitIRSequence:"]}),
-smalltalk.IRSequence);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSequence",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSequence",{},smalltalk.IRSequence)})},
-messageSends: []}),
-smalltalk.IRSequence);
-
-
-
-smalltalk.addClass('IRBlockSequence', smalltalk.IRSequence, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRBlockSequence_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRBlockSequence)})},
-messageSends: ["visitIRBlockSequence:"]}),
-smalltalk.IRBlockSequence);
-
-
-
-smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRValue_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRValue)})},
-messageSends: ["visitIRValue:"]}),
-smalltalk.IRValue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "needsBoxingAsReceiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{},smalltalk.IRValue)})},
-messageSends: []}),
-smalltalk.IRValue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@value"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.IRValue)})},
-messageSends: []}),
-smalltalk.IRValue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@value"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{aString:aString},smalltalk.IRValue)})},
-messageSends: []}),
-smalltalk.IRValue);
-
-
-
-smalltalk.addClass('IRVariable', smalltalk.IRInstruction, ['variable'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRVariable_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRVariable)})},
-messageSends: ["visitIRVariable:"]}),
-smalltalk.IRVariable);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isVariable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isVariable",{},smalltalk.IRVariable)})},
-messageSends: []}),
-smalltalk.IRVariable);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "needsBoxingAsReceiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._variable())._isPseudoVar())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{},smalltalk.IRVariable)})},
-messageSends: ["not", "isPseudoVar", "variable"]}),
-smalltalk.IRVariable);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variable"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variable",{},smalltalk.IRVariable)})},
-messageSends: []}),
-smalltalk.IRVariable);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variable:",
-fn: function (aScopeVariable){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variable"]=aScopeVariable;
-return self}, function($ctx1) {$ctx1.fill(self,"variable:",{aScopeVariable:aScopeVariable},smalltalk.IRVariable)})},
-messageSends: []}),
-smalltalk.IRVariable);
-
-
-
-smalltalk.addClass('IRVerbatim', smalltalk.IRInstruction, ['source'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRVerbatim_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRVerbatim)})},
-messageSends: ["visitIRVerbatim:"]}),
-smalltalk.IRVerbatim);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@source"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.IRVerbatim)})},
-messageSends: []}),
-smalltalk.IRVerbatim);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@source"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.IRVerbatim)})},
-messageSends: []}),
-smalltalk.IRVerbatim);
-
-
-
-smalltalk.addClass('IRVisitor', smalltalk.Object, [], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visit:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anIRInstruction)._accept_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visit:",{anIRInstruction:anIRInstruction},smalltalk.IRVisitor)})},
-messageSends: ["accept:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRAssignment:",
-fn: function (anIRAssignment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRAssignment);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRBlockReturn:",
-fn: function (anIRBlockReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRReturn_(anIRBlockReturn);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRBlockReturn:",{anIRBlockReturn:anIRBlockReturn},smalltalk.IRVisitor)})},
-messageSends: ["visitIRReturn:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRBlockSequence:",
-fn: function (anIRBlockSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRSequence_(anIRBlockSequence);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRBlockSequence:",{anIRBlockSequence:anIRBlockSequence},smalltalk.IRVisitor)})},
-messageSends: ["visitIRSequence:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRClosure:",
-fn: function (anIRClosure){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRClosure);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRDynamicArray:",
-fn: function (anIRDynamicArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRDynamicArray);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRDynamicDictionary:",
-fn: function (anIRDynamicDictionary){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRDynamicDictionary);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedClosure:",
-fn: function (anIRInlinedClosure){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRClosure_(anIRInlinedClosure);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},smalltalk.IRVisitor)})},
-messageSends: ["visitIRClosure:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedSequence:",
-fn: function (anIRInlinedSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRSequence_(anIRInlinedSequence);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},smalltalk.IRVisitor)})},
-messageSends: ["visitIRSequence:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInstruction:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(_st(anIRInstruction)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=anIRInstruction;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:",{anIRInstruction:anIRInstruction},smalltalk.IRVisitor)})},
-messageSends: ["do:", "instructions", "visit:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRMethod:",
-fn: function (anIRMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRNonLocalReturn:",
-fn: function (anIRNonLocalReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRNonLocalReturn);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRNonLocalReturnHandling:",
-fn: function (anIRNonLocalReturnHandling){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRNonLocalReturnHandling);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturnHandling:",{anIRNonLocalReturnHandling:anIRNonLocalReturnHandling},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRReturn:",
-fn: function (anIRReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRReturn);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRSend);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRSequence:",
-fn: function (anIRSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRSequence);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRTempDeclaration:",
-fn: function (anIRTempDeclaration){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRTempDeclaration);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRValue:",
-fn: function (anIRValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRValue);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRVariable:",
-fn: function (anIRVariable){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRVariable);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRVerbatim:",
-fn: function (anIRVerbatim){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._visitIRInstruction_(anIRVerbatim);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},smalltalk.IRVisitor)})},
-messageSends: ["visitIRInstruction:"]}),
-smalltalk.IRVisitor);
-
-
-
-smalltalk.addClass('IRJSTranslator', smalltalk.IRVisitor, ['stream', 'currentClass'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._stream())._contents();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contents",{},smalltalk.IRJSTranslator)})},
-messageSends: ["contents", "stream"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentClass",{},smalltalk.IRJSTranslator)})},
-messageSends: []}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@currentClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"currentClass:",{aClass:aClass},smalltalk.IRJSTranslator)})},
-messageSends: []}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $JSStream(){return smalltalk.JSStream||(typeof JSStream=="undefined"?nil:JSStream)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.IRJSTranslator.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@stream"]=_st($JSStream())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.IRJSTranslator)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@stream"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"stream",{},smalltalk.IRJSTranslator)})},
-messageSends: []}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stream:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@stream"]=aStream;
-return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.IRJSTranslator)})},
-messageSends: []}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRAssignment:",
-fn: function (anIRAssignment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._visit_(_st(_st(anIRAssignment)._instructions())._first());
-_st(self._stream())._nextPutAssignment();
-self._visit_(_st(_st(anIRAssignment)._instructions())._last());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRJSTranslator)})},
-messageSends: ["visit:", "first", "instructions", "nextPutAssignment", "stream", "last"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRClosure:",
-fn: function (anIRClosure){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutClosureWith_arguments_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutVars_(_st(_st(anIRClosure)._tempDeclarations())._collect_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(each)._name())._asVariableName();
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})})));
-return _st(self._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
-return smalltalk.withContext(function($ctx3) {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRClosure_.apply(_st(self), [anIRClosure]);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),_st(anIRClosure)._arguments());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutClosureWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutBlockContextFor:during:", "visitIRClosure:", "arguments"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRDynamicArray:",
-fn: function (anIRDynamicArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutAll_("[");
-_st(_st(anIRDynamicArray)._instructions())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(self["@stream"])._nextPutAll_("]");
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "instructions", "visit:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRDynamicDictionary:",
-fn: function (anIRDynamicDictionary){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutAll_("smalltalk.HashedCollection._from_([");
-_st(_st(anIRDynamicDictionary)._instructions())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(self._stream())._nextPutAll_("])");
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "instructions", "visit:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRMethod:",
-fn: function (anIRMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._stream())._nextPutMethodDeclaration_with_(anIRMethod,(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutFunctionWith_arguments_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(self._stream())._nextPutVars_(_st(_st(anIRMethod)._tempDeclarations())._collect_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(each)._name())._asVariableName();
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)})})));
-_st(_st(anIRMethod)._classReferences())._do_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(self._stream())._nextPutClassRefFunction_(each);
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,4)})}));
-return _st(self._stream())._nextPutContextFor_during_(anIRMethod,(function(){
-return smalltalk.withContext(function($ctx4) {
-$1=_st(_st(anIRMethod)._internalVariables())._notEmpty();
-if(smalltalk.assert($1)){
-_st(self._stream())._nextPutVars_(_st(_st(_st(anIRMethod)._internalVariables())._asArray())._collect_((function(each){
-return smalltalk.withContext(function($ctx5) {
-return _st(_st(each)._variable())._alias();
-}, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,7)})})));
-};
-$2=_st(_st(anIRMethod)._scope())._hasNonLocalReturn();
-if(smalltalk.assert($2)){
-return _st(self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
-return smalltalk.withContext(function($ctx5) {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4,9)})}));
-} else {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
-};
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}),_st(anIRMethod)._arguments());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutMethodDeclaration:with:", "stream", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "classReferences", "nextPutClassRefFunction:", "nextPutContextFor:during:", "ifTrue:", "notEmpty", "internalVariables", "asArray", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRNonLocalReturn:",
-fn: function (anIRNonLocalReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutNonLocalReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRNonLocalReturn_.apply(_st(self), [anIRNonLocalReturn]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutNonLocalReturnWith:", "stream", "visitIRNonLocalReturn:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRReturn:",
-fn: function (anIRReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRReturn_.apply(_st(self), [anIRReturn]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutReturnWith:", "stream", "visitIRReturn:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anIRSend)._classSend();
-if(($receiver = $1) == nil || $receiver == undefined){
-self._visitSend_(anIRSend);
-} else {
-self._visitSuperSend_(anIRSend);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
-messageSends: ["ifNil:ifNotNil:", "classSend", "visitSend:", "visitSuperSend:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRSequence:",
-fn: function (anIRSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutSequenceWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(anIRSequence)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._stream())._nextPutStatementWith_(self._visit_(each));
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutSequenceWith:", "stream", "do:", "instructions", "nextPutStatementWith:", "visit:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRTempDeclaration:",
-fn: function (anIRTempDeclaration){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration},smalltalk.IRJSTranslator)})},
-messageSends: []}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRValue:",
-fn: function (anIRValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutAll_(_st(_st(anIRValue)._value())._asJavascript());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "asJavascript", "value"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRVariable:",
-fn: function (anIRVariable){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(anIRVariable)._variable())._name()).__eq("thisContext");
-if(smalltalk.assert($1)){
-_st(self._stream())._nextPutAll_("smalltalk.getThisContext()");
-} else {
-_st(self._stream())._nextPutAll_(_st(_st(anIRVariable)._variable())._alias());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable},smalltalk.IRJSTranslator)})},
-messageSends: ["ifTrue:ifFalse:", "=", "name", "variable", "nextPutAll:", "stream", "alias"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRVerbatim:",
-fn: function (anIRVerbatim){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutStatementWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(_st(anIRVerbatim)._source());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutStatementWith:", "stream", "nextPutAll:", "source"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitReceiver:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(anIRInstruction)._needsBoxingAsReceiver();
-if(! smalltalk.assert($1)){
-$2=self._visit_(anIRInstruction);
-return $2;
-};
-_st(self._stream())._nextPutAll_("_st(");
-self._visit_(anIRInstruction);
-_st(self._stream())._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"visitReceiver:",{anIRInstruction:anIRInstruction},smalltalk.IRJSTranslator)})},
-messageSends: ["ifFalse:", "needsBoxingAsReceiver", "visit:", "nextPutAll:", "stream"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._visitReceiver_(_st(_st(anIRSend)._instructions())._first());
-_st(self._stream())._nextPutAll_(_st(".".__comma(_st(_st(anIRSend)._selector())._asSelector())).__comma("("));
-_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(self._stream())._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
-messageSends: ["visitReceiver:", "first", "instructions", "nextPutAll:", "stream", ",", "asSelector", "selector", "do:separatedBy:", "allButFirst", "visit:"]}),
-smalltalk.IRJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSuperSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._stream();
-_st($1)._nextPutAll_(_st(self._currentClass())._asJavascript());
-_st($1)._nextPutAll_(".superclass.fn.prototype.");
-_st($1)._nextPutAll_(_st(_st(_st(anIRSend)._selector())._asSelector()).__comma(".apply("));
-$2=_st($1)._nextPutAll_("_st(");
-self._visit_(_st(_st(anIRSend)._instructions())._first());
-_st(self._stream())._nextPutAll_("), [");
-_st(_st(_st(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(self._stream())._nextPutAll_("])");
-return self}, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "asJavascript", "currentClass", ",", "asSelector", "selector", "visit:", "first", "instructions", "do:separatedBy:", "allButFirst"]}),
-smalltalk.IRJSTranslator);
-
-
-
-smalltalk.addClass('JSStream', smalltalk.Object, ['stream'], 'Compiler-IR');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@stream"])._contents();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contents",{},smalltalk.JSStream)})},
-messageSends: ["contents"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.JSStream.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@stream"]=""._writeStream();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.JSStream)})},
-messageSends: ["initialize", "writeStream"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lf",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"lf",{},smalltalk.JSStream)})},
-messageSends: ["lf"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPut:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._nextPut_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString},smalltalk.JSStream)})},
-messageSends: ["nextPut:"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutAll:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._nextPutAll_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutAssignment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._nextPutAll_("=");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutAssignment",{},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutBlockContextFor:during:",
-fn: function (anIRClosure,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=self;
-_st($1)._nextPutAll_(_st("return smalltalk.withContext(function(".__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
-$2=_st($1)._lf();
-_st(aBlock)._value();
-$3=self;
-_st($3)._nextPutAll_(_st("}, function(".__comma(_st(_st(anIRClosure)._scope())._alias())).__comma(") {"));
-$4=_st($3)._nextPutAll_(_st(_st(_st(anIRClosure)._scope())._alias()).__comma(".fillBlock({"));
-_st(_st(anIRClosure)._locals())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$5=self;
-_st($5)._nextPutAll_(_st(each)._asVariableName());
-_st($5)._nextPutAll_(":");
-$6=_st($5)._nextPutAll_(_st(each)._asVariableName());
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$7=self;
-_st($7)._nextPutAll_("},");
-$8=_st($7)._nextPutAll_(_st(_st(_st(_st(_st(_st(anIRClosure)._scope())._outerScope())._alias()).__comma(",")).__comma(_st(_st(_st(anIRClosure)._scope())._blockIndex())._asString())).__comma(")})"));
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", ",", "alias", "scope", "lf", "value", "do:separatedBy:", "locals", "asVariableName", "outerScope", "asString", "blockIndex"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutClassRefFunction:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@stream"];
-_st($1)._nextPutAll_("function $");
-_st($1)._nextPutAll_(aString);
-_st($1)._nextPutAll_("(){return smalltalk.");
-_st($1)._nextPutAll_(aString);
-_st($1)._nextPutAll_("||(typeof ");
-_st($1)._nextPutAll_(aString);
-_st($1)._nextPutAll_("==\x22undefined\x22?nil:");
-_st($1)._nextPutAll_(aString);
-_st($1)._nextPutAll_(")}");
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutClassRefFunction:",{aString:aString},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "lf"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutClosureWith:arguments:",
-fn: function (aBlock,anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self["@stream"])._nextPutAll_("(function(");
-_st(anArray)._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$1=self["@stream"];
-_st($1)._nextPutAll_("){");
-$2=_st($1)._lf();
-_st(aBlock)._value();
-_st(self["@stream"])._nextPutAll_("})");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutClosureWith:arguments:",{aBlock:aBlock,anArray:anArray},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutContextFor:during:",
-fn: function (aMethod,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=self;
-_st($1)._nextPutAll_(_st("return smalltalk.withContext(function(".__comma(_st(_st(aMethod)._scope())._alias())).__comma(") { "));
-$2=_st($1)._lf();
-_st(aBlock)._value();
-$3=self;
-_st($3)._nextPutAll_(_st(_st("}, function(".__comma(_st(_st(aMethod)._scope())._alias())).__comma(") {")).__comma(_st(_st(aMethod)._scope())._alias()));
-$4=_st($3)._nextPutAll_(_st(".fill(self,".__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(",{"));
-_st(_st(aMethod)._locals())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$5=self;
-_st($5)._nextPutAll_(_st(each)._asVariableName());
-_st($5)._nextPutAll_(":");
-$6=_st($5)._nextPutAll_(_st(each)._asVariableName());
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$7=self;
-_st($7)._nextPutAll_("},");
-_st($7)._nextPutAll_(_st(_st(aMethod)._theClass())._asJavascript());
-$8=_st($7)._nextPutAll_(")})");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", ",", "alias", "scope", "lf", "value", "asJavascript", "selector", "do:separatedBy:", "locals", "asVariableName", "theClass"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutFunctionWith:arguments:",
-fn: function (aBlock,anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@stream"])._nextPutAll_("fn: function(");
-_st(anArray)._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(_st(each)._asVariableName());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$1=self["@stream"];
-_st($1)._nextPutAll_("){");
-$2=_st($1)._lf();
-$3=self["@stream"];
-_st($3)._nextPutAll_("var self=this;");
-$4=_st($3)._lf();
-_st(aBlock)._value();
-_st(self["@stream"])._nextPutAll_("}");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutFunctionWith:arguments:",{aBlock:aBlock,anArray:anArray},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutIf:with:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self["@stream"])._nextPutAll_("if(");
-_st(aBlock)._value();
-$1=self["@stream"];
-_st($1)._nextPutAll_("){");
-$2=_st($1)._lf();
-_st(anotherBlock)._value();
-_st(self["@stream"])._nextPutAll_("}");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutIf:with:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "value", "lf"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutIfElse:with:with:",
-fn: function (aBlock,ifBlock,elseBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@stream"])._nextPutAll_("if(");
-_st(aBlock)._value();
-$1=self["@stream"];
-_st($1)._nextPutAll_("){");
-$2=_st($1)._lf();
-_st(ifBlock)._value();
-$3=self["@stream"];
-_st($3)._nextPutAll_("} else {");
-$4=_st($3)._lf();
-_st(elseBlock)._value();
-_st(self["@stream"])._nextPutAll_("}");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutIfElse:with:with:",{aBlock:aBlock,ifBlock:ifBlock,elseBlock:elseBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "value", "lf"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutMethodDeclaration:with:",
-fn: function (aMethod,aBlock){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-$1=self["@stream"];
-_st($1)._nextPutAll_("smalltalk.method({");
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("selector: ".__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("source: ".__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
-$2=_st($1)._lf();
-_st(aBlock)._value();
-$3=self["@stream"];
-_st($3)._nextPutAll_(_st(",".__comma(_st($String())._lf())).__comma("messageSends: "));
-_st($3)._nextPutAll_(_st(_st(_st(_st(aMethod)._messageSends())._asArray())._asJavascript()).__comma(","));
-_st($3)._lf();
-_st($3)._nextPutAll_(_st("args: ".__comma(_st(_st(_st(_st(aMethod)._arguments())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._value();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asArray())._asJavascript())).__comma(","));
-_st($3)._lf();
-$4=_st($3)._nextPutAll_("referencedClasses: [");
-_st(_st(aMethod)._classReferences())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(_st(each)._asJavascript());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$5=self["@stream"];
-_st($5)._nextPutAll_("]");
-$6=_st($5)._nextPutAll_("})");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutMethodDeclaration:with:",{aMethod:aMethod,aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "source", "value", "asArray", "messageSends", "collect:", "arguments", "do:separatedBy:", "classReferences"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutNonLocalReturnHandlingWith:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self["@stream"];
-_st($1)._nextPutAll_("var $early={};");
-_st($1)._lf();
-_st($1)._nextPutAll_("try {");
-$2=_st($1)._lf();
-_st(aBlock)._value();
-$3=self["@stream"];
-_st($3)._nextPutAll_("}");
-_st($3)._lf();
-_st($3)._nextPutAll_("catch(e) {if(e===$early)return e[0]; throw e}");
-$4=_st($3)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnHandlingWith:",{aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "lf", "value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutNonLocalReturnWith:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._nextPutAll_("throw $early=[");
-_st(aBlock)._value();
-_st(self["@stream"])._nextPutAll_("]");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnWith:",{aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", "value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@stream"])._nextPutAll_("return ");
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutReturn",{},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutReturnWith:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._nextPutReturn();
-_st(aBlock)._value();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutReturnWith:",{aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutReturn", "value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutSequenceWith:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aBlock)._value();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutSequenceWith:",{aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["value"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutStatement:with:",
-fn: function (anInteger,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self["@stream"];
-_st($1)._nextPutAll_(_st("case ".__comma(_st(anInteger)._asString())).__comma(":"));
-$2=_st($1)._lf();
-self._nextPutStatementWith_(aBlock);
-$3=self["@stream"];
-_st($3)._nextPutAll_(_st("smalltalk.thisContext.pc=".__comma(_st(_st(anInteger).__plus((1)))._asString())).__comma(";"));
-$4=_st($3)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutStatement:with:",{anInteger:anInteger,aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", ",", "asString", "lf", "nextPutStatementWith:", "+"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutStatementWith:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(aBlock)._value();
-$1=self["@stream"];
-_st($1)._nextPutAll_(";");
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutStatementWith:",{aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["value", "nextPutAll:", "lf"]}),
-smalltalk.JSStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutVars:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-var $early={};
-try {
-_st(aCollection)._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(self["@stream"])._nextPutAll_("var ");
-_st(aCollection)._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$2=self["@stream"];
-_st($2)._nextPutAll_(";");
-$3=_st($2)._lf();
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection},smalltalk.JSStream)})},
-messageSends: ["ifEmpty:", "nextPutAll:", "do:separatedBy:", "lf"]}),
-smalltalk.JSStream);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "appendToInstruction:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(anIRInstruction)._appendBlock_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"appendToInstruction:",{anIRInstruction:anIRInstruction},smalltalk.BlockClosure)})},
-messageSends: ["appendBlock:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asVariableName",
-fn: function (){
-var self=this;
-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_(self);
-if(smalltalk.assert($2)){
-$1=self.__comma("_");
-} else {
-$1=self;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asVariableName",{},smalltalk.String)})},
-messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", "current", ","]}),
-smalltalk.String);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 25
js/Compiler-IR.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-IR", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Compiler-Core", "amber_core/Kernel-Objects", "amber_core/Kernel-Methods", "amber_core/Kernel-Collections"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-IR');
+smalltalk.packages["Compiler-IR"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('IRASTTranslator', smalltalk.NodeVisitor, ['source', 'theClass', 'method', 'sequence', 'nextAlias'], 'Compiler-IR');
 smalltalk.IRASTTranslator.comment="I am the AST (abstract syntax tree) visitor responsible for building the intermediate representation graph.";
@@ -3562,29 +3563,6 @@ referencedClasses: []
 }),
 smalltalk.JSStream);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutStatement:with:",
-category: 'streaming',
-fn: function (anInteger,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self["@stream"];
-_st($1)._nextPutAll_(_st("case ".__comma(_st(anInteger)._asString())).__comma(":"));
-$2=_st($1)._lf();
-self._nextPutStatementWith_(aBlock);
-$3=self["@stream"];
-_st($3)._nextPutAll_(_st("smalltalk.thisContext.pc=".__comma(_st(_st(anInteger).__plus((1)))._asString())).__comma(";"));
-$4=_st($3)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutStatement:with:",{anInteger:anInteger,aBlock:aBlock},smalltalk.JSStream)})},
-args: ["anInteger", "aBlock"],
-source: "nextPutStatement: anInteger with: aBlock\x0a\x09stream nextPutAll: 'case ', anInteger asString, ':'; lf.\x0a\x09self nextPutStatementWith: aBlock.\x0a\x09stream nextPutAll: 'smalltalk.thisContext.pc=', (anInteger + 1) asString, ';'; lf",
-messageSends: ["nextPutAll:", ",", "asString", "lf", "nextPutStatementWith:", "+"],
-referencedClasses: []
-}),
-smalltalk.JSStream);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "nextPutStatementWith:",
@@ -3682,4 +3660,4 @@ referencedClasses: ["Smalltalk"]
 }),
 smalltalk.String);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1161
js/Compiler-Inlining.deploy.js

@@ -1,1161 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Inlining');
-
-smalltalk.addClass('IRInlinedAssignment', smalltalk.IRAssignment, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRInlinedAssignment_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedAssignment)})},
-messageSends: ["visitIRInlinedAssignment:"]}),
-smalltalk.IRInlinedAssignment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInlinedAssignment)})},
-messageSends: []}),
-smalltalk.IRInlinedAssignment);
-
-
-
-smalltalk.addClass('IRInlinedClosure', smalltalk.IRClosure, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedClosure_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedClosure)})},
-messageSends: ["visitIRInlinedClosure:"]}),
-smalltalk.IRInlinedClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInlinedClosure)})},
-messageSends: []}),
-smalltalk.IRInlinedClosure);
-
-
-
-smalltalk.addClass('IRInlinedReturn', smalltalk.IRReturn, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aVisitor)._visitIRInlinedReturn_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedReturn)})},
-messageSends: ["visitIRInlinedReturn:"]}),
-smalltalk.IRInlinedReturn);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInlinedReturn)})},
-messageSends: []}),
-smalltalk.IRInlinedReturn);
-
-
-
-smalltalk.addClass('IRInlinedSend', smalltalk.IRSend, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitInlinedSend_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedSend)})},
-messageSends: ["visitInlinedSend:"]}),
-smalltalk.IRInlinedSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInlinedSend)})},
-messageSends: []}),
-smalltalk.IRInlinedSend);
-
-
-
-smalltalk.addClass('IRInlinedIfFalse', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedIfFalse_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedIfFalse)})},
-messageSends: ["visitIRInlinedIfFalse:"]}),
-smalltalk.IRInlinedIfFalse);
-
-
-
-smalltalk.addClass('IRInlinedIfNilIfNotNil', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedIfNilIfNotNil_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedIfNilIfNotNil)})},
-messageSends: ["visitIRInlinedIfNilIfNotNil:"]}),
-smalltalk.IRInlinedIfNilIfNotNil);
-
-
-
-smalltalk.addClass('IRInlinedIfTrue', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedIfTrue_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedIfTrue)})},
-messageSends: ["visitIRInlinedIfTrue:"]}),
-smalltalk.IRInlinedIfTrue);
-
-
-
-smalltalk.addClass('IRInlinedIfTrueIfFalse', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedIfTrueIfFalse_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedIfTrueIfFalse)})},
-messageSends: ["visitIRInlinedIfTrueIfFalse:"]}),
-smalltalk.IRInlinedIfTrueIfFalse);
-
-
-
-smalltalk.addClass('IRInlinedSequence', smalltalk.IRBlockSequence, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-fn: function (aVisitor){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aVisitor)._visitIRInlinedSequence_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},smalltalk.IRInlinedSequence)})},
-messageSends: ["visitIRInlinedSequence:"]}),
-smalltalk.IRInlinedSequence);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.IRInlinedSequence)})},
-messageSends: []}),
-smalltalk.IRInlinedSequence);
-
-
-
-smalltalk.addClass('IRInliner', smalltalk.IRVisitor, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assignmentInliner",
-fn: function (){
-var self=this;
-function $IRAssignmentInliner(){return smalltalk.IRAssignmentInliner||(typeof IRAssignmentInliner=="undefined"?nil:IRAssignmentInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRAssignmentInliner())._new();
-_st($2)._translator_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"assignmentInliner",{},smalltalk.IRInliner)})},
-messageSends: ["translator:", "new", "yourself"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "returnInliner",
-fn: function (){
-var self=this;
-function $IRReturnInliner(){return smalltalk.IRReturnInliner||(typeof IRReturnInliner=="undefined"?nil:IRReturnInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRReturnInliner())._new();
-_st($2)._translator_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"returnInliner",{},smalltalk.IRInliner)})},
-messageSends: ["translator:", "new", "yourself"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendInliner",
-fn: function (){
-var self=this;
-function $IRSendInliner(){return smalltalk.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($IRSendInliner())._new();
-_st($2)._translator_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendInliner",{},smalltalk.IRInliner)})},
-messageSends: ["translator:", "new", "yourself"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInlineAssignment:",
-fn: function (anIRAssignment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(anIRAssignment)._isInlined())._not())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(_st(anIRAssignment)._instructions())._last())._isSend())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._shouldInlineSend_(_st(_st(anIRAssignment)._instructions())._last());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRInliner)})},
-messageSends: ["and:", "not", "isInlined", "isSend", "last", "instructions", "shouldInlineSend:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInlineReturn:",
-fn: function (anIRReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(anIRReturn)._isInlined())._not())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(_st(anIRReturn)._instructions())._first())._isSend())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._shouldInlineSend_(_st(_st(anIRReturn)._instructions())._first());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn},smalltalk.IRInliner)})},
-messageSends: ["and:", "not", "isInlined", "isSend", "first", "instructions", "shouldInlineSend:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInlineSend:",
-fn: function (anIRSend){
-var self=this;
-function $IRSendInliner(){return smalltalk.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(anIRSend)._isInlined())._not())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($IRSendInliner())._shouldInline_(anIRSend);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend},smalltalk.IRInliner)})},
-messageSends: ["and:", "not", "isInlined", "shouldInline:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "transformNonLocalReturn:",
-fn: function (anIRNonLocalReturn){
-var self=this;
-var localReturn;
-function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(_st(anIRNonLocalReturn)._scope())._canInlineNonLocalReturns();
-if(smalltalk.assert($1)){
-_st(_st(_st(anIRNonLocalReturn)._scope())._methodScope())._removeNonLocalReturn_(_st(anIRNonLocalReturn)._scope());
-$2=_st($IRReturn())._new();
-_st($2)._scope_(_st(anIRNonLocalReturn)._scope());
-$3=_st($2)._yourself();
-localReturn=$3;
-localReturn;
-_st(_st(anIRNonLocalReturn)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(localReturn)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-_st(anIRNonLocalReturn)._replaceWith_(localReturn);
-$4=localReturn;
-return $4;
-};
-$5=smalltalk.IRInliner.superclass.fn.prototype._visitIRNonLocalReturn_.apply(_st(self), [anIRNonLocalReturn]);
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"transformNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn},smalltalk.IRInliner)})},
-messageSends: ["ifTrue:", "canInlineNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "scope:", "new", "yourself", "do:", "instructions", "add:", "replaceWith:", "visitIRNonLocalReturn:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRAssignment:",
-fn: function (anIRAssignment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._shouldInlineAssignment_(anIRAssignment);
-if(smalltalk.assert($2)){
-$1=_st(self._assignmentInliner())._inlineAssignment_(anIRAssignment);
-} else {
-$1=smalltalk.IRInliner.superclass.fn.prototype._visitIRAssignment_.apply(_st(self), [anIRAssignment]);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRInliner)})},
-messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRNonLocalReturn:",
-fn: function (anIRNonLocalReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._transformNonLocalReturn_(anIRNonLocalReturn);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},smalltalk.IRInliner)})},
-messageSends: ["transformNonLocalReturn:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRReturn:",
-fn: function (anIRReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._shouldInlineReturn_(anIRReturn);
-if(smalltalk.assert($2)){
-$1=_st(self._returnInliner())._inlineReturn_(anIRReturn);
-} else {
-$1=smalltalk.IRInliner.superclass.fn.prototype._visitIRReturn_.apply(_st(self), [anIRReturn]);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},smalltalk.IRInliner)})},
-messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"]}),
-smalltalk.IRInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._shouldInlineSend_(anIRSend);
-if(smalltalk.assert($2)){
-$1=_st(self._sendInliner())._inlineSend_(anIRSend);
-} else {
-$1=smalltalk.IRInliner.superclass.fn.prototype._visitIRSend_.apply(_st(self), [anIRSend]);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},smalltalk.IRInliner)})},
-messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"]}),
-smalltalk.IRInliner);
-
-
-
-smalltalk.addClass('IRInliningJSTranslator', smalltalk.IRJSTranslator, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedAssignment:",
-fn: function (anIRInlinedAssignment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._visit_(_st(_st(anIRInlinedAssignment)._instructions())._last());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedAssignment:",{anIRInlinedAssignment:anIRInlinedAssignment},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["visit:", "last", "instructions"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedClosure:",
-fn: function (anIRInlinedClosure){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutVars_(_st(_st(anIRInlinedClosure)._tempDeclarations())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._name())._asVariableName();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-_st(_st(anIRInlinedClosure)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "instructions", "visit:"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedIfFalse:",
-fn: function (anIRInlinedIfFalse){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutIf_with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutAll_("! smalltalk.assert(");
-self._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._first());
-return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedIfNil:",
-fn: function (anIRInlinedIfNil){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutIf_with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutAll_("($receiver = ");
-self._visit_(_st(_st(anIRInlinedIfNil)._instructions())._first());
-return _st(self._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNil)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:",{anIRInlinedIfNil:anIRInlinedIfNil},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedIfNilIfNotNil:",
-fn: function (anIRInlinedIfNilIfNotNil){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutIfElse_with_with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutAll_("($receiver = ");
-self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._first());
-return _st(self._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "second", "third"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedIfTrue:",
-fn: function (anIRInlinedIfTrue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutIf_with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutAll_("smalltalk.assert(");
-self._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._first());
-return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedIfTrueIfFalse:",
-fn: function (anIRInlinedIfTrueIfFalse){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutIfElse_with_with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._stream())._nextPutAll_("smalltalk.assert(");
-self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._first());
-return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "second", "third"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedNonLocalReturn:",
-fn: function (anIRInlinedReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stream())._nextPutStatementWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedReturn)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(self._stream())._nextPutNonLocalReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:",{anIRInlinedReturn:anIRInlinedReturn},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutStatementWith:", "stream", "visit:", "last", "instructions", "nextPutNonLocalReturnWith:"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedReturn:",
-fn: function (anIRInlinedReturn){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._visit_(_st(_st(anIRInlinedReturn)._instructions())._last());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedReturn:",{anIRInlinedReturn:anIRInlinedReturn},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["visit:", "last", "instructions"]}),
-smalltalk.IRInliningJSTranslator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitIRInlinedSequence:",
-fn: function (anIRInlinedSequence){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(anIRInlinedSequence)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutStatementWith_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._visit_(each);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["do:", "instructions", "nextPutStatementWith:", "stream", "visit:"]}),
-smalltalk.IRInliningJSTranslator);
-
-
-
-smalltalk.addClass('IRSendInliner', smalltalk.Object, ['send', 'translator'], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifFalse:",
-fn: function (anIRInstruction){
-var self=this;
-function $IRInlinedIfFalse(){return smalltalk.IRInlinedIfFalse||(typeof IRInlinedIfFalse=="undefined"?nil:IRInlinedIfFalse)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._inlinedSend_with_(_st($IRInlinedIfFalse())._new(),anIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifFalse:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:", "new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifFalse:ifTrue:",
-fn: function (anIRInstruction,anotherIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._perform_withArguments_("ifTrue:ifFalse:",[anotherIRInstruction,anIRInstruction]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["perform:withArguments:"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:",
-fn: function (anIRInstruction){
-var self=this;
-function $IRInlinedIfNilIfNotNil(){return smalltalk.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
-function $IRClosure(){return smalltalk.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
-function $IRBlockSequence(){return smalltalk.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$2=_st($IRClosure())._new();
-_st($2)._scope_(_st(_st(anIRInstruction)._scope())._copy());
-$3=_st($IRBlockSequence())._new();
-_st($3)._add_(_st(_st(self._send())._instructions())._first());
-$4=_st($3)._yourself();
-_st($2)._add_($4);
-$5=_st($2)._yourself();
-$1=self._inlinedSend_with_with_(_st($IRInlinedIfNilIfNotNil())._new(),anIRInstruction,$5);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:ifNotNil:",
-fn: function (anIRInstruction,anotherIRInstruction){
-var self=this;
-function $IRInlinedIfNilIfNotNil(){return smalltalk.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._inlinedSend_with_with_(_st($IRInlinedIfNilIfNotNil())._new(),anIRInstruction,anotherIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:with:", "new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:",
-fn: function (anIRInstruction){
-var self=this;
-function $IRInlinedIfNilIfNotNil(){return smalltalk.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
-function $IRClosure(){return smalltalk.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
-function $IRBlockSequence(){return smalltalk.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$2=_st($IRClosure())._new();
-_st($2)._scope_(_st(_st(anIRInstruction)._scope())._copy());
-$3=_st($IRBlockSequence())._new();
-_st($3)._add_(_st(_st(self._send())._instructions())._first());
-$4=_st($3)._yourself();
-_st($2)._add_($4);
-$5=_st($2)._yourself();
-$1=self._inlinedSend_with_with_(_st($IRInlinedIfNilIfNotNil())._new(),$5,anIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:ifNil:",
-fn: function (anIRInstruction,anotherIRInstruction){
-var self=this;
-function $IRInlinedIfNilIfNotNil(){return smalltalk.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._inlinedSend_with_with_(_st($IRInlinedIfNilIfNotNil())._new(),anotherIRInstruction,anIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:with:", "new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifTrue:",
-fn: function (anIRInstruction){
-var self=this;
-function $IRInlinedIfTrue(){return smalltalk.IRInlinedIfTrue||(typeof IRInlinedIfTrue=="undefined"?nil:IRInlinedIfTrue)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._inlinedSend_with_(_st($IRInlinedIfTrue())._new(),anIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifTrue:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:", "new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifTrue:ifFalse:",
-fn: function (anIRInstruction,anotherIRInstruction){
-var self=this;
-function $IRInlinedIfTrueIfFalse(){return smalltalk.IRInlinedIfTrueIfFalse||(typeof IRInlinedIfTrueIfFalse=="undefined"?nil:IRInlinedIfTrueIfFalse)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._inlinedSend_with_with_(_st($IRInlinedIfTrueIfFalse())._new(),anIRInstruction,anotherIRInstruction);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedSend:with:with:", "new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineClosure:",
-fn: function (anIRClosure){
-var self=this;
-var inlinedClosure,sequence,statements;
-function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
-function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
-function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
-function $AliasVar(){return smalltalk.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
-inlinedClosure=self._inlinedClosure();
-_st(inlinedClosure)._scope_(_st(anIRClosure)._scope());
-_st(_st(anIRClosure)._tempDeclarations())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(inlinedClosure)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-sequence=self._inlinedSequence();
-_st(_st(anIRClosure)._arguments())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st($IRTempDeclaration())._new();
-_st($1)._name_(each);
-$2=_st($1)._yourself();
-_st(inlinedClosure)._add_($2);
-$3=_st($IRAssignment())._new();
-$4=_st($AliasVar())._new();
-_st($4)._scope_(_st(inlinedClosure)._scope());
-_st($4)._name_(each);
-$5=_st($4)._yourself();
-_st($3)._add_(_st(_st($IRVariable())._new())._variable_($5));
-$6=_st($AliasVar())._new();
-_st($6)._scope_(_st(inlinedClosure)._scope());
-_st($6)._name_("$receiver");
-$7=_st($6)._yourself();
-_st($3)._add_(_st(_st($IRVariable())._new())._variable_($7));
-$8=_st($3)._yourself();
-return _st(sequence)._add_($8);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-_st(inlinedClosure)._add_(sequence);
-statements=_st(_st(_st(anIRClosure)._instructions())._last())._instructions();
-_st(statements)._ifNotEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(_st(statements)._allButLast())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(sequence)._add_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)})}));
-$9=_st(_st(_st(statements)._last())._isReturn())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(statements)._last())._isBlockReturn();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-if(smalltalk.assert($9)){
-return _st(sequence)._add_(_st(_st(_st(statements)._last())._instructions())._first());
-} else {
-return _st(sequence)._add_(_st(statements)._last());
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$10=inlinedClosure;
-return $10;
-}, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements},smalltalk.IRSendInliner)})},
-messageSends: ["inlinedClosure", "scope:", "scope", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "instructions", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "and:", "isReturn", "isBlockReturn", "first"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineSend:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._send_(anIRSend);
-$1=self._perform_withArguments_(_st(self._send())._selector(),_st(_st(self._send())._instructions())._allButFirst());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlineSend:",{anIRSend:anIRSend},smalltalk.IRSendInliner)})},
-messageSends: ["send:", "perform:withArguments:", "selector", "send", "allButFirst", "instructions"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedClosure",
-fn: function (){
-var self=this;
-function $IRInlinedClosure(){return smalltalk.IRInlinedClosure||(typeof IRInlinedClosure=="undefined"?nil:IRInlinedClosure)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRInlinedClosure())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlinedClosure",{},smalltalk.IRSendInliner)})},
-messageSends: ["new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedSend:with:",
-fn: function (inlinedSend,anIRInstruction){
-var self=this;
-var inlinedClosure;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(anIRInstruction)._isClosure();
-if(! smalltalk.assert($1)){
-self._inliningError_("Message argument should be a block");
-};
-$2=_st(_st(_st(anIRInstruction)._arguments())._size()).__eq((0));
-if(! smalltalk.assert($2)){
-self._inliningError_("Inlined block should have zero argument");
-};
-inlinedClosure=_st(self._translator())._visit_(self._inlineClosure_(anIRInstruction));
-$3=inlinedSend;
-_st($3)._add_(_st(_st(self._send())._instructions())._first());
-$4=_st($3)._add_(inlinedClosure);
-_st(self._send())._replaceWith_(inlinedSend);
-$5=inlinedSend;
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure},smalltalk.IRSendInliner)})},
-messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedSend:with:with:",
-fn: function (inlinedSend,anIRInstruction,anotherIRInstruction){
-var self=this;
-var inlinedClosure1,inlinedClosure2;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(anIRInstruction)._isClosure();
-if(! smalltalk.assert($1)){
-self._inliningError_("Message argument should be a block");
-};
-$2=_st(anotherIRInstruction)._isClosure();
-if(! smalltalk.assert($2)){
-self._inliningError_("Message argument should be a block");
-};
-inlinedClosure1=_st(self._translator())._visit_(self._inlineClosure_(anIRInstruction));
-inlinedClosure2=_st(self._translator())._visit_(self._inlineClosure_(anotherIRInstruction));
-$3=inlinedSend;
-_st($3)._add_(_st(_st(self._send())._instructions())._first());
-_st($3)._add_(inlinedClosure1);
-$4=_st($3)._add_(inlinedClosure2);
-_st(self._send())._replaceWith_(inlinedSend);
-$5=inlinedSend;
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2},smalltalk.IRSendInliner)})},
-messageSends: ["ifFalse:", "isClosure", "inliningError:", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedSequence",
-fn: function (){
-var self=this;
-function $IRInlinedSequence(){return smalltalk.IRInlinedSequence||(typeof IRInlinedSequence=="undefined"?nil:IRInlinedSequence)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRInlinedSequence())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlinedSequence",{},smalltalk.IRSendInliner)})},
-messageSends: ["new"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inliningError:",
-fn: function (aString){
-var self=this;
-function $InliningError(){return smalltalk.InliningError||(typeof InliningError=="undefined"?nil:InliningError)}
-return smalltalk.withContext(function($ctx1) { 
-_st($InliningError())._signal_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"inliningError:",{aString:aString},smalltalk.IRSendInliner)})},
-messageSends: ["signal:"]}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "send",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@send"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"send",{},smalltalk.IRSendInliner)})},
-messageSends: []}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "send:",
-fn: function (anIRSend){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@send"]=anIRSend;
-return self}, function($ctx1) {$ctx1.fill(self,"send:",{anIRSend:anIRSend},smalltalk.IRSendInliner)})},
-messageSends: []}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "translator",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@translator"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"translator",{},smalltalk.IRSendInliner)})},
-messageSends: []}),
-smalltalk.IRSendInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "translator:",
-fn: function (anASTTranslator){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@translator"]=anASTTranslator;
-return self}, function($ctx1) {$ctx1.fill(self,"translator:",{anASTTranslator:anASTTranslator},smalltalk.IRSendInliner)})},
-messageSends: []}),
-smalltalk.IRSendInliner);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=["ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:", "ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlinedSelectors",{},smalltalk.IRSendInliner.klass)})},
-messageSends: []}),
-smalltalk.IRSendInliner.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInline:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-$1=_st(self._inlinedSelectors())._includes_(_st(anIRInstruction)._selector());
-if(! smalltalk.assert($1)){
-return false;
-};
-_st(_st(_st(anIRInstruction)._instructions())._allButFirst())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$2=_st(each)._isClosure();
-if(! smalltalk.assert($2)){
-throw $early=[false];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return true;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner.klass)})},
-messageSends: ["ifFalse:", "includes:", "inlinedSelectors", "selector", "do:", "allButFirst", "instructions", "isClosure"]}),
-smalltalk.IRSendInliner.klass);
-
-
-smalltalk.addClass('IRAssignmentInliner', smalltalk.IRSendInliner, ['assignment'], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assignment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@assignment"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"assignment",{},smalltalk.IRAssignmentInliner)})},
-messageSends: []}),
-smalltalk.IRAssignmentInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assignment:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@assignment"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"assignment:",{aNode:aNode},smalltalk.IRAssignmentInliner)})},
-messageSends: []}),
-smalltalk.IRAssignmentInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineAssignment:",
-fn: function (anIRAssignment){
-var self=this;
-var inlinedAssignment;
-function $IRInlinedAssignment(){return smalltalk.IRInlinedAssignment||(typeof IRInlinedAssignment=="undefined"?nil:IRInlinedAssignment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._assignment_(anIRAssignment);
-inlinedAssignment=_st($IRInlinedAssignment())._new();
-_st(_st(anIRAssignment)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(inlinedAssignment)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(anIRAssignment)._replaceWith_(inlinedAssignment);
-self._inlineSend_(_st(_st(inlinedAssignment)._instructions())._last());
-$1=inlinedAssignment;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment,inlinedAssignment:inlinedAssignment},smalltalk.IRAssignmentInliner)})},
-messageSends: ["assignment:", "new", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"]}),
-smalltalk.IRAssignmentInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineClosure:",
-fn: function (anIRClosure){
-var self=this;
-var inlinedClosure,statements;
-function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-inlinedClosure=smalltalk.IRAssignmentInliner.superclass.fn.prototype._inlineClosure_.apply(_st(self), [anIRClosure]);
-statements=_st(_st(_st(inlinedClosure)._instructions())._last())._instructions();
-_st(statements)._ifNotEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(statements)._last())._canBeAssigned();
-if(smalltalk.assert($1)){
-$2=_st($IRAssignment())._new();
-_st($2)._add_(_st(_st(self._assignment())._instructions())._first());
-_st($2)._add_(_st(_st(statements)._last())._copy());
-$3=_st($2)._yourself();
-return _st(_st(statements)._last())._replaceWith_($3);
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$4=inlinedClosure;
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,statements:statements},smalltalk.IRAssignmentInliner)})},
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "canBeAssigned", "replaceWith:", "add:", "new", "first", "assignment", "copy", "yourself"]}),
-smalltalk.IRAssignmentInliner);
-
-
-
-smalltalk.addClass('IRReturnInliner', smalltalk.IRSendInliner, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineClosure:",
-fn: function (anIRClosure){
-var self=this;
-var closure,statements;
-function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-closure=smalltalk.IRReturnInliner.superclass.fn.prototype._inlineClosure_.apply(_st(self), [anIRClosure]);
-statements=_st(_st(_st(closure)._instructions())._last())._instructions();
-_st(statements)._ifNotEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(statements)._last())._isReturn();
-if(! smalltalk.assert($1)){
-$2=_st($IRReturn())._new();
-_st($2)._add_(_st(_st(statements)._last())._copy());
-$3=_st($2)._yourself();
-return _st(_st(statements)._last())._replaceWith_($3);
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$4=closure;
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,closure:closure,statements:statements},smalltalk.IRReturnInliner)})},
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "isReturn", "replaceWith:", "add:", "new", "copy", "yourself"]}),
-smalltalk.IRReturnInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlineReturn:",
-fn: function (anIRReturn){
-var self=this;
-var return_;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-return_=self._inlinedReturn();
-_st(_st(anIRReturn)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(return_)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(anIRReturn)._replaceWith_(return_);
-self._inlineSend_(_st(_st(return_)._instructions())._last());
-$1=return_;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn,return_:return_},smalltalk.IRReturnInliner)})},
-messageSends: ["inlinedReturn", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"]}),
-smalltalk.IRReturnInliner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inlinedReturn",
-fn: function (){
-var self=this;
-function $IRInlinedReturn(){return smalltalk.IRInlinedReturn||(typeof IRInlinedReturn=="undefined"?nil:IRInlinedReturn)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRInlinedReturn())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inlinedReturn",{},smalltalk.IRReturnInliner)})},
-messageSends: ["new"]}),
-smalltalk.IRReturnInliner);
-
-
-
-smalltalk.addClass('InliningCodeGenerator', smalltalk.CodeGenerator, [], 'Compiler-Inlining');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileNode:",
-fn: function (aNode){
-var self=this;
-var ir,stream;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-_st(self._semanticAnalyzer())._visit_(aNode);
-ir=_st(self._translator())._visit_(aNode);
-_st(self._inliner())._visit_(ir);
-$2=self._irTranslator();
-_st($2)._currentClass_(self._currentClass());
-_st($2)._visit_(ir);
-$3=_st($2)._contents();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},smalltalk.InliningCodeGenerator)})},
-messageSends: ["visit:", "semanticAnalyzer", "translator", "inliner", "currentClass:", "irTranslator", "currentClass", "contents"]}),
-smalltalk.InliningCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inliner",
-fn: function (){
-var self=this;
-function $IRInliner(){return smalltalk.IRInliner||(typeof IRInliner=="undefined"?nil:IRInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRInliner())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inliner",{},smalltalk.InliningCodeGenerator)})},
-messageSends: ["new"]}),
-smalltalk.InliningCodeGenerator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "irTranslator",
-fn: function (){
-var self=this;
-function $IRInliningJSTranslator(){return smalltalk.IRInliningJSTranslator||(typeof IRInliningJSTranslator=="undefined"?nil:IRInliningJSTranslator)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($IRInliningJSTranslator())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"irTranslator",{},smalltalk.InliningCodeGenerator)})},
-messageSends: ["new"]}),
-smalltalk.InliningCodeGenerator);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 64 - 63
js/Compiler-Inlining.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Inlining", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Compiler-IR", "amber_core/Kernel-Objects", "amber_core/Compiler-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Inlining');
+smalltalk.packages["Compiler-Inlining"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('IRInlinedAssignment', smalltalk.IRAssignment, [], 'Compiler-Inlining');
 smalltalk.IRInlinedAssignment.comment="I represent an inlined assignment instruction.";
@@ -346,13 +347,13 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(_st(_st(anIRAssignment)._instructions())._last())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._shouldInlineSend_(_st(_st(anIRAssignment)._instructions())._last());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRInliner)})},
 args: ["anIRAssignment"],
 source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [\x0a\x09\x09anIRAssignment instructions last isSend and: [\x0a\x09\x09\x09self shouldInlineSend: (anIRAssignment instructions last) ]]",
-messageSends: ["and:", "not", "isInlined", "isSend", "last", "instructions", "shouldInlineSend:"],
+messageSends: ["and:", "shouldInlineSend:", "last", "instructions", "isSend", "not", "isInlined"],
 referencedClasses: []
 }),
 smalltalk.IRInliner);
@@ -370,13 +371,13 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(_st(_st(anIRReturn)._instructions())._first())._isSend())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._shouldInlineSend_(_st(_st(anIRReturn)._instructions())._first());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn},smalltalk.IRInliner)})},
 args: ["anIRReturn"],
 source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [\x0a\x09\x09anIRReturn instructions first isSend and: [\x0a\x09\x09\x09self shouldInlineSend: (anIRReturn instructions first) ]]",
-messageSends: ["and:", "not", "isInlined", "isSend", "first", "instructions", "shouldInlineSend:"],
+messageSends: ["and:", "shouldInlineSend:", "first", "instructions", "isSend", "not", "isInlined"],
 referencedClasses: []
 }),
 smalltalk.IRInliner);
@@ -393,12 +394,12 @@ var $1;
 $1=_st(_st(_st(anIRSend)._isInlined())._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st($IRSendInliner())._shouldInline_(anIRSend);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend},smalltalk.IRInliner)})},
 args: ["anIRSend"],
 source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
-messageSends: ["and:", "not", "isInlined", "shouldInline:"],
+messageSends: ["and:", "shouldInline:", "not", "isInlined"],
 referencedClasses: ["IRSendInliner"]
 }),
 smalltalk.IRInliner);
@@ -424,7 +425,7 @@ localReturn;
 _st(_st(anIRNonLocalReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(localReturn)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 _st(anIRNonLocalReturn)._replaceWith_(localReturn);
 $4=localReturn;
 return $4;
@@ -434,7 +435,7 @@ return $5;
 }, function($ctx1) {$ctx1.fill(self,"transformNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn},smalltalk.IRInliner)})},
 args: ["anIRNonLocalReturn"],
 source: "transformNonLocalReturn: anIRNonLocalReturn\x0a\x09\x22Replace a non local return into a local return\x22\x0a\x0a\x09| localReturn |\x0a\x09anIRNonLocalReturn scope canInlineNonLocalReturns ifTrue: [\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := IRReturn new\x0a\x09\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09\x09yourself.\x0a\x09\x09anIRNonLocalReturn instructions do: [ :each |\x0a\x09\x09\x09localReturn add: each ].\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ localReturn ].\x0a\x09^ super visitIRNonLocalReturn: anIRNonLocalReturn",
-messageSends: ["ifTrue:", "canInlineNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "scope:", "new", "yourself", "do:", "instructions", "add:", "replaceWith:", "visitIRNonLocalReturn:"],
+messageSends: ["ifTrue:", "removeNonLocalReturn:", "scope", "methodScope", "scope:", "new", "yourself", "do:", "add:", "instructions", "replaceWith:", "canInlineNonLocalReturns", "visitIRNonLocalReturn:"],
 referencedClasses: ["IRReturn"]
 }),
 smalltalk.IRInliner);
@@ -457,7 +458,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRInliner)})},
 args: ["anIRAssignment"],
 source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment)\x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
-messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"],
+messageSends: ["ifTrue:ifFalse:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:", "shouldInlineAssignment:"],
 referencedClasses: []
 }),
 smalltalk.IRInliner);
@@ -498,7 +499,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},smalltalk.IRInliner)})},
 args: ["anIRReturn"],
 source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn)\x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
-messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"],
+messageSends: ["ifTrue:ifFalse:", "inlineReturn:", "returnInliner", "visitIRReturn:", "shouldInlineReturn:"],
 referencedClasses: []
 }),
 smalltalk.IRInliner);
@@ -521,7 +522,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},smalltalk.IRInliner)})},
 args: ["anIRSend"],
 source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
-messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"],
+messageSends: ["ifTrue:ifFalse:", "inlineSend:", "sendInliner", "visitIRSend:", "shouldInlineSend:"],
 referencedClasses: []
 }),
 smalltalk.IRInliner);
@@ -556,15 +557,15 @@ return smalltalk.withContext(function($ctx1) {
 _st(self._stream())._nextPutVars_(_st(_st(anIRInlinedClosure)._tempDeclarations())._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._name())._asVariableName();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})));
 _st(_st(anIRInlinedClosure)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedClosure"],
 source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09self stream nextPutVars: (anIRInlinedClosure tempDeclarations collect: [ :each |\x0a\x09\x09each name asVariableName ]).\x0a\x09anIRInlinedClosure instructions do: [ :each |\x0a\x09\x09self visit: each ]",
-messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "instructions", "visit:"],
+messageSends: ["nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "do:", "visit:", "instructions"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -581,14 +582,14 @@ return smalltalk.withContext(function($ctx2) {
 _st(self._stream())._nextPutAll_("! smalltalk.assert(");
 self._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._first());
 return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfFalse"],
 source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '! smalltalk.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfFalse instructions last ]",
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"],
+messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -605,14 +606,14 @@ return smalltalk.withContext(function($ctx2) {
 _st(self._stream())._nextPutAll_("($receiver = ");
 self._visit_(_st(_st(anIRInlinedIfNil)._instructions())._first());
 return _st(self._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfNil)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:",{anIRInlinedIfNil:anIRInlinedIfNil},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfNil"],
 source: "visitIRInlinedIfNil: anIRInlinedIfNil\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '($receiver = '.\x0a\x09\x09self visit: anIRInlinedIfNil instructions first.\x0a\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNil instructions last ]",
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"],
+messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -629,17 +630,17 @@ return smalltalk.withContext(function($ctx2) {
 _st(self._stream())._nextPutAll_("($receiver = ");
 self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._first());
 return _st(self._stream())._nextPutAll_(") == nil || $receiver == undefined");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfNilIfNotNil"],
 source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream\x0a\x09\x09nextPutIfElse: [\x0a\x09\x09\x09self stream nextPutAll: '($receiver = '.\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil instructions first.\x0a\x09\x09\x09self stream nextPutAll: ') == nil || $receiver == undefined' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions third ]",
-messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "second", "third"],
+messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "second", "third"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -656,14 +657,14 @@ return smalltalk.withContext(function($ctx2) {
 _st(self._stream())._nextPutAll_("smalltalk.assert(");
 self._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._first());
 return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfTrue"],
 source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: 'smalltalk.assert('.\x0a\x09\x09self visit: anIRInlinedIfTrue instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrue instructions last ]",
-messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"],
+messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "last"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -680,17 +681,17 @@ return smalltalk.withContext(function($ctx2) {
 _st(self._stream())._nextPutAll_("smalltalk.assert(");
 self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._first());
 return _st(self._stream())._nextPutAll_(")");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedIfTrueIfFalse"],
 source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream\x0a\x09\x09nextPutIfElse: [\x0a\x09\x09\x09self stream nextPutAll: 'smalltalk.assert('.\x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse instructions first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions third ]",
-messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "second", "third"],
+messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "visit:", "first", "instructions", "second", "third"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -705,14 +706,14 @@ return smalltalk.withContext(function($ctx1) {
 _st(self._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._visit_(_st(_st(anIRInlinedReturn)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 _st(self._stream())._nextPutNonLocalReturnWith_((function(){
 return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:",{anIRInlinedReturn:anIRInlinedReturn},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedReturn"],
 source: "visitIRInlinedNonLocalReturn: anIRInlinedReturn\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self visit: anIRInlinedReturn instructions last ].\x0a\x09self stream nextPutNonLocalReturnWith: [ ]",
-messageSends: ["nextPutStatementWith:", "stream", "visit:", "last", "instructions", "nextPutNonLocalReturnWith:"],
+messageSends: ["nextPutStatementWith:", "visit:", "last", "instructions", "stream", "nextPutNonLocalReturnWith:"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -745,12 +746,12 @@ return smalltalk.withContext(function($ctx2) {
 return _st(self._stream())._nextPutStatementWith_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._visit_(each);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},smalltalk.IRInliningJSTranslator)})},
 args: ["anIRInlinedSequence"],
 source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09anIRInlinedSequence instructions do: [ :each |\x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ]]",
-messageSends: ["do:", "instructions", "nextPutStatementWith:", "stream", "visit:"],
+messageSends: ["do:", "nextPutStatementWith:", "visit:", "stream", "instructions"],
 referencedClasses: []
 }),
 smalltalk.IRInliningJSTranslator);
@@ -936,9 +937,9 @@ fn: function (anIRClosure){
 var self=this;
 var inlinedClosure,sequence,statements;
 function $IRTempDeclaration(){return smalltalk.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
-function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
-function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
 function $AliasVar(){return smalltalk.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
+function $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
+function $IRAssignment(){return smalltalk.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
 inlinedClosure=self._inlinedClosure();
@@ -946,7 +947,7 @@ _st(inlinedClosure)._scope_(_st(anIRClosure)._scope());
 _st(_st(anIRClosure)._tempDeclarations())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(inlinedClosure)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 sequence=self._inlinedSequence();
 _st(_st(anIRClosure)._arguments())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
@@ -967,7 +968,7 @@ $7=_st($6)._yourself();
 _st($3)._add_(_st(_st($IRVariable())._new())._variable_($7));
 $8=_st($3)._yourself();
 return _st(sequence)._add_($8);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 _st(inlinedClosure)._add_(sequence);
 statements=_st(_st(_st(anIRClosure)._instructions())._last())._instructions();
 _st(statements)._ifNotEmpty_((function(){
@@ -975,24 +976,24 @@ return smalltalk.withContext(function($ctx2) {
 _st(_st(statements)._allButLast())._do_((function(each){
 return smalltalk.withContext(function($ctx3) {
 return _st(sequence)._add_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)})}));
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}));
 $9=_st(_st(_st(statements)._last())._isReturn())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(_st(statements)._last())._isBlockReturn();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
 if(smalltalk.assert($9)){
 return _st(sequence)._add_(_st(_st(_st(statements)._last())._instructions())._first());
 } else {
 return _st(sequence)._add_(_st(statements)._last());
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $10=inlinedClosure;
 return $10;
 }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements},smalltalk.IRSendInliner)})},
 args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure sequence statements |\x0a\x0a\x09inlinedClosure := self inlinedClosure.\x0a\x09inlinedClosure scope: anIRClosure scope.\x0a\x0a\x09\x22Add the possible temp declarations\x22\x0a\x09anIRClosure tempDeclarations do: [ :each |\x0a\x09\x09\x09inlinedClosure add: each ].\x0a\x0a\x09\x22Add a block sequence\x22\x0a\x09sequence := self inlinedSequence.\x0a\x0a\x09\x22Map the closure arguments to the receiver of the message send\x22\x0a\x09anIRClosure arguments do: [ :each |\x0a\x09\x09inlinedClosure add: (IRTempDeclaration new name: each; yourself).\x0a\x09\x09sequence add: (IRAssignment new\x0a\x09\x09\x09add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: each; yourself));\x0a\x09\x09\x09add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: '$receiver'; yourself));\x0a\x09\x09\x09yourself) ].\x0a\x09\x09\x09\x0a\x09\x22To ensure the correct order of the closure instructions: first the temps then the sequence\x22\x0a\x09inlinedClosure add: sequence.\x0a\x0a\x09\x22Get all the statements\x22\x0a\x09statements := anIRClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures don't have implicit local returns\x22\x0a\x09\x09(statements last isReturn and: [ statements last isBlockReturn ])\x0a\x09\x09\x09ifTrue: [ sequence add: statements last instructions first ]\x0a\x09\x09\x09ifFalse: [ sequence add: statements last ] ].\x0a\x0a\x09^ inlinedClosure",
-messageSends: ["inlinedClosure", "scope:", "scope", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "instructions", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "and:", "isReturn", "isBlockReturn", "first"],
-referencedClasses: ["IRTempDeclaration", "IRAssignment", "IRVariable", "AliasVar"]
+messageSends: ["inlinedClosure", "scope:", "scope", "do:", "add:", "tempDeclarations", "inlinedSequence", "name:", "new", "yourself", "variable:", "arguments", "instructions", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "first", "and:", "isBlockReturn", "isReturn"],
+referencedClasses: ["IRTempDeclaration", "AliasVar", "IRVariable", "IRAssignment"]
 }),
 smalltalk.IRSendInliner);
 
@@ -1061,7 +1062,7 @@ return $5;
 }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure},smalltalk.IRSendInliner)})},
 args: ["inlinedSend", "anIRInstruction"],
 source: "inlinedSend: inlinedSend with: anIRInstruction\x0a\x09| inlinedClosure |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ].\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send instructions first;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x0a\x09^ inlinedSend",
-messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:"],
+messageSends: ["ifFalse:", "inliningError:", "isClosure", "=", "size", "arguments", "visit:", "inlineClosure:", "translator", "add:", "first", "instructions", "send", "replaceWith:"],
 referencedClasses: []
 }),
 smalltalk.IRSendInliner);
@@ -1095,7 +1096,7 @@ return $5;
 }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2},smalltalk.IRSendInliner)})},
 args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
 source: "inlinedSend: inlinedSend with: anIRInstruction with: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x0a\x09inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x09inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send instructions first;\x0a\x09\x09add: inlinedClosure1;\x0a\x09\x09add: inlinedClosure2.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09^ inlinedSend",
-messageSends: ["ifFalse:", "isClosure", "inliningError:", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:"],
+messageSends: ["ifFalse:", "inliningError:", "isClosure", "visit:", "inlineClosure:", "translator", "add:", "first", "instructions", "send", "replaceWith:"],
 referencedClasses: []
 }),
 smalltalk.IRSendInliner);
@@ -1243,14 +1244,14 @@ $2=_st(each)._isClosure();
 if(! smalltalk.assert($2)){
 throw $early=[false];
 };
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return true;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRInstruction:anIRInstruction},smalltalk.IRSendInliner.klass)})},
 args: ["anIRInstruction"],
 source: "shouldInline: anIRInstruction\x0a\x09(self inlinedSelectors includes: anIRInstruction selector) ifFalse: [ ^ false ].\x0a\x09anIRInstruction instructions allButFirst do: [ :each |\x0a\x09\x09each isClosure ifFalse: [ ^ false ]].\x0a\x09^ true",
-messageSends: ["ifFalse:", "includes:", "inlinedSelectors", "selector", "do:", "allButFirst", "instructions", "isClosure"],
+messageSends: ["ifFalse:", "includes:", "selector", "inlinedSelectors", "do:", "isClosure", "allButFirst", "instructions"],
 referencedClasses: []
 }),
 smalltalk.IRSendInliner.klass);
@@ -1307,7 +1308,7 @@ inlinedAssignment=_st($IRInlinedAssignment())._new();
 _st(_st(anIRAssignment)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(inlinedAssignment)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 _st(anIRAssignment)._replaceWith_(inlinedAssignment);
 self._inlineSend_(_st(_st(inlinedAssignment)._instructions())._last());
 $1=inlinedAssignment;
@@ -1315,7 +1316,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment,inlinedAssignment:inlinedAssignment},smalltalk.IRAssignmentInliner)})},
 args: ["anIRAssignment"],
 source: "inlineAssignment: anIRAssignment\x0a\x09| inlinedAssignment |\x0a\x09self assignment: anIRAssignment.\x0a\x09inlinedAssignment := IRInlinedAssignment new.\x0a\x09anIRAssignment instructions do: [ :each |\x0a\x09\x09inlinedAssignment add: each ].\x0a\x09anIRAssignment replaceWith: inlinedAssignment.\x0a\x09self inlineSend: inlinedAssignment instructions last.\x0a\x09^ inlinedAssignment",
-messageSends: ["assignment:", "new", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"],
+messageSends: ["assignment:", "new", "do:", "add:", "instructions", "replaceWith:", "inlineSend:", "last"],
 referencedClasses: ["IRInlinedAssignment"]
 }),
 smalltalk.IRAssignmentInliner);
@@ -1342,13 +1343,13 @@ _st($2)._add_(_st(_st(statements)._last())._copy());
 $3=_st($2)._yourself();
 return _st(_st(statements)._last())._replaceWith_($3);
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $4=inlinedClosure;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,statements:statements},smalltalk.IRAssignmentInliner)})},
 args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure statements |\x0a\x0a\x09inlinedClosure := super inlineClosure: anIRClosure.\x0a\x09statements := inlinedClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last canBeAssigned ifTrue: [\x0a\x09\x09\x09statements last replaceWith: (IRAssignment new\x0a\x09\x09\x09\x09add: self assignment instructions first;\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x0a\x09^ inlinedClosure",
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "canBeAssigned", "replaceWith:", "add:", "new", "first", "assignment", "copy", "yourself"],
+messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "replaceWith:", "add:", "first", "assignment", "new", "copy", "yourself", "canBeAssigned"],
 referencedClasses: ["IRAssignment"]
 }),
 smalltalk.IRAssignmentInliner);
@@ -1378,13 +1379,13 @@ _st($2)._add_(_st(_st(statements)._last())._copy());
 $3=_st($2)._yourself();
 return _st(_st(statements)._last())._replaceWith_($3);
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $4=closure;
 return $4;
 }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,closure:closure,statements:statements},smalltalk.IRReturnInliner)})},
 args: ["anIRClosure"],
 source: "inlineClosure: anIRClosure\x0a\x09| closure statements |\x0a\x0a\x09closure := super inlineClosure: anIRClosure.\x0a\x09statements := closure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last isReturn\x0a\x09\x09\x09ifFalse: [ statements last replaceWith: (IRReturn new\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself)] ].\x0a\x0a\x09^ closure",
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "isReturn", "replaceWith:", "add:", "new", "copy", "yourself"],
+messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "replaceWith:", "add:", "copy", "new", "yourself", "isReturn"],
 referencedClasses: ["IRReturn"]
 }),
 smalltalk.IRReturnInliner);
@@ -1402,7 +1403,7 @@ return_=self._inlinedReturn();
 _st(_st(anIRReturn)._instructions())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(return_)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 _st(anIRReturn)._replaceWith_(return_);
 self._inlineSend_(_st(_st(return_)._instructions())._last());
 $1=return_;
@@ -1410,7 +1411,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn,return_:return_},smalltalk.IRReturnInliner)})},
 args: ["anIRReturn"],
 source: "inlineReturn: anIRReturn\x0a\x09| return |\x0a\x09return := self inlinedReturn.\x0a\x09anIRReturn instructions do: [ :each |\x0a\x09\x09return add: each ].\x0a\x09anIRReturn replaceWith: return.\x0a\x09self inlineSend: return instructions last.\x0a\x09^ return",
-messageSends: ["inlinedReturn", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"],
+messageSends: ["inlinedReturn", "do:", "add:", "instructions", "replaceWith:", "inlineSend:", "last"],
 referencedClasses: []
 }),
 smalltalk.IRReturnInliner);
@@ -1459,7 +1460,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},smalltalk.InliningCodeGenerator)})},
 args: ["aNode"],
 source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09self inliner visit: ir.\x0a\x0a\x09^ self irTranslator\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
-messageSends: ["visit:", "semanticAnalyzer", "translator", "inliner", "currentClass:", "irTranslator", "currentClass", "contents"],
+messageSends: ["visit:", "semanticAnalyzer", "translator", "inliner", "currentClass:", "currentClass", "irTranslator", "contents"],
 referencedClasses: []
 }),
 smalltalk.InliningCodeGenerator);
@@ -1503,4 +1504,4 @@ referencedClasses: ["IRInliningJSTranslator"]
 smalltalk.InliningCodeGenerator);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 2657
js/Compiler-Interpreter.deploy.js

@@ -1,2657 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Interpreter');
-
-smalltalk.addClass('AIBlockClosure', smalltalk.BlockClosure, ['node', 'outerContext'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "applyTo:arguments:",
-fn: function (anObject,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpreterError();
-return self}, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.AIBlockClosure)})},
-messageSends: ["interpreterError"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compiledSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "[ AST Block closure ]";
-}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.AIBlockClosure)})},
-messageSends: []}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currySelf",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpreterError();
-return self}, function($ctx1) {$ctx1.fill(self,"currySelf",{},smalltalk.AIBlockClosure)})},
-messageSends: ["interpreterError"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeWithContext:node:",
-fn: function (aContext,aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@node"]=aNode;
-self["@outerContext"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"initializeWithContext:node:",{aContext:aContext,aNode:aNode},smalltalk.AIBlockClosure)})},
-messageSends: []}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreterError",
-fn: function (){
-var self=this;
-function $AIInterpreterError(){return smalltalk.AIInterpreterError||(typeof AIInterpreterError=="undefined"?nil:AIInterpreterError)}
-return smalltalk.withContext(function($ctx1) { 
-_st($AIInterpreterError())._signal_("Method cannot be interpreted by the interpreter.");
-return self}, function($ctx1) {$ctx1.fill(self,"interpreterError",{},smalltalk.AIBlockClosure)})},
-messageSends: ["signal:"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "numArgs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self["@node"])._temps())._size();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.AIBlockClosure)})},
-messageSends: ["size", "temps"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._valueWithPossibleArguments_([]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.AIBlockClosure)})},
-messageSends: ["valueWithPossibleArguments:"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (anArgument){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._valueWithPossibleArguments_([anArgument]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:",{anArgument:anArgument},smalltalk.AIBlockClosure)})},
-messageSends: ["valueWithPossibleArguments:"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:",
-fn: function (firstArgument,secondArgument){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._valueWithPossibleArguments_([firstArgument,secondArgument]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument},smalltalk.AIBlockClosure)})},
-messageSends: ["valueWithPossibleArguments:"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:value:",
-fn: function (firstArgument,secondArgument,thirdArgument){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._valueWithPossibleArguments_([firstArgument,secondArgument,thirdArgument]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument},smalltalk.AIBlockClosure)})},
-messageSends: ["valueWithPossibleArguments:"]}),
-smalltalk.AIBlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueWithPossibleArguments:",
-fn: function (aCollection){
-var self=this;
-var context,sequenceNode;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-context=_st(self["@outerContext"])._newBlockContext();
-$1=_st(_st(_st(self["@node"])._nodes())._first())._copy();
-_st($1)._parent_(nil);
-$2=_st($1)._yourself();
-sequenceNode=$2;
-_st(_st(self["@node"])._parameters())._withIndexDo_((function(each,index){
-return smalltalk.withContext(function($ctx2) {
-return _st(context)._localAt_put_(each,_st(aCollection)._at_ifAbsent_(index,(function(){
-return smalltalk.withContext(function($ctx3) {
-return nil;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})));
-}, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)})}));
-$3=_st(context)._interpreter();
-_st($3)._node_(_st(sequenceNode)._nextChild());
-$4=_st($3)._proceed();
-_st(_st(self["@outerContext"])._interpreter())._returnValue_(_st(_st(context)._interpreter())._returnValue());
-_st(console)._log_(_st(_st(context)._interpreter())._returnValue());
-$5=_st(_st(context)._interpreter())._pop();
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection,context:context,sequenceNode:sequenceNode},smalltalk.AIBlockClosure)})},
-messageSends: ["newBlockContext", "parent:", "copy", "first", "nodes", "yourself", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "nextChild", "proceed", "returnValue:", "returnValue", "log:", "pop"]}),
-smalltalk.AIBlockClosure);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "forContext:node:",
-fn: function (aContext,aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeWithContext_node_(aContext,aNode);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"forContext:node:",{aContext:aContext,aNode:aNode},smalltalk.AIBlockClosure.klass)})},
-messageSends: ["initializeWithContext:node:", "new", "yourself"]}),
-smalltalk.AIBlockClosure.klass);
-
-
-smalltalk.addClass('AIContext', smalltalk.Object, ['outerContext', 'innerContext', 'pc', 'locals', 'method', 'index', 'ast', 'interpreter'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._ast())._arguments())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._localAt_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.AIContext)})},
-messageSends: ["collect:", "arguments", "ast", "localAt:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isBlockContext();
-if(smalltalk.assert($2)){
-$1=_st("a block (in ".__comma(_st(self._methodContext())._asString())).__comma(")");
-} else {
-$1=_st(_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ")).__comma(self._selector());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.AIContext)})},
-messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "name", "class", "receiver", "selector"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ast",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self._isBlockContext();
-if(smalltalk.assert($1)){
-$2=_st(self._outerContext())._ast();
-return $2;
-};
-$3=self["@ast"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self._initializeAST();
-} else {
-$3;
-};
-$4=self["@ast"];
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"ast",{},smalltalk.AIContext)})},
-messageSends: ["ifTrue:", "isBlockContext", "ast", "outerContext", "ifNil:", "initializeAST"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@index"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.AIContext)})},
-messageSends: ["ifNil:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@index"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"index:",{anInteger:anInteger},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeAST",
-fn: function (){
-var self=this;
-function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
-return smalltalk.withContext(function($ctx1) { 
-self["@ast"]=_st(self._method())._ast();
-_st(_st($SemanticAnalyzer())._on_(_st(self._method())._methodClass()))._visit_(self["@ast"]);
-return self}, function($ctx1) {$ctx1.fill(self,"initializeAST",{},smalltalk.AIContext)})},
-messageSends: ["ast", "method", "visit:", "on:", "methodClass"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromMethodContext:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self;
-_st($1)._pc_(_st(aMethodContext)._pc());
-_st($1)._index_(_st(aMethodContext)._index());
-_st($1)._receiver_(_st(aMethodContext)._receiver());
-$2=_st($1)._method_(_st(aMethodContext)._method());
-$3=_st(aMethodContext)._outerContext();
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-var outer;
-outer=$receiver;
-$4=_st(outer)._methodContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$4;
-} else {
-self._outerContext_(_st(self._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
-};
-_st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._locals())._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext)})},
-messageSends: ["pc:", "pc", "index:", "index", "receiver:", "receiver", "method:", "method", "ifNotNil:", "outerContext", "methodContext", "outerContext:", "fromMethodContext:", "class", "keysAndValuesDo:", "locals", "at:put:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeInterpreter",
-fn: function (){
-var self=this;
-function $Interpreter(){return smalltalk.Interpreter||(typeof Interpreter=="undefined"?nil:Interpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st($Interpreter())._new();
-_st($1)._context_(self);
-$2=_st($1)._yourself();
-self["@interpreter"]=$2;
-$3=self["@ast"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(self["@interpreter"])._node_(self._retrieveNode());
-};
-$4=_st(_st(self._innerContext())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._innerContext())._isBlockContext())._not();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-if(smalltalk.assert($4)){
-self._setupInterpreter_(self["@interpreter"]);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{},smalltalk.AIContext)})},
-messageSends: ["context:", "new", "yourself", "ifNotNil:", "node:", "retrieveNode", "ifTrue:", "and:", "notNil", "innerContext", "not", "isBlockContext", "setupInterpreter:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeLocals",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self["@locals"]=_st($Dictionary())._new();
-_st(self["@locals"])._at_put_("thisContext",self);
-return self}, function($ctx1) {$ctx1.fill(self,"initializeLocals",{},smalltalk.AIContext)})},
-messageSends: ["new", "at:put:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "innerContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@innerContext"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"innerContext",{},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "innerContext:",
-fn: function (anAIContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@innerContext"]=anAIContext;
-return self}, function($ctx1) {$ctx1.fill(self,"innerContext:",{anAIContext:anAIContext},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@interpreter"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._initializeInterpreter();
-} else {
-$1;
-};
-$2=self["@interpreter"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AIContext)})},
-messageSends: ["ifNil:", "initializeInterpreter"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:",
-fn: function (anInterpreter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@interpreter"]=anInterpreter;
-return self}, function($ctx1) {$ctx1.fill(self,"interpreter:",{anInterpreter:anInterpreter},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selector())._isNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.AIContext)})},
-messageSends: ["isNil", "selector"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "localAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$1=_st(self._locals())._at_ifAbsent_(aString,(function(){
-return smalltalk.withContext(function($ctx2) {
-$2=self._isBlockContext();
-if(smalltalk.assert($2)){
-return nil;
-} else {
-return _st(self._outerContext())._localAt_(aString);
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString},smalltalk.AIContext)})},
-messageSends: ["at:ifAbsent:", "locals", "ifTrue:ifFalse:", "isBlockContext", "localAt:", "outerContext"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "localAt:put:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._locals())._at_put_(aString,anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"localAt:put:",{aString:aString,anObject:anObject},smalltalk.AIContext)})},
-messageSends: ["at:put:", "locals"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "locals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@locals"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._initializeLocals();
-} else {
-$1;
-};
-$2=self["@locals"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.AIContext)})},
-messageSends: ["ifNil:", "initializeLocals"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@method"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method:",
-fn: function (aCompiledMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=aCompiledMethod;
-return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-$1=self._isBlockContext();
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$4=self._outerContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=$4;
-} else {
-var outer;
-outer=$receiver;
-$3=_st(outer)._methodContext();
-};
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"methodContext",{},smalltalk.AIContext)})},
-messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newBlockContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(self._class())._new();
-_st($2)._outerContext_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newBlockContext",{},smalltalk.AIContext)})},
-messageSends: ["outerContext:", "new", "class", "yourself"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "outerContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@outerContext"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "outerContext:",
-fn: function (anAIContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@outerContext"]=anAIContext;
-_st(self["@outerContext"])._innerContext_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext},smalltalk.AIContext)})},
-messageSends: ["innerContext:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@pc"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@pc"]=(0);
-$1=self["@pc"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.AIContext)})},
-messageSends: ["ifNil:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@pc"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"pc:",{anInteger:anInteger},smalltalk.AIContext)})},
-messageSends: []}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._localAt_("self");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.AIContext)})},
-messageSends: ["localAt:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._localAt_put_("self",anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.AIContext)})},
-messageSends: ["localAt:put:"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "retrieveNode",
-fn: function (){
-var self=this;
-function $ASTPCNodeVisitor(){return smalltalk.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($ASTPCNodeVisitor())._new();
-_st($2)._context_(self);
-_st($2)._visit_(self._ast());
-$3=_st($2)._currentNode();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"retrieveNode",{},smalltalk.AIContext)})},
-messageSends: ["context:", "new", "visit:", "ast", "currentNode"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._method();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-$1=_st(self._method())._selector();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.AIContext)})},
-messageSends: ["ifNotNil:", "method", "selector"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupInterpreter:",
-fn: function (anInterpreter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(self._innerContext())._arguments())._reversed())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(anInterpreter)._push_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(anInterpreter)._push_(_st(self._innerContext())._receiver());
-return self}, function($ctx1) {$ctx1.fill(self,"setupInterpreter:",{anInterpreter:anInterpreter},smalltalk.AIContext)})},
-messageSends: ["do:", "reversed", "arguments", "innerContext", "push:", "receiver"]}),
-smalltalk.AIContext);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromMethodContext:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromMethodContext_(aMethodContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext.klass)})},
-messageSends: ["initializeFromMethodContext:", "new", "yourself"]}),
-smalltalk.AIContext.klass);
-
-
-smalltalk.addClass('AIInterpreterError', smalltalk.Error, [], 'Compiler-Interpreter');
-
-
-smalltalk.addClass('ASTDebugger', smalltalk.Object, ['interpreter', 'context'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._interpreter())._atEnd();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.ASTDebugger)})},
-messageSends: ["atEnd", "interpreter"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "buildAST",
-fn: function (){
-var self=this;
-var ast;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-ast=_st(_st($Smalltalk())._current())._parse_(_st(self._method())._source());
-_st(_st($SemanticAnalyzer())._on_(_st(_st(self._context())._receiver())._class()))._visit_(ast);
-$1=ast;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"buildAST",{ast:ast},smalltalk.ASTDebugger)})},
-messageSends: ["parse:", "current", "source", "method", "visit:", "on:", "class", "receiver", "context"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTDebugger)})},
-messageSends: []}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTDebugger)})},
-messageSends: []}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInterpreterClass",
-fn: function (){
-var self=this;
-function $ASTSteppingInterpreter(){return smalltalk.ASTSteppingInterpreter||(typeof ASTSteppingInterpreter=="undefined"?nil:ASTSteppingInterpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$ASTSteppingInterpreter();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultInterpreterClass",{},smalltalk.ASTDebugger)})},
-messageSends: []}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeInterpreter",
-fn: function (){
-var self=this;
-var ast,next;
-function $ASTPCNodeVisitor(){return smalltalk.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-ast=self._buildAST();
-$1=_st($ASTPCNodeVisitor())._new();
-_st($1)._context_(self._context());
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-next=$2;
-_st(self._interpreter())._interpret_(next);
-return self}, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{ast:ast,next:next},smalltalk.ASTDebugger)})},
-messageSends: ["buildAST", "context:", "new", "context", "visit:", "currentNode", "interpret:", "interpreter"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeWithContext:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._context_(aContext);
-self._initializeInterpreter();
-return self}, function($ctx1) {$ctx1.fill(self,"initializeWithContext:",{aContext:aContext},smalltalk.ASTDebugger)})},
-messageSends: ["context:", "initializeInterpreter"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@interpreter"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@interpreter"]=_st(self._defaultInterpreterClass())._new();
-$1=self["@interpreter"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTDebugger)})},
-messageSends: ["ifNil:", "new", "defaultInterpreterClass"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:",
-fn: function (anInterpreter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@interpreter"]=anInterpreter;
-return self}, function($ctx1) {$ctx1.fill(self,"interpreter:",{anInterpreter:anInterpreter},smalltalk.ASTDebugger)})},
-messageSends: []}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._context())._method();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.ASTDebugger)})},
-messageSends: ["method", "context"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._interpreter())._nextNode();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTDebugger)})},
-messageSends: ["nextNode", "interpreter"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "proceed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldBeImplemented();
-return self}, function($ctx1) {$ctx1.fill(self,"proceed",{},smalltalk.ASTDebugger)})},
-messageSends: ["shouldBeImplemented"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "restart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldBeImplemented();
-return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.ASTDebugger)})},
-messageSends: ["shouldBeImplemented"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "step",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(_st(self._interpreter())._nextNode())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(self._interpreter())._nextNode())._stopOnStepping();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._or_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(self._interpreter())._atEnd())._not();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._interpreter())._step();
-return self._step();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.ASTDebugger)})},
-messageSends: ["whileFalse:", "or:", "and:", "notNil", "nextNode", "interpreter", "stopOnStepping", "not", "atEnd", "step"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stepInto",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldBeImplemented();
-return self}, function($ctx1) {$ctx1.fill(self,"stepInto",{},smalltalk.ASTDebugger)})},
-messageSends: ["shouldBeImplemented"]}),
-smalltalk.ASTDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stepOver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._step();
-return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.ASTDebugger)})},
-messageSends: ["step"]}),
-smalltalk.ASTDebugger);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeWithContext_(aContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTDebugger.klass)})},
-messageSends: ["initializeWithContext:", "new", "yourself"]}),
-smalltalk.ASTDebugger.klass);
-
-
-smalltalk.addClass('ASTInterpreter', smalltalk.Object, ['currentNode', 'nextNode', 'context', 'shouldReturn', 'result'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assign:to:",
-fn: function (aNode,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($2)){
-$1=_st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
-} else {
-$1=_st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},smalltalk.ASTInterpreter)})},
-messageSends: ["ifTrue:ifFalse:", "isInstanceVar", "binding", "instVarAt:put:", "receiver", "context", "value", "localAt:put:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@context"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@context"]=_st($AIContext())._new();
-$1=self["@context"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTInterpreter)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (anAIContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=anAIContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{anAIContext:anAIContext},smalltalk.ASTInterpreter)})},
-messageSends: []}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "continue:value:",
-fn: function (aBlock,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@result"]=anObject;
-_st(aBlock)._value_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"continue:value:",{aBlock:aBlock,anObject:anObject},smalltalk.ASTInterpreter)})},
-messageSends: ["value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentNode"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentNode",{},smalltalk.ASTInterpreter)})},
-messageSends: []}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:",
-fn: function (aString){
-var self=this;
-var source,function_;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-source=_st($String())._streamContents_((function(str){
-return smalltalk.withContext(function($ctx2) {
-_st(str)._nextPutAll_("(function(");
-_st(_st(_st(self._context())._locals())._keys())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_(",");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$1=str;
-_st($1)._nextPutAll_("){ return (function() {");
-_st($1)._nextPutAll_(aString);
-$2=_st($1)._nextPutAll_("})() })");
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)})}));
-function_=_st(_st($Compiler())._new())._eval_(source);
-$3=_st(function_)._valueWithPossibleArguments_(_st(_st(self._context())._locals())._values());
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_},smalltalk.ASTInterpreter)})},
-messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "new", "valueWithPossibleArguments:", "values"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ASTInterpreter.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@shouldReturn"]=false;
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ASTInterpreter)})},
-messageSends: ["initialize"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@shouldReturn"]=false;
-self._interpret_continue_(aNode,(function(value){
-return smalltalk.withContext(function($ctx2) {
-self["@result"]=value;
-return self["@result"];
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:",{aNode:aNode},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self["@shouldReturn"];
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(aNode)._isNode();
-if(smalltalk.assert($3)){
-self["@currentNode"]=aNode;
-self["@currentNode"];
-self._interpretNode_continue_(aNode,(function(value){
-return smalltalk.withContext(function($ctx2) {
-return self._continue_value_(aBlock,value);
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,3)})}));
-} else {
-self._continue_value_(aBlock,aNode);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["ifTrue:", "ifTrue:ifFalse:", "isNode", "interpretNode:continue:", "continue:value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretAll:continue:",
-fn: function (aCollection,aBlock){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._interpretAll_continue_result_(aCollection,aBlock,_st($OrderedCollection())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:",{aCollection:aCollection,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretAll:continue:result:", "new"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretAll:continue:result:",
-fn: function (nodes,aBlock,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(nodes)._isEmpty();
-if(smalltalk.assert($1)){
-self._continue_value_(aBlock,aCollection);
-} else {
-self._interpret_continue_(_st(nodes)._first(),(function(value){
-return smalltalk.withContext(function($ctx2) {
-return self._interpretAll_continue_result_(_st(nodes)._allButFirst(),aBlock,_st(aCollection).__comma([value]));
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,3)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:result:",{nodes:nodes,aBlock:aBlock,aCollection:aCollection},smalltalk.ASTInterpreter)})},
-messageSends: ["ifTrue:ifFalse:", "isEmpty", "continue:value:", "interpret:continue:", "first", "interpretAll:continue:result:", "allButFirst", ","]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretAssignmentNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_continue_(_st(aNode)._right(),(function(value){
-return smalltalk.withContext(function($ctx2) {
-return self._continue_value_(aBlock,self._assign_to_(_st(aNode)._left(),value));
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretAssignmentNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:", "right", "continue:value:", "assign:to:", "left"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretBlockNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._continue_value_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._withBlockContext_((function(){
-return smalltalk.withContext(function($ctx3) {
-$1=self;
-_st($1)._interpret_(_st(_st(aNode)._nodes())._first());
-$2=_st($1)._result();
-return $2;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "withBlockContext:", "interpret:", "first", "nodes", "result"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretBlockSequenceNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpretSequenceNode_continue_(aNode,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockSequenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretSequenceNode:continue:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretCascadeNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_continue_(_st(aNode)._receiver(),(function(receiver){
-return smalltalk.withContext(function($ctx2) {
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each)._receiver_(receiver);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-return self._interpretAll_continue_(_st(_st(aNode)._nodes())._allButLast(),(function(){
-return smalltalk.withContext(function($ctx3) {
-return self._interpret_continue_(_st(_st(aNode)._nodes())._last(),(function(val){
-return smalltalk.withContext(function($ctx4) {
-return self._continue_value_(aBlock,val);
-}, function($ctx4) {$ctx4.fillBlock({val:val},$ctx3,4)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretCascadeNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:", "receiver", "do:", "nodes", "receiver:", "interpretAll:continue:", "allButLast", "last", "continue:value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretClassReferenceNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-self._continue_value_(aBlock,_st(_st($Smalltalk())._current())._at_(_st(aNode)._value()));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretClassReferenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "at:", "current", "value"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretDynamicArrayNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
-return smalltalk.withContext(function($ctx2) {
-return self._continue_value_(aBlock,array);
-}, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicArrayNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretAll:continue:", "nodes", "continue:value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretDynamicDictionaryNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
-var hashedCollection;
-return smalltalk.withContext(function($ctx2) {
-hashedCollection=_st($HashedCollection())._new();
-hashedCollection;
-_st(array)._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(hashedCollection)._add_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-return self._continue_value_(aBlock,hashedCollection);
-}, function($ctx2) {$ctx2.fillBlock({array:array,hashedCollection:hashedCollection},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicDictionaryNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretAll:continue:", "nodes", "new", "do:", "add:", "continue:value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretJSStatementNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@shouldReturn"]=true;
-self._continue_value_(aBlock,self._eval_(_st(aNode)._source()));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretJSStatementNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "eval:", "source"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretMethodNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
-return smalltalk.withContext(function($ctx2) {
-return self._continue_value_(aBlock,_st(array)._first());
-}, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretMethodNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "first"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aNode)._interpreter_continue_(self,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"interpretNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpreter:continue:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretReturnNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_continue_(_st(_st(aNode)._nodes())._first(),(function(value){
-return smalltalk.withContext(function($ctx2) {
-self["@shouldReturn"]=true;
-self["@shouldReturn"];
-return self._continue_value_(aBlock,value);
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretReturnNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:", "first", "nodes", "continue:value:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretSendNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_continue_(_st(aNode)._receiver(),(function(receiver){
-return smalltalk.withContext(function($ctx2) {
-return self._interpretAll_continue_(_st(aNode)._arguments(),(function(args){
-return smalltalk.withContext(function($ctx3) {
-return self._messageFromSendNode_arguments_do_(aNode,args,(function(message){
-return smalltalk.withContext(function($ctx4) {
-_st(self._context())._pc_(_st(_st(self._context())._pc()).__plus((1)));
-return self._continue_value_(aBlock,self._sendMessage_to_superSend_(message,receiver,_st(aNode)._superSend()));
-}, function($ctx4) {$ctx4.fillBlock({message:message},$ctx3,3)})}));
-}, function($ctx3) {$ctx3.fillBlock({args:args},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretSendNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:", "receiver", "interpretAll:continue:", "arguments", "messageFromSendNode:arguments:do:", "pc:", "context", "+", "pc", "continue:value:", "sendMessage:to:superSend:", "superSend"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretSequenceNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
-return smalltalk.withContext(function($ctx2) {
-return self._continue_value_(aBlock,_st(array)._last());
-}, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretSequenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "last"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretValueNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._continue_value_(aBlock,_st(aNode)._value());
-return self}, function($ctx1) {$ctx1.fill(self,"interpretValueNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "value"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretVariableNode:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-$1=self;
-$2=aBlock;
-$4=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($4)){
-$3=_st(_st(self._context())._receiver())._instVarAt_(_st(aNode)._value());
-} else {
-$3=_st(self._context())._localAt_(_st(aNode)._value());
-};
-_st($1)._continue_value_($2,$3);
-return self}, function($ctx1) {$ctx1.fill(self,"interpretVariableNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "ifTrue:ifFalse:", "isInstanceVar", "binding", "instVarAt:", "receiver", "context", "value", "localAt:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageFromSendNode:arguments:do:",
-fn: function (aSendNode,aCollection,aBlock){
-var self=this;
-function $Message(){return smalltalk.Message||(typeof Message=="undefined"?nil:Message)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($Message())._new();
-_st($1)._selector_(_st(aSendNode)._selector());
-_st($1)._arguments_(aCollection);
-$2=_st($1)._yourself();
-self._continue_value_(aBlock,$2);
-return self}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:do:",{aSendNode:aSendNode,aCollection:aCollection,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["continue:value:", "selector:", "new", "selector", "arguments:", "yourself"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@nextNode"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._currentNode();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTInterpreter)})},
-messageSends: ["ifNil:", "currentNode"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@nextNode"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode},smalltalk.ASTInterpreter)})},
-messageSends: []}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@result"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ASTInterpreter)})},
-messageSends: []}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendMessage:to:superSend:",
-fn: function (aMessage,anObject,aBoolean){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-var $early={};
-try {
-$1=aBoolean;
-if(! smalltalk.assert($1)){
-$2=_st(aMessage)._sendTo_(anObject);
-return $2;
-};
-$3=_st(_st(anObject)._class())._superclass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$4=self._messageNotUnderstood_receiver_(aMessage,anObject);
-return $4;
-} else {
-$3;
-};
-method=_st(_st(_st(_st(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_(_st(aMessage)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-$5=self._messageNotUnderstood_receiver_(aMessage,anObject);
-throw $early=[$5];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$6=_st(_st(method)._fn())._applyTo_arguments_(anObject,_st(aMessage)._arguments());
-return $6;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},smalltalk.ASTInterpreter)})},
-messageSends: ["ifFalse:", "sendTo:", "ifNil:", "superclass", "class", "messageNotUnderstood:receiver:", "at:ifAbsent:", "methodDictionary", "selector", "applyTo:arguments:", "fn", "arguments"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@shouldReturn"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldReturn",{},smalltalk.ASTInterpreter)})},
-messageSends: ["ifNil:"]}),
-smalltalk.ASTInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withBlockContext:",
-fn: function (aBlock){
-var self=this;
-var blockResult;
-function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st($AIContext())._new();
-_st($1)._outerContext_(self._context());
-$2=_st($1)._yourself();
-self._context_($2);
-blockResult=_st(aBlock)._value();
-self._context_(_st(self._context())._outerContext());
-$3=blockResult;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"withBlockContext:",{aBlock:aBlock,blockResult:blockResult},smalltalk.ASTInterpreter)})},
-messageSends: ["context:", "outerContext:", "new", "context", "yourself", "value", "outerContext"]}),
-smalltalk.ASTInterpreter);
-
-
-
-smalltalk.addClass('ASTSteppingInterpreter', smalltalk.ASTInterpreter, ['continuation', 'nextNode'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._shouldReturn())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._nextNode()).__eq_eq(self._currentNode());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.ASTSteppingInterpreter)})},
-messageSends: ["or:", "shouldReturn", "==", "nextNode", "currentNode"]}),
-smalltalk.ASTSteppingInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ASTSteppingInterpreter.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@continuation"]=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ASTSteppingInterpreter)})},
-messageSends: ["initialize"]}),
-smalltalk.ASTSteppingInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:continue:",
-fn: function (aNode,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@nextNode"]=aNode;
-self["@continuation"]=(function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.ASTSteppingInterpreter.superclass.fn.prototype._interpret_continue_.apply(_st(self), [aNode,aBlock]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTSteppingInterpreter)})},
-messageSends: ["interpret:continue:"]}),
-smalltalk.ASTSteppingInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@nextNode"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTSteppingInterpreter)})},
-messageSends: []}),
-smalltalk.ASTSteppingInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "step",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@continuation"])._value();
-return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.ASTSteppingInterpreter)})},
-messageSends: ["value"]}),
-smalltalk.ASTSteppingInterpreter);
-
-
-
-smalltalk.addClass('ASTPCNodeVisitor', smalltalk.NodeVisitor, ['useInlinings', 'pc', 'context', 'blockIndex', 'currentNode'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "blockIndex",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@blockIndex"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@blockIndex"]=(0);
-$1=self["@blockIndex"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"blockIndex",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["ifNil:"]}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentNode"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentNode",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "increaseBlockIndex",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@blockIndex"]=_st(self._blockIndex()).__plus((1));
-return self}, function($ctx1) {$ctx1.fill(self,"increaseBlockIndex",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["+", "blockIndex"]}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@pc"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["ifNil:"]}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@pc"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"pc:",{anInteger:anInteger},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "useInlinings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@useInlinings"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=true;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"useInlinings",{},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["ifNil:"]}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "useInlinings:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@useInlinings"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"useInlinings:",{aBoolean:aBoolean},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2,$5;
-$1=_st(aNode)._shouldBeInlined();
-$2=(function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(self._blockIndex()).__gt_eq(_st(self._context())._index());
-$4=(function(){
-return smalltalk.withContext(function($ctx3) {
-self._increaseBlockIndex();
-return smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})});
-return _st($3)._ifFalse_($4);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-$5=(function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})});
-_st($1)._ifFalse_ifTrue_($2,$5);
-return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["ifFalse:ifTrue:", "shouldBeInlined", "ifFalse:", ">=", "blockIndex", "index", "context", "increaseBlockIndex", "visitBlockNode:"]}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitJSStatementNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@currentNode"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
-messageSends: []}),
-smalltalk.ASTPCNodeVisitor);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSendNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$5,$6,$4,$2;
-smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
-$1=_st(self._pc()).__eq(_st(self._context())._pc());
-$2=(function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(aNode)._shouldBeInlined();
-$4=(function(){
-return smalltalk.withContext(function($ctx3) {
-$5=_st(self._blockIndex()).__eq(_st(self._context())._index());
-$6=(function(){
-return smalltalk.withContext(function($ctx4) {
-self._pc_(_st(self._pc()).__plus((1)));
-self["@currentNode"]=aNode;
-return self["@currentNode"];
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})});
-return _st($5)._ifTrue_($6);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})});
-return _st($3)._ifFalse_($4);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-_st($1)._ifFalse_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["visitSendNode:", "ifFalse:", "=", "pc", "context", "shouldBeInlined", "ifTrue:", "blockIndex", "index", "pc:", "+"]}),
-smalltalk.ASTPCNodeVisitor);
-
-
-
-smalltalk.addClass('Interpreter', smalltalk.NodeVisitor, ['node', 'context', 'stack', 'returnValue'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assign:to:",
-fn: function (aNode,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($1)){
-_st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
-} else {
-_st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},smalltalk.Interpreter)})},
-messageSends: ["ifTrue:ifFalse:", "isInstanceVar", "binding", "instVarAt:put:", "receiver", "context", "value", "localAt:put:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._shouldReturn())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._node())._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.Interpreter)})},
-messageSends: ["or:", "shouldReturn", "isNil", "node"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:",
-fn: function (aString){
-var self=this;
-var source,function_;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-source=_st($String())._streamContents_((function(str){
-return smalltalk.withContext(function($ctx2) {
-_st(str)._nextPutAll_("(function(");
-_st(_st(_st(self._context())._locals())._keys())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_(",");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$1=str;
-_st($1)._nextPutAll_("){ return (function() {");
-_st($1)._nextPutAll_(aString);
-$2=_st($1)._nextPutAll_("})() })");
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)})}));
-function_=_st(_st($Compiler())._new())._eval_(source);
-$3=_st(function_)._valueWithPossibleArguments_(_st(_st(self._context())._locals())._values());
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_},smalltalk.Interpreter)})},
-messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "new", "valueWithPossibleArguments:", "values"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._visit_(self._node());
-return self}, function($ctx1) {$ctx1.fill(self,"interpret",{},smalltalk.Interpreter)})},
-messageSends: ["visit:", "node"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._node_(aNode);
-self._interpret();
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["node:", "interpret"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageFromSendNode:arguments:",
-fn: function (aSendNode,aCollection){
-var self=this;
-function $Message(){return smalltalk.Message||(typeof Message=="undefined"?nil:Message)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($Message())._new();
-_st($2)._selector_(_st(aSendNode)._selector());
-_st($2)._arguments_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:",{aSendNode:aSendNode,aCollection:aCollection},smalltalk.Interpreter)})},
-messageSends: ["selector:", "new", "selector", "arguments:", "yourself"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageNotUnderstood:receiver:",
-fn: function (aMessage,anObject){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($MessageNotUnderstood())._new();
-_st($1)._meesage_(aMessage);
-_st($1)._receiver_(anObject);
-$2=_st($1)._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"messageNotUnderstood:receiver:",{aMessage:aMessage,anObject:anObject},smalltalk.Interpreter)})},
-messageSends: ["meesage:", "new", "receiver:", "signal"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._node_(_st(self._node())._nextNode());
-return self}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.Interpreter)})},
-messageSends: ["node:", "nextNode", "node"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@node"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"node",{},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@node"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"node:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "peek",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-_st(self._stack())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-throw $early=[nil];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$1=_st(self._stack())._last();
-return $1;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"peek",{},smalltalk.Interpreter)})},
-messageSends: ["ifEmpty:", "stack", "last"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pop",
-fn: function (){
-var self=this;
-var peekedValue;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-peekedValue=self._peek();
-_st(self._stack())._removeLast();
-$1=peekedValue;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pop",{peekedValue:peekedValue},smalltalk.Interpreter)})},
-messageSends: ["peek", "removeLast", "stack"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "proceed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._atEnd();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._step();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"proceed",{},smalltalk.Interpreter)})},
-messageSends: ["whileFalse:", "atEnd", "step"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "push:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._stack())._add_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"push:",{anObject:anObject},smalltalk.Interpreter)})},
-messageSends: ["add:", "stack"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "restart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._node_(_st(_st(self._context())._ast())._nextChild());
-return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.Interpreter)})},
-messageSends: ["node:", "nextChild", "ast", "context"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._returnValue();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self._context())._receiver();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.Interpreter)})},
-messageSends: ["ifNil:", "returnValue", "receiver", "context"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "returnValue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@returnValue"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"returnValue",{},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "returnValue:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@returnValue"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"returnValue:",{anObject:anObject},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendMessage:to:superSend:",
-fn: function (aMessage,anObject,aBoolean){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-var $early={};
-try {
-$1=aBoolean;
-if(! smalltalk.assert($1)){
-$2=_st(aMessage)._sendTo_(anObject);
-return $2;
-};
-$3=_st(_st(anObject)._class())._superclass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$4=self._messageNotUnderstood_receiver_(aMessage,anObject);
-return $4;
-} else {
-$3;
-};
-method=_st(_st(_st(_st(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_(_st(aMessage)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-$5=self._messageNotUnderstood_receiver_(aMessage,anObject);
-throw $early=[$5];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$6=_st(method)._sendTo_arguments_(anObject,_st(aMessage)._arguments());
-return $6;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},smalltalk.Interpreter)})},
-messageSends: ["ifFalse:", "sendTo:", "ifNil:", "superclass", "class", "messageNotUnderstood:receiver:", "at:ifAbsent:", "methodDictionary", "selector", "sendTo:arguments:", "arguments"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._returnValue())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldReturn",{},smalltalk.Interpreter)})},
-messageSends: ["notNil", "returnValue"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "skip",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._next();
-return self}, function($ctx1) {$ctx1.fill(self,"skip",{},smalltalk.Interpreter)})},
-messageSends: ["next"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stack",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@stack"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@stack"]=_st($OrderedCollection())._new();
-$1=self["@stack"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"stack",{},smalltalk.Interpreter)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "step",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._interpret();
-$2=_st($1)._next();
-return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.Interpreter)})},
-messageSends: ["interpret", "next"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stepOver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._step();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._node())._isSteppingNode();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._step();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.Interpreter)})},
-messageSends: ["step", "whileFalse:", "isSteppingNode", "node"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visit:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._shouldReturn();
-if(! smalltalk.assert($1)){
-smalltalk.Interpreter.superclass.fn.prototype._visit_.apply(_st(self), [aNode]);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["ifFalse:", "shouldReturn", "visit:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitAssignmentNode:",
-fn: function (aNode){
-var self=this;
-var poppedValue;
-return smalltalk.withContext(function($ctx1) { 
-poppedValue=self._pop();
-self._pop();
-self._push_(poppedValue);
-self._assign_to_(_st(aNode)._left(),poppedValue);
-return self}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,poppedValue:poppedValue},smalltalk.Interpreter)})},
-messageSends: ["pop", "push:", "assign:to:", "left"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockNode:",
-fn: function (aNode){
-var self=this;
-var block;
-function $AIBlockClosure(){return smalltalk.AIBlockClosure||(typeof AIBlockClosure=="undefined"?nil:AIBlockClosure)}
-return smalltalk.withContext(function($ctx1) { 
-block=_st($AIBlockClosure())._forContext_node_(self._context(),aNode);
-self._push_(block);
-return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,block:block},smalltalk.Interpreter)})},
-messageSends: ["forContext:node:", "context", "push:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitClassReferenceNode:",
-fn: function (aNode){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-self._push_(_st(_st($Smalltalk())._current())._at_ifAbsent_(_st(aNode)._value(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($PlatformInterface())._globals())._at_(_st(aNode)._value());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["push:", "at:ifAbsent:", "current", "value", "at:", "globals"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicArrayNode:",
-fn: function (aNode){
-var self=this;
-var array;
-return smalltalk.withContext(function($ctx1) { 
-array=[];
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(array)._addFirst_(self._pop());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._push_(array);
-return self}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},smalltalk.Interpreter)})},
-messageSends: ["do:", "nodes", "addFirst:", "pop", "push:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitDynamicDictionaryNode:",
-fn: function (aNode){
-var self=this;
-var hashedCollection;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-hashedCollection=_st($HashedCollection())._new();
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(hashedCollection)._add_(self._pop());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._push_(hashedCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,hashedCollection:hashedCollection},smalltalk.Interpreter)})},
-messageSends: ["new", "do:", "nodes", "add:", "pop", "push:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitJSStatementNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._returnValue_(self._eval_(_st(aNode)._source()));
-return self}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["returnValue:", "eval:", "source"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: []}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitReturnNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._returnValue_(self._pop());
-return self}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["returnValue:", "pop"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSendNode:",
-fn: function (aNode){
-var self=this;
-var receiver,args,message,result;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-args=_st(_st(aNode)._arguments())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._pop();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-receiver=self._pop();
-message=self._messageFromSendNode_arguments_(aNode,_st(args)._reversed());
-result=self._sendMessage_to_superSend_(message,receiver,_st(aNode)._superSend());
-_st(self._context())._pc_(_st(_st(self._context())._pc()).__plus((1)));
-$1=_st(_st(aNode)._isCascadeSendNode())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(aNode)._isLastChild())._not();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-if(smalltalk.assert($1)){
-self._push_(receiver);
-} else {
-self._push_(result);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver,args:args,message:message,result:result},smalltalk.Interpreter)})},
-messageSends: ["collect:", "arguments", "pop", "messageFromSendNode:arguments:", "reversed", "sendMessage:to:superSend:", "superSend", "pc:", "context", "+", "pc", "ifTrue:ifFalse:", "and:", "isCascadeSendNode", "not", "isLastChild", "push:"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitValueNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._push_(_st(aNode)._value());
-return self}, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["push:", "value"]}),
-smalltalk.Interpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitVariableNode:",
-fn: function (aNode){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2,$4,$6,$7,$8,$5;
-var $early={};
-try {
-$1=_st(_st(aNode)._binding())._isUnknownVar();
-$2=(function(){
-return smalltalk.withContext(function($ctx2) {
-$3=self._push_(_st(_st($PlatformInterface())._globals())._at_ifAbsent_(_st(aNode)._value(),(function(){
-return smalltalk.withContext(function($ctx3) {
-return self._error_("Unknown variable");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})));
-throw $early=[$3];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-_st($1)._ifTrue_($2);
-$4=self;
-$6=_st(_st(aNode)._binding())._isInstanceVar();
-$7=(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._context())._receiver())._instVarAt_(_st(aNode)._value());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})});
-$8=(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._context())._localAt_(_st(aNode)._value());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})});
-$5=_st($6)._ifTrue_ifFalse_($7,$8);
-_st($4)._push_($5);
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.Interpreter)})},
-messageSends: ["ifTrue:", "isUnknownVar", "binding", "push:", "at:ifAbsent:", "globals", "value", "error:", "ifTrue:ifFalse:", "isInstanceVar", "instVarAt:", "receiver", "context", "localAt:"]}),
-smalltalk.Interpreter);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.Node)})},
-messageSends: ["interpretNode:continue:"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.Node)})},
-messageSends: []}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretAssignmentNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.AssignmentNode)})},
-messageSends: ["interpretAssignmentNode:continue:"]}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.AssignmentNode)})},
-messageSends: []}),
-smalltalk.AssignmentNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretBlockNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.BlockNode)})},
-messageSends: ["interpretBlockNode:continue:"]}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.BlockNode)})},
-messageSends: []}),
-smalltalk.BlockNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretCascadeNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.CascadeNode)})},
-messageSends: ["interpretCascadeNode:continue:"]}),
-smalltalk.CascadeNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretDynamicArrayNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.DynamicArrayNode)})},
-messageSends: ["interpretDynamicArrayNode:continue:"]}),
-smalltalk.DynamicArrayNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.DynamicArrayNode)})},
-messageSends: []}),
-smalltalk.DynamicArrayNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretDynamicDictionaryNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.DynamicDictionaryNode)})},
-messageSends: ["interpretDynamicDictionaryNode:continue:"]}),
-smalltalk.DynamicDictionaryNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.DynamicDictionaryNode)})},
-messageSends: []}),
-smalltalk.DynamicDictionaryNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretJSStatementNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.JSStatementNode)})},
-messageSends: ["interpretJSStatementNode:continue:"]}),
-smalltalk.JSStatementNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.JSStatementNode)})},
-messageSends: []}),
-smalltalk.JSStatementNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretMethodNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.MethodNode)})},
-messageSends: ["interpretMethodNode:continue:"]}),
-smalltalk.MethodNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretReturnNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ReturnNode)})},
-messageSends: ["interpretReturnNode:continue:"]}),
-smalltalk.ReturnNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretSendNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.SendNode)})},
-messageSends: ["interpretSendNode:continue:"]}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSteppingNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.SendNode)})},
-messageSends: []}),
-smalltalk.SendNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretSequenceNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.SequenceNode)})},
-messageSends: ["interpretSequenceNode:continue:"]}),
-smalltalk.SequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretBlockSequenceNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.BlockSequenceNode)})},
-messageSends: ["interpretBlockSequenceNode:continue:"]}),
-smalltalk.BlockSequenceNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretValueNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ValueNode)})},
-messageSends: ["interpretValueNode:continue:"]}),
-smalltalk.ValueNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretVariableNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.VariableNode)})},
-messageSends: ["interpretVariableNode:continue:"]}),
-smalltalk.VariableNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter:continue:",
-fn: function (anInterpreter,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anInterpreter)._interpretClassReferenceNode_continue_(self,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ClassReferenceNode)})},
-messageSends: ["interpretClassReferenceNode:continue:"]}),
-smalltalk.ClassReferenceNode);
-
-})(global_smalltalk,global_nil,global__st);

+ 337 - 263
js/Compiler-Interpreter.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Interpreter", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Methods", "amber_core/Kernel-Objects", "amber_core/Kernel-Exceptions", "amber_core/Compiler-Core", "amber_core/Compiler-AST"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Interpreter');
+smalltalk.packages["Compiler-Interpreter"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('AIBlockClosure', smalltalk.BlockClosure, ['node', 'outerContext'], 'Compiler-Interpreter');
 smalltalk.AIBlockClosure.comment="I am a special `BlockClosure` subclass used by an interpreter to interpret a block node.\x0a\x0aWhile I am polymorphic with `BlockClosure`, some methods such as `#new` will raise interpretation errors. Unlike a `BlockClosure`, my instance are not JavaScript functions.\x0a\x0aEvaluating an instance will result in interpreting the `node` instance variable (instance of `BlockNode`).";
@@ -29,7 +30,7 @@ return smalltalk.withContext(function($ctx1) {
 return "[ AST Block closure ]";
 }, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.AIBlockClosure)})},
 args: [],
-source: "compiledSource\x0a\x09\x22Unlike blocks, the receiver doesn't represent a JS function\x22\x0a\x09\x0a\x09^ '[ AST Block closure ]' ",
+source: "compiledSource\x0a\x09\x22Unlike blocks, the receiver doesn't represent a JS function\x22\x0a\x09\x0a\x09^ '[ AST Block closure ]'",
 messageSends: [],
 referencedClasses: []
 }),
@@ -199,14 +200,13 @@ return nil;
 $3=_st(context)._interpreter();
 _st($3)._node_(_st(sequenceNode)._nextChild());
 $4=_st($3)._proceed();
-_st(_st(self["@outerContext"])._interpreter())._returnValue_(_st(_st(context)._interpreter())._returnValue());
-_st(console)._log_(_st(_st(context)._interpreter())._returnValue());
+_st(_st(self["@outerContext"])._interpreter())._setNonLocalReturnFromContext_(context);
 $5=_st(_st(context)._interpreter())._pop();
 return $5;
 }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection,context:context,sequenceNode:sequenceNode},smalltalk.AIBlockClosure)})},
 args: ["aCollection"],
-source: "valueWithPossibleArguments: aCollection\x0a\x09| context sequenceNode |\x0a\x09context := outerContext newBlockContext.\x0a\x0a\x09\x22Interpret a copy of the sequence node to avoid creating a new AIBlockClosure\x22\x0a\x09sequenceNode := node nodes first copy\x0a\x09\x09parent: nil;\x0a\x09\x09yourself.\x0a\x0a\x09\x22Populate the arguments into the context locals\x22\x09\x0a\x09node parameters withIndexDo: [ :each :index |\x0a\x09\x09context localAt: each put: (aCollection at: index ifAbsent: [ nil ]) ].\x0a\x0a\x09\x22Interpret the first node of the BlockSequenceNode\x22\x0a\x09context interpreter\x0a\x09\x09node: sequenceNode nextChild;\x0a\x09\x09proceed.\x0a\x09\x09\x0a\x09outerContext interpreter\x0a\x09\x09returnValue: context interpreter returnValue.\x0a\x09\x09\x0a\x09console log: context interpreter returnValue.\x0a\x09\x09\x0a\x09^ context interpreter pop",
-messageSends: ["newBlockContext", "parent:", "copy", "first", "nodes", "yourself", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "nextChild", "proceed", "returnValue:", "returnValue", "log:", "pop"],
+source: "valueWithPossibleArguments: aCollection\x0a\x09| context sequenceNode |\x0a\x09context := outerContext newBlockContext.\x0a\x0a\x09\x22Interpret a copy of the sequence node to avoid creating a new AIBlockClosure\x22\x0a\x09sequenceNode := node nodes first copy\x0a\x09\x09parent: nil;\x0a\x09\x09yourself.\x0a\x0a\x09\x22Populate the arguments into the context locals\x22\x09\x0a\x09node parameters withIndexDo: [ :each :index |\x0a\x09\x09context localAt: each put: (aCollection at: index ifAbsent: [ nil ]) ].\x0a\x0a\x09\x22Interpret the first node of the BlockSequenceNode\x22\x0a\x09context interpreter\x0a\x09\x09node: sequenceNode nextChild;\x0a\x09\x09proceed.\x0a\x09\x09\x0a\x09outerContext interpreter\x0a\x09\x09setNonLocalReturnFromContext: context.\x0a\x09\x09\x0a\x09^ context interpreter pop",
+messageSends: ["newBlockContext", "parent:", "copy", "first", "nodes", "yourself", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "nextChild", "proceed", "setNonLocalReturnFromContext:", "pop"],
 referencedClasses: []
 }),
 smalltalk.AIBlockClosure);
@@ -264,13 +264,17 @@ category: 'converting',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$4,$1;
 $2=self._isBlockContext();
-if(smalltalk.assert($2)){
-$1=_st("a block (in ".__comma(_st(self._methodContext())._asString())).__comma(")");
-} else {
-$1=_st(_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ")).__comma(self._selector());
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st("a block (in ".__comma(_st(self._methodContext())._asString())).__comma(")");
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ")).__comma(self._selector());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.AIContext)})},
 args: [],
@@ -287,20 +291,26 @@ category: 'interpreting',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
+var $1,$3,$2,$4,$5,$6;
+var $early={};
+try {
 $1=self._isBlockContext();
-if(smalltalk.assert($1)){
-$2=_st(self._outerContext())._ast();
-return $2;
-};
-$3=self["@ast"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self._initializeAST();
-} else {
-$3;
-};
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+$3=_st(self._outerContext())._ast();
+throw $early=[$3];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifTrue_($2);
 $4=self["@ast"];
-return $4;
+$5=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._initializeAST();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+_st($4)._ifNil_($5);
+$6=self["@ast"];
+return $6;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"ast",{},smalltalk.AIContext)})},
 args: [],
 source: "ast\x0a\x09self isBlockContext ifTrue: [ ^ self outerContext ast ].\x0a\x0a\x09ast ifNil: [ self initializeAST ].\x0a\x09^ ast",
@@ -316,13 +326,13 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@index"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return (0);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.AIContext)})},
 args: [],
@@ -373,29 +383,27 @@ category: 'initialization',
 fn: function (aMethodContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
+var $1,$2,$3,$5,$6,$4;
 $1=self;
 _st($1)._pc_(_st(aMethodContext)._pc());
 _st($1)._index_(_st(aMethodContext)._index());
 _st($1)._receiver_(_st(aMethodContext)._receiver());
 $2=_st($1)._method_(_st(aMethodContext)._method());
 $3=_st(aMethodContext)._outerContext();
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-var outer;
-outer=$receiver;
-$4=_st(outer)._methodContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$4;
-} else {
-self._outerContext_(_st(self._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
-};
-_st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
+$4=(function(outer){
 return smalltalk.withContext(function($ctx2) {
+$5=_st(outer)._methodContext();
+$6=(function(){
+return smalltalk.withContext(function($ctx3) {
+return self._outerContext_(_st(self._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})});
+_st($5)._ifNotNil_($6);
+return _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
+return smalltalk.withContext(function($ctx3) {
 return _st(self._locals())._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)})}));
-};
+}, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({outer:outer},$ctx1,1)})});
+_st($3)._ifNotNil_($4);
 return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext)})},
 args: ["aMethodContext"],
 source: "initializeFromMethodContext: aMethodContext\x0a\x0a\x09self \x0a\x09\x09pc: aMethodContext pc;\x0a\x09\x09index: aMethodContext index;\x0a\x09\x09receiver: aMethodContext receiver;\x0a\x09\x09method: aMethodContext method.\x0a\x09\x09\x0a\x09aMethodContext outerContext ifNotNil: [ :outer |\x0a\x09\x09\x22If the method context is nil, the block was defined in JS, so ignore it\x22\x0a\x09\x09outer methodContext ifNotNil: [\x0a\x09\x09\x09self outerContext: (self class fromMethodContext: aMethodContext outerContext) ].\x0a\x09\x09\x09aMethodContext locals keysAndValuesDo: [ :key :value |\x0a\x09\x09\x09\x09self locals at: key put: value ] ]",
@@ -412,24 +420,26 @@ fn: function (){
 var self=this;
 function $Interpreter(){return smalltalk.Interpreter||(typeof Interpreter=="undefined"?nil:Interpreter)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
+var $1,$2,$3,$4,$5,$6;
 $1=_st($Interpreter())._new();
 _st($1)._context_(self);
 $2=_st($1)._yourself();
 self["@interpreter"]=$2;
 $3=self["@ast"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(self["@interpreter"])._node_(self._retrieveNode());
-};
-$4=_st(_st(self._innerContext())._notNil())._and_((function(){
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self["@interpreter"])._node_(self._retrieveNode());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($3)._ifNotNil_($4);
+$5=_st(_st(self._innerContext())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(self._innerContext())._isBlockContext())._not();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-if(smalltalk.assert($4)){
-self._setupInterpreter_(self["@interpreter"]);
-};
+$6=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._setupInterpreter_(self["@interpreter"]);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})});
+_st($5)._ifTrue_($6);
 return self}, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{},smalltalk.AIContext)})},
 args: [],
 source: "initializeInterpreter\x0a\x09interpreter := Interpreter new\x0a\x09\x09context: self;\x0a\x09\x09yourself.\x0a\x09ast ifNotNil: [ interpreter node: self retrieveNode ].\x0a\x09\x0a\x09(self innerContext notNil and: [ \x0a\x09\x09self innerContext isBlockContext not ]) ifTrue: [\x0a\x09\x09\x09self setupInterpreter: interpreter ]",
@@ -497,15 +507,15 @@ category: 'interpreting',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1,$2,$3;
 $1=self["@interpreter"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._initializeInterpreter();
-} else {
-$1;
-};
-$2=self["@interpreter"];
-return $2;
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._initializeInterpreter();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifNil_($2);
+$3=self["@interpreter"];
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AIContext)})},
 args: [],
 source: "interpreter\x0a\x09interpreter ifNil: [ self initializeInterpreter ].\x0a\x09^ interpreter",
@@ -555,15 +565,19 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$4,$1;
 $1=_st(self._locals())._at_ifAbsent_(aString,(function(){
 return smalltalk.withContext(function($ctx2) {
 $2=self._isBlockContext();
-if(smalltalk.assert($2)){
+$3=(function(){
+return smalltalk.withContext(function($ctx3) {
 return nil;
-} else {
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})});
+$4=(function(){
+return smalltalk.withContext(function($ctx3) {
 return _st(self._outerContext())._localAt_(aString);
-};
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})});
+return _st($2)._ifTrue_ifFalse_($3,$4);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString},smalltalk.AIContext)})},
@@ -597,15 +611,15 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1,$2,$3;
 $1=self["@locals"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._initializeLocals();
-} else {
-$1;
-};
-$2=self["@locals"];
-return $2;
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._initializeLocals();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifNil_($2);
+$3=self["@locals"];
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.AIContext)})},
 args: [],
 source: "locals\x0a\x09locals ifNil: [ self initializeLocals ].\x0a\x09\x0a\x09^ locals",
@@ -655,21 +669,25 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
+var $1,$3,$2,$5,$6,$4;
+var $early={};
+try {
 $1=self._isBlockContext();
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$4=self._outerContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=$4;
-} else {
-var outer;
-outer=$receiver;
-$3=_st(outer)._methodContext();
-};
-return $3;
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+$3=self;
+throw $early=[$3];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifFalse_($2);
+$5=self._outerContext();
+$6=(function(outer){
+return smalltalk.withContext(function($ctx2) {
+return _st(outer)._methodContext();
+}, function($ctx2) {$ctx2.fillBlock({outer:outer},$ctx1,2)})});
+$4=_st($5)._ifNotNil_($6);
+return $4;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"methodContext",{},smalltalk.AIContext)})},
 args: [],
 source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self outerContext ifNotNil: [ :outer |\x0a\x09\x09outer methodContext ]",
@@ -741,14 +759,14 @@ category: 'interpreting',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@pc"];
-if(($receiver = $2) == nil || $receiver == undefined){
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@pc"]=(0);
-$1=self["@pc"];
-} else {
-$1=$2;
-};
+return self["@pc"];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.AIContext)})},
 args: [],
@@ -838,13 +856,13 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self._method();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-$1=_st(self._method())._selector();
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._method())._selector();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNotNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.AIContext)})},
 args: [],
@@ -1046,14 +1064,14 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@interpreter"];
-if(($receiver = $2) == nil || $receiver == undefined){
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@interpreter"]=_st(self._defaultInterpreterClass())._new();
-$1=self["@interpreter"];
-} else {
-$1=$2;
-};
+return self["@interpreter"];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTDebugger)})},
 args: [],
@@ -1240,13 +1258,17 @@ category: 'private',
 fn: function (aNode,anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$4,$1;
 $2=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($2)){
-$1=_st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
-} else {
-$1=_st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$4=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+$1=_st($2)._ifTrue_ifFalse_($3,$4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},smalltalk.ASTInterpreter)})},
 args: ["aNode", "anObject"],
@@ -1264,14 +1286,14 @@ fn: function (){
 var self=this;
 function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@context"];
-if(($receiver = $2) == nil || $receiver == undefined){
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@context"]=_st($AIContext())._new();
-$1=self["@context"];
-} else {
-$1=$2;
-};
+return self["@context"];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTInterpreter)})},
 args: [],
@@ -1415,24 +1437,34 @@ category: 'interpreting',
 fn: function (aNode,aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$3,$2,$4,$5,$6;
+var $early={};
+try {
 $1=self["@shouldReturn"];
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(aNode)._isNode();
-if(smalltalk.assert($3)){
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+$3=self;
+throw $early=[$3];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifTrue_($2);
+$4=_st(aNode)._isNode();
+$5=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@currentNode"]=aNode;
 self["@currentNode"];
-self._interpretNode_continue_(aNode,(function(value){
-return smalltalk.withContext(function($ctx2) {
+return self._interpretNode_continue_(aNode,(function(value){
+return smalltalk.withContext(function($ctx3) {
 return self._continue_value_(aBlock,value);
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,3)})}));
-} else {
-self._continue_value_(aBlock,aNode);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
+}, function($ctx3) {$ctx3.fillBlock({value:value},$ctx2,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+$6=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._continue_value_(aBlock,aNode);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})});
+_st($4)._ifTrue_ifFalse_($5,$6);
+return self}
+catch(e) {if(e===$early)return e[0]; throw e}
+}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
 args: ["aNode", "aBlock"],
 source: "interpret: aNode continue: aBlock\x0a\x09shouldReturn ifTrue: [ ^ self ].\x0a\x0a\x09aNode isNode\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09currentNode := aNode.\x0a\x09\x09\x09self interpretNode: aNode continue: [ :value |\x0a\x09\x09\x09\x09self continue: aBlock value: value ] ]\x0a\x09\x09ifFalse: [ self continue: aBlock value: aNode ]",
 messageSends: ["ifTrue:", "ifTrue:ifFalse:", "isNode", "interpretNode:continue:", "continue:value:"],
@@ -1464,16 +1496,20 @@ category: 'private',
 fn: function (nodes,aBlock,aCollection){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $1,$2,$3;
 $1=_st(nodes)._isEmpty();
-if(smalltalk.assert($1)){
-self._continue_value_(aBlock,aCollection);
-} else {
-self._interpret_continue_(_st(nodes)._first(),(function(value){
+$2=(function(){
 return smalltalk.withContext(function($ctx2) {
+return self._continue_value_(aBlock,aCollection);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._interpret_continue_(_st(nodes)._first(),(function(value){
+return smalltalk.withContext(function($ctx3) {
 return self._interpretAll_continue_result_(_st(nodes)._allButFirst(),aBlock,_st(aCollection).__comma([value]));
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,3)})}));
-};
+}, function($ctx3) {$ctx3.fillBlock({value:value},$ctx2,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+_st($1)._ifTrue_ifFalse_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:result:",{nodes:nodes,aBlock:aBlock,aCollection:aCollection},smalltalk.ASTInterpreter)})},
 args: ["nodes", "aBlock", "aCollection"],
 source: "interpretAll: nodes continue: aBlock result: aCollection\x0a\x09nodes isEmpty\x0a\x09\x09ifTrue: [ self continue: aBlock value: aCollection ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self interpret: nodes first continue: [:value |\x0a\x09\x09\x09\x09self\x0a\x09\x09\x09\x09\x09interpretAll: nodes allButFirst\x0a\x09\x09\x09\x09\x09continue: aBlock\x0a\x09\x09\x09\x09\x09result: aCollection, { value } ] ]",
@@ -1776,15 +1812,19 @@ category: 'interpreting',
 fn: function (aNode,aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
+var $1,$2,$4,$5,$6,$3;
 $1=self;
 $2=aBlock;
 $4=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($4)){
-$3=_st(_st(self._context())._receiver())._instVarAt_(_st(aNode)._value());
-} else {
-$3=_st(self._context())._localAt_(_st(aNode)._value());
-};
+$5=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self._context())._receiver())._instVarAt_(_st(aNode)._value());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$6=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._context())._localAt_(_st(aNode)._value());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+$3=_st($4)._ifTrue_ifFalse_($5,$6);
 _st($1)._continue_value_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"interpretVariableNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
 args: ["aNode", "aBlock"],
@@ -1823,13 +1863,13 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@nextNode"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._currentNode();
-} else {
-$1=$2;
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._currentNode();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTInterpreter)})},
 args: [],
@@ -1881,33 +1921,35 @@ fn: function (aMessage,anObject,aBoolean){
 var self=this;
 var method;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
+var $1,$3,$2,$4,$6,$5,$7,$8;
 var $early={};
 try {
 $1=aBoolean;
-if(! smalltalk.assert($1)){
-$2=_st(aMessage)._sendTo_(anObject);
-return $2;
-};
-$3=_st(_st(anObject)._class())._superclass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$4=self._messageNotUnderstood_receiver_(aMessage,anObject);
-return $4;
-} else {
-$3;
-};
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+$3=_st(aMessage)._sendTo_(anObject);
+throw $early=[$3];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifFalse_($2);
+$4=_st(_st(anObject)._class())._superclass();
+$5=(function(){
+return smalltalk.withContext(function($ctx2) {
+$6=self._messageNotUnderstood_receiver_(aMessage,anObject);
+throw $early=[$6];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+_st($4)._ifNil_($5);
 method=_st(_st(_st(_st(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_(_st(aMessage)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
-$5=self._messageNotUnderstood_receiver_(aMessage,anObject);
-throw $early=[$5];
+$7=self._messageNotUnderstood_receiver_(aMessage,anObject);
+throw $early=[$7];
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$6=_st(_st(method)._fn())._applyTo_arguments_(anObject,_st(aMessage)._arguments());
-return $6;
+$8=_st(_st(method)._fn())._applyTo_arguments_(anObject,_st(aMessage)._arguments());
+return $8;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},smalltalk.ASTInterpreter)})},
 args: ["aMessage", "anObject", "aBoolean"],
-source: "sendMessage: aMessage to: anObject superSend: aBoolean\x0a\x09| method |\x0a\x09\x0a\x09aBoolean ifFalse: [ ^ aMessage sendTo: anObject ].\x0a\x09anObject class superclass ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09method := anObject class superclass methodDictionary\x0a\x09\x09at: aMessage selector\x0a\x09\x09ifAbsent: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ method fn applyTo: anObject arguments: aMessage arguments\x0a\x09\x09\x0a\x09\x0a\x09",
+source: "sendMessage: aMessage to: anObject superSend: aBoolean\x0a\x09| method |\x0a\x09\x0a\x09aBoolean ifFalse: [ ^ aMessage sendTo: anObject ].\x0a\x09anObject class superclass ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09method := anObject class superclass methodDictionary\x0a\x09\x09at: aMessage selector\x0a\x09\x09ifAbsent: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ method fn applyTo: anObject arguments: aMessage arguments",
 messageSends: ["ifFalse:", "sendTo:", "ifNil:", "superclass", "class", "messageNotUnderstood:receiver:", "at:ifAbsent:", "methodDictionary", "selector", "applyTo:arguments:", "fn", "arguments"],
 referencedClasses: []
 }),
@@ -1920,13 +1962,13 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@shouldReturn"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return false;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"shouldReturn",{},smalltalk.ASTInterpreter)})},
 args: [],
@@ -2071,14 +2113,14 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@blockIndex"];
-if(($receiver = $2) == nil || $receiver == undefined){
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@blockIndex"]=(0);
-$1=self["@blockIndex"];
-} else {
-$1=$2;
-};
+return self["@blockIndex"];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"blockIndex",{},smalltalk.ASTPCNodeVisitor)})},
 args: [],
@@ -2163,13 +2205,13 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@pc"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return (0);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.ASTPCNodeVisitor)})},
 args: [],
@@ -2202,13 +2244,13 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@useInlinings"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=true;
-} else {
-$1=$2;
-};
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return true;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"useInlinings",{},smalltalk.ASTPCNodeVisitor)})},
 args: [],
@@ -2241,27 +2283,24 @@ category: 'visiting',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2,$5;
-$1=_st(aNode)._shouldBeInlined();
-$2=(function(){
+var $1,$2;
+$1=_st(_st(_st(aNode)._parent())._isSendNode())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
-$3=_st(self._blockIndex()).__gt_eq(_st(self._context())._index());
-$4=(function(){
-return smalltalk.withContext(function($ctx3) {
+return _st(_st(aNode)._parent())._shouldBeInlined();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+if(smalltalk.assert($1)){
+smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
+} else {
+$2=_st(self._blockIndex()).__gt_eq(_st(self._context())._index());
+if(! smalltalk.assert($2)){
 self._increaseBlockIndex();
-return smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})});
-return _st($3)._ifFalse_($4);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-$5=(function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})});
-_st($1)._ifFalse_ifTrue_($2,$5);
+smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
+};
+};
 return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
 args: ["aNode"],
-source: "visitBlockNode: aNode\x0a\x09aNode shouldBeInlined \x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self blockIndex >= self context index ifFalse: [\x0a\x09\x09\x09\x09self increaseBlockIndex.\x0a\x09\x09\x09\x09super visitBlockNode: aNode ] ]\x0a\x09\x09ifTrue: [ super visitBlockNode: aNode ]",
-messageSends: ["ifFalse:ifTrue:", "shouldBeInlined", "ifFalse:", ">=", "blockIndex", "index", "context", "increaseBlockIndex", "visitBlockNode:"],
+source: "visitBlockNode: aNode\x0a\x09\x22Inlined send node. Assume that the block is inlined\x22\x0a\x09(aNode parent isSendNode and: [ aNode parent shouldBeInlined ])\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self blockIndex >= self context index ifFalse: [\x0a\x09\x09\x09\x09self increaseBlockIndex.\x0a\x09\x09\x09\x09super visitBlockNode: aNode ] ]\x0a\x09\x09ifTrue: [ super visitBlockNode: aNode ]",
+messageSends: ["ifFalse:ifTrue:", "and:", "isSendNode", "parent", "shouldBeInlined", "ifFalse:", ">=", "blockIndex", "index", "context", "increaseBlockIndex", "visitBlockNode:"],
 referencedClasses: []
 }),
 smalltalk.ASTPCNodeVisitor);
@@ -2319,7 +2358,7 @@ smalltalk.ASTPCNodeVisitor);
 
 
 
-smalltalk.addClass('Interpreter', smalltalk.NodeVisitor, ['node', 'context', 'stack', 'returnValue'], 'Compiler-Interpreter');
+smalltalk.addClass('Interpreter', smalltalk.NodeVisitor, ['node', 'context', 'stack', 'returnValue', 'returned'], 'Compiler-Interpreter');
 smalltalk.addMethod(
 smalltalk.method({
 selector: "assign:to:",
@@ -2327,13 +2366,17 @@ category: 'private',
 fn: function (aNode,anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $1,$2,$3;
 $1=_st(_st(aNode)._binding())._isInstanceVar();
-if(smalltalk.assert($1)){
-_st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
-} else {
-_st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
-};
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._context())._localAt_put_(_st(aNode)._value(),anObject);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+_st($1)._ifTrue_ifFalse_($2,$3);
 return self}, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},smalltalk.Interpreter)})},
 args: ["aNode", "anObject"],
 source: "assign: aNode to: anObject\x0a\x09aNode binding isInstanceVar\x0a\x09\x09ifTrue: [ self context receiver instVarAt: aNode value put: anObject ]\x0a\x09\x09ifFalse: [ self context localAt: aNode value put: anObject ]",
@@ -2350,15 +2393,15 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._shouldReturn())._or_((function(){
+$1=_st(self._hasReturned())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._node())._isNil();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.Interpreter)})},
 args: [],
-source: "atEnd\x0a\x09^ self shouldReturn or: [ self node isNil ]",
-messageSends: ["or:", "shouldReturn", "isNil", "node"],
+source: "atEnd\x0a\x09^ self hasReturned or: [ self node isNil ]",
+messageSends: ["or:", "hasReturned", "isNil", "node"],
 referencedClasses: []
 }),
 smalltalk.Interpreter);
@@ -2435,6 +2478,29 @@ referencedClasses: ["String", "Compiler"]
 }),
 smalltalk.Interpreter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "hasReturned",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@returned"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$1=false;
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"hasReturned",{},smalltalk.Interpreter)})},
+args: [],
+source: "hasReturned\x0a\x09^ returned ifNil: [ false ]",
+messageSends: ["ifNil:"],
+referencedClasses: []
+}),
+smalltalk.Interpreter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "interpret",
@@ -2673,17 +2739,17 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
-$2=self._returnValue();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self._context())._receiver();
+$2=self._hasReturned();
+if(smalltalk.assert($2)){
+$1=self._returnValue();
 } else {
-$1=$2;
+$1=_st(self._context())._receiver();
 };
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.Interpreter)})},
 args: [],
-source: "result\x0a\x09^ self returnValue ifNil: [ self context receiver ]",
-messageSends: ["ifNil:", "returnValue", "receiver", "context"],
+source: "result\x0a\x09^ self hasReturned \x0a\x09\x09ifTrue: [ self returnValue ] \x0a\x09\x09ifFalse: [ self context receiver ]",
+messageSends: ["ifTrue:ifFalse:", "hasReturned", "returnValue", "receiver", "context"],
 referencedClasses: []
 }),
 smalltalk.Interpreter);
@@ -2730,28 +2796,30 @@ fn: function (aMessage,anObject,aBoolean){
 var self=this;
 var method;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
+var $1,$3,$2,$4,$6,$5,$7,$8;
 var $early={};
 try {
 $1=aBoolean;
-if(! smalltalk.assert($1)){
-$2=_st(aMessage)._sendTo_(anObject);
-return $2;
-};
-$3=_st(_st(anObject)._class())._superclass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$4=self._messageNotUnderstood_receiver_(aMessage,anObject);
-return $4;
-} else {
-$3;
-};
+$2=(function(){
+return smalltalk.withContext(function($ctx2) {
+$3=_st(aMessage)._sendTo_(anObject);
+throw $early=[$3];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+_st($1)._ifFalse_($2);
+$4=_st(_st(anObject)._class())._superclass();
+$5=(function(){
+return smalltalk.withContext(function($ctx2) {
+$6=self._messageNotUnderstood_receiver_(aMessage,anObject);
+throw $early=[$6];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
+_st($4)._ifNil_($5);
 method=_st(_st(_st(_st(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_(_st(aMessage)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
-$5=self._messageNotUnderstood_receiver_(aMessage,anObject);
-throw $early=[$5];
+$7=self._messageNotUnderstood_receiver_(aMessage,anObject);
+throw $early=[$7];
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$6=_st(method)._sendTo_arguments_(anObject,_st(aMessage)._arguments());
-return $6;
+$8=_st(method)._sendTo_arguments_(anObject,_st(aMessage)._arguments());
+return $8;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},smalltalk.Interpreter)})},
@@ -2764,18 +2832,22 @@ smalltalk.Interpreter);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "shouldReturn",
-category: 'testing',
-fn: function (){
+selector: "setNonLocalReturnFromContext:",
+category: 'interpreting',
+fn: function (aContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._returnValue())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldReturn",{},smalltalk.Interpreter)})},
-args: [],
-source: "shouldReturn\x0a\x09^ self returnValue notNil",
-messageSends: ["notNil", "returnValue"],
+$1=_st(_st(aContext)._interpreter())._hasReturned();
+if(smalltalk.assert($1)){
+self["@returned"]=true;
+self["@returned"];
+self._returnValue_(_st(_st(aContext)._interpreter())._returnValue());
+};
+return self}, function($ctx1) {$ctx1.fill(self,"setNonLocalReturnFromContext:",{aContext:aContext},smalltalk.Interpreter)})},
+args: ["aContext"],
+source: "setNonLocalReturnFromContext: aContext\x0a\x09aContext interpreter hasReturned ifTrue: [\x0a\x09\x09returned := true.\x0a\x09\x09self returnValue: aContext interpreter returnValue ]",
+messageSends: ["ifTrue:", "hasReturned", "interpreter", "returnValue:", "returnValue"],
 referencedClasses: []
 }),
 smalltalk.Interpreter);
@@ -2804,14 +2876,14 @@ fn: function (){
 var self=this;
 function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self["@stack"];
-if(($receiver = $2) == nil || $receiver == undefined){
+$3=(function(){
+return smalltalk.withContext(function($ctx2) {
 self["@stack"]=_st($OrderedCollection())._new();
-$1=self["@stack"];
-} else {
-$1=$2;
-};
+return self["@stack"];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
+$1=_st($2)._ifNil_($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"stack",{},smalltalk.Interpreter)})},
 args: [],
@@ -2871,14 +2943,14 @@ fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self._shouldReturn();
+$1=self._hasReturned();
 if(! smalltalk.assert($1)){
 smalltalk.Interpreter.superclass.fn.prototype._visit_.apply(_st(self), [aNode]);
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},smalltalk.Interpreter)})},
 args: ["aNode"],
-source: "visit: aNode\x0a\x09self shouldReturn ifFalse: [ super visit: aNode ]",
-messageSends: ["ifFalse:", "shouldReturn", "visit:"],
+source: "visit: aNode\x0a\x09self hasReturned ifFalse: [ super visit: aNode ]",
+messageSends: ["ifFalse:", "hasReturned", "visit:"],
 referencedClasses: []
 }),
 smalltalk.Interpreter);
@@ -2995,10 +3067,11 @@ category: 'visiting',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
+self["@returned"]=true;
 self._returnValue_(self._eval_(_st(aNode)._source()));
 return self}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.Interpreter)})},
 args: ["aNode"],
-source: "visitJSStatementNode: aNode\x0a\x09self returnValue: (self eval: aNode source)",
+source: "visitJSStatementNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: (self eval: aNode source)",
 messageSends: ["returnValue:", "eval:", "source"],
 referencedClasses: []
 }),
@@ -3026,10 +3099,11 @@ category: 'visiting',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
+self["@returned"]=true;
 self._returnValue_(self._pop());
 return self}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.Interpreter)})},
 args: ["aNode"],
-source: "visitReturnNode: aNode\x0a\x09self returnValue: self pop",
+source: "visitReturnNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: self pop",
 messageSends: ["returnValue:", "pop"],
 referencedClasses: []
 }),
@@ -3511,4 +3585,4 @@ referencedClasses: []
 }),
 smalltalk.ClassReferenceNode);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1399
js/Compiler-Semantic.deploy.js

@@ -1,1399 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Semantic');
-
-smalltalk.addClass('LexicalScope', smalltalk.Object, ['node', 'instruction', 'temps', 'args', 'outerScope', 'blockIndex'], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addArg:",
-fn: function (aString){
-var self=this;
-function $ArgVar(){return smalltalk.ArgVar||(typeof ArgVar=="undefined"?nil:ArgVar)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._args())._at_put_(aString,_st($ArgVar())._on_(aString));
-_st(_st(self._args())._at_(aString))._scope_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"addArg:",{aString:aString},smalltalk.LexicalScope)})},
-messageSends: ["at:put:", "args", "on:", "scope:", "at:"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addTemp:",
-fn: function (aString){
-var self=this;
-function $TempVar(){return smalltalk.TempVar||(typeof TempVar=="undefined"?nil:TempVar)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._temps())._at_put_(aString,_st($TempVar())._on_(aString));
-_st(_st(self._temps())._at_(aString))._scope_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"addTemp:",{aString:aString},smalltalk.LexicalScope)})},
-messageSends: ["at:put:", "temps", "on:", "scope:", "at:"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1="$ctx".__comma(_st(self._scopeLevel())._asString());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.LexicalScope)})},
-messageSends: [",", "asString", "scopeLevel"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allVariableNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._args())._keys()).__comma(_st(self._temps())._keys());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.LexicalScope)})},
-messageSends: [",", "keys", "args", "temps"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "args",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@args"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@args"]=_st($Dictionary())._new();
-$1=self["@args"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"args",{},smalltalk.LexicalScope)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindingFor:",
-fn: function (aStringOrNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._pseudoVars())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._args())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._temps())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
-return smalltalk.withContext(function($ctx4) {
-return nil;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aStringOrNode:aStringOrNode},smalltalk.LexicalScope)})},
-messageSends: ["at:ifAbsent:", "pseudoVars", "value", "args", "temps"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "blockIndex",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@blockIndex"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"blockIndex",{},smalltalk.LexicalScope)})},
-messageSends: ["ifNil:"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "blockIndex:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@blockIndex"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"blockIndex:",{anInteger:anInteger},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canInlineNonLocalReturns",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isInlined())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._outerScope())._canInlineNonLocalReturns();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},smalltalk.LexicalScope)})},
-messageSends: ["and:", "isInlined", "canInlineNonLocalReturns", "outerScope"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instruction",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@instruction"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"instruction",{},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instruction:",
-fn: function (anIRInstruction){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@instruction"]=anIRInstruction;
-return self}, function($ctx1) {$ctx1.fill(self,"instruction:",{anIRInstruction:anIRInstruction},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isMethodScope())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isBlockScope",{},smalltalk.LexicalScope)})},
-messageSends: ["not", "isMethodScope"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInlined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._instruction())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._instruction())._isInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.LexicalScope)})},
-messageSends: ["and:", "notNil", "instruction", "isInlined"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMethodScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isMethodScope",{},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lookupVariable:",
-fn: function (aNode){
-var self=this;
-var lookup;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-lookup=self._bindingFor_(aNode);
-$1=lookup;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._outerScope();
-if(($receiver = $2) == nil || $receiver == undefined){
-lookup=$2;
-} else {
-lookup=_st(self._outerScope())._lookupVariable_(aNode);
-};
-lookup;
-} else {
-$1;
-};
-$3=lookup;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"lookupVariable:",{aNode:aNode,lookup:lookup},smalltalk.LexicalScope)})},
-messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._outerScope();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-$1=_st(self._outerScope())._methodScope();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodScope",{},smalltalk.LexicalScope)})},
-messageSends: ["ifNotNil:", "outerScope", "methodScope"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@node"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"node",{},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@node"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"node:",{aNode:aNode},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "outerScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@outerScope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"outerScope",{},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "outerScope:",
-fn: function (aLexicalScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@outerScope"]=aLexicalScope;
-return self}, function($ctx1) {$ctx1.fill(self,"outerScope:",{aLexicalScope:aLexicalScope},smalltalk.LexicalScope)})},
-messageSends: []}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pseudoVars",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodScope())._pseudoVars();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},smalltalk.LexicalScope)})},
-messageSends: ["pseudoVars", "methodScope"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scopeLevel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self._outerScope();
-if(($receiver = $1) == nil || $receiver == undefined){
-return (1);
-} else {
-$1;
-};
-$2=self._isInlined();
-if(smalltalk.assert($2)){
-$3=_st(self._outerScope())._scopeLevel();
-return $3;
-};
-$4=_st(_st(self._outerScope())._scopeLevel()).__plus((1));
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"scopeLevel",{},smalltalk.LexicalScope)})},
-messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"]}),
-smalltalk.LexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "temps",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@temps"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@temps"]=_st($Dictionary())._new();
-$1=self["@temps"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"temps",{},smalltalk.LexicalScope)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.LexicalScope);
-
-
-
-smalltalk.addClass('MethodLexicalScope', smalltalk.LexicalScope, ['iVars', 'pseudoVars', 'unknownVariables', 'localReturn', 'nonLocalReturns'], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addIVar:",
-fn: function (aString){
-var self=this;
-function $InstanceVar(){return smalltalk.InstanceVar||(typeof InstanceVar=="undefined"?nil:InstanceVar)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._iVars())._at_put_(aString,_st($InstanceVar())._on_(aString));
-_st(_st(self._iVars())._at_(aString))._scope_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"addIVar:",{aString:aString},smalltalk.MethodLexicalScope)})},
-messageSends: ["at:put:", "iVars", "on:", "scope:", "at:"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addNonLocalReturn:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._nonLocalReturns())._add_(aScope);
-return self}, function($ctx1) {$ctx1.fill(self,"addNonLocalReturn:",{aScope:aScope},smalltalk.MethodLexicalScope)})},
-messageSends: ["add:", "nonLocalReturns"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allVariableNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.MethodLexicalScope.superclass.fn.prototype._allVariableNames.apply(_st(self), [])).__comma(_st(self._iVars())._keys());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.MethodLexicalScope)})},
-messageSends: [",", "allVariableNames", "keys", "iVars"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindingFor:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=smalltalk.MethodLexicalScope.superclass.fn.prototype._bindingFor_.apply(_st(self), [aNode]);
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self._iVars())._at_ifAbsent_(_st(aNode)._value(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aNode:aNode},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "iVars", "value"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canInlineNonLocalReturns",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},smalltalk.MethodLexicalScope)})},
-messageSends: []}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._localReturn();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasLocalReturn",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["localReturn"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasNonLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._nonLocalReturns())._notEmpty();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasNonLocalReturn",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["notEmpty", "nonLocalReturns"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "iVars",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@iVars"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@iVars"]=_st($Dictionary())._new();
-$1=self["@iVars"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"iVars",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMethodScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isMethodScope",{},smalltalk.MethodLexicalScope)})},
-messageSends: []}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "localReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@localReturn"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"localReturn",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "localReturn:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@localReturn"]=aBoolean;
-return self}, function($ctx1) {$ctx1.fill(self,"localReturn:",{aBoolean:aBoolean},smalltalk.MethodLexicalScope)})},
-messageSends: []}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodScope",{},smalltalk.MethodLexicalScope)})},
-messageSends: []}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nonLocalReturns",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@nonLocalReturns"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@nonLocalReturns"]=_st($OrderedCollection())._new();
-$1=self["@nonLocalReturns"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nonLocalReturns",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pseudoVars",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $PseudoVar(){return smalltalk.PseudoVar||(typeof PseudoVar=="undefined"?nil:PseudoVar)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self["@pseudoVars"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@pseudoVars"]=_st($Dictionary())._new();
-self["@pseudoVars"];
-_st(_st(_st($Smalltalk())._current())._pseudoVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$2=_st($PseudoVar())._on_(each);
-_st($2)._scope_(self._methodScope());
-$3=_st($2)._yourself();
-return _st(self["@pseudoVars"])._at_put_(each,$3);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-} else {
-$1;
-};
-$4=self["@pseudoVars"];
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "new", "do:", "pseudoVariableNames", "current", "at:put:", "scope:", "on:", "methodScope", "yourself"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeNonLocalReturn:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope},smalltalk.MethodLexicalScope)})},
-messageSends: ["remove:ifAbsent:", "nonLocalReturns"]}),
-smalltalk.MethodLexicalScope);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unknownVariables",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@unknownVariables"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@unknownVariables"]=_st($OrderedCollection())._new();
-$1=self["@unknownVariables"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.MethodLexicalScope);
-
-
-
-smalltalk.addClass('ScopeVar', smalltalk.Object, ['scope', 'name'], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._name())._asVariableName();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.ScopeVar)})},
-messageSends: ["asVariableName", "name"]}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isArgVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isArgVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClassRefVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isClassRefVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInstanceVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isInstanceVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isPseudoVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isPseudoVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isTempVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isTempVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isUnknownVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isUnknownVar",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@name"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@name"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@scope"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"scope",{},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scope:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@scope"]=aScope;
-return self}, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope},smalltalk.ScopeVar)})},
-messageSends: []}),
-smalltalk.ScopeVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "validateAssignment",
-fn: function (){
-var self=this;
-function $InvalidAssignmentError(){return smalltalk.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._isArgVar())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._isPseudoVar();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-$2=_st($InvalidAssignmentError())._new();
-_st($2)._variableName_(self._name());
-$3=_st($2)._signal();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"validateAssignment",{},smalltalk.ScopeVar)})},
-messageSends: ["ifTrue:", "or:", "isArgVar", "isPseudoVar", "variableName:", "new", "name", "signal"]}),
-smalltalk.ScopeVar);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._name_(aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aString:aString},smalltalk.ScopeVar.klass)})},
-messageSends: ["name:", "new", "yourself"]}),
-smalltalk.ScopeVar.klass);
-
-
-smalltalk.addClass('AliasVar', smalltalk.ScopeVar, ['node'], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@node"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"node",{},smalltalk.AliasVar)})},
-messageSends: []}),
-smalltalk.AliasVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "node:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@node"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"node:",{aNode:aNode},smalltalk.AliasVar)})},
-messageSends: []}),
-smalltalk.AliasVar);
-
-
-
-smalltalk.addClass('ArgVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isArgVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isArgVar",{},smalltalk.ArgVar)})},
-messageSends: []}),
-smalltalk.ArgVar);
-
-
-
-smalltalk.addClass('ClassRefVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("$".__comma(self._name())).__comma("()");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.ClassRefVar)})},
-messageSends: [",", "name"]}),
-smalltalk.ClassRefVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClassRefVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isClassRefVar",{},smalltalk.ClassRefVar)})},
-messageSends: []}),
-smalltalk.ClassRefVar);
-
-
-
-smalltalk.addClass('InstanceVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("self[\x22@".__comma(self._name())).__comma("\x22]");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.InstanceVar)})},
-messageSends: [",", "name"]}),
-smalltalk.InstanceVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInstanceVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInstanceVar",{},smalltalk.InstanceVar)})},
-messageSends: []}),
-smalltalk.InstanceVar);
-
-
-
-smalltalk.addClass('PseudoVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alias",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._name();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.PseudoVar)})},
-messageSends: ["name"]}),
-smalltalk.PseudoVar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isPseudoVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isPseudoVar",{},smalltalk.PseudoVar)})},
-messageSends: []}),
-smalltalk.PseudoVar);
-
-
-
-smalltalk.addClass('TempVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isTempVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isTempVar",{},smalltalk.TempVar)})},
-messageSends: []}),
-smalltalk.TempVar);
-
-
-
-smalltalk.addClass('UnknownVar', smalltalk.ScopeVar, [], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isUnknownVar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isUnknownVar",{},smalltalk.UnknownVar)})},
-messageSends: []}),
-smalltalk.UnknownVar);
-
-
-
-smalltalk.addClass('SemanticAnalyzer', smalltalk.NodeVisitor, ['currentScope', 'theClass', 'classReferences', 'messageSends', 'superSends', 'blockIndex'], 'Compiler-Semantic');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferences",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@classReferences"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@classReferences"]=_st($Set())._new();
-$1=self["@classReferences"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classReferences",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorShadowingVariable:",
-fn: function (aString){
-var self=this;
-function $ShadowingVariableError(){return smalltalk.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($ShadowingVariableError())._new();
-_st($1)._variableName_(aString);
-$2=_st($1)._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"errorShadowingVariable:",{aString:aString},smalltalk.SemanticAnalyzer)})},
-messageSends: ["variableName:", "new", "signal"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorUnknownVariable:",
-fn: function (aNode){
-var self=this;
-var identifier;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-identifier=_st(aNode)._value();
-$1=_st(_st(_st(_st(_st($Smalltalk())._current())._globalJsVariables())._includes_(identifier))._not())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._isVariableGloballyUndefined_(identifier);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-$2=_st($UnknownVariableError())._new();
-_st($2)._variableName_(_st(aNode)._value());
-$3=_st($2)._signal();
-$3;
-} else {
-_st(_st(_st(self["@currentScope"])._methodScope())._unknownVariables())._add_(_st(aNode)._value());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"errorUnknownVariable:",{aNode:aNode,identifier:identifier},smalltalk.SemanticAnalyzer)})},
-messageSends: ["value", "ifTrue:ifFalse:", "and:", "not", "includes:", "globalJsVariables", "current", "isVariableGloballyUndefined:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isVariableGloballyUndefined:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return eval('typeof ' + aString + ' == "undefined"');
-return self}, function($ctx1) {$ctx1.fill(self,"isVariableGloballyUndefined:",{aString:aString},smalltalk.SemanticAnalyzer)})},
-messageSends: []}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@messageSends"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@messageSends"]=_st($Dictionary())._new();
-$1=self["@messageSends"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newBlockScope",
-fn: function (){
-var self=this;
-function $LexicalScope(){return smalltalk.LexicalScope||(typeof LexicalScope=="undefined"?nil:LexicalScope)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newScopeOfClass_($LexicalScope());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newBlockScope",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["newScopeOfClass:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newMethodScope",
-fn: function (){
-var self=this;
-function $MethodLexicalScope(){return smalltalk.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newScopeOfClass_($MethodLexicalScope());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newMethodScope",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["newScopeOfClass:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newScopeOfClass:",
-fn: function (aLexicalScopeClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(aLexicalScopeClass)._new();
-_st($2)._outerScope_(self["@currentScope"]);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newScopeOfClass:",{aLexicalScopeClass:aLexicalScopeClass},smalltalk.SemanticAnalyzer)})},
-messageSends: ["outerScope:", "new", "yourself"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextBlockIndex",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@blockIndex"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@blockIndex"]=(0);
-self["@blockIndex"];
-} else {
-$1;
-};
-self["@blockIndex"]=_st(self["@blockIndex"]).__plus((1));
-$2=self["@blockIndex"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"nextBlockIndex",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNil:", "+"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "popScope",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@currentScope"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self["@currentScope"]=_st(self["@currentScope"])._outerScope();
-self["@currentScope"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"popScope",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNotNil:", "outerScope"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pushScope:",
-fn: function (aScope){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aScope)._outerScope_(self["@currentScope"]);
-self["@currentScope"]=aScope;
-return self}, function($ctx1) {$ctx1.fill(self,"pushScope:",{aScope:aScope},smalltalk.SemanticAnalyzer)})},
-messageSends: ["outerScope:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superSends",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@superSends"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@superSends"]=_st($Dictionary())._new();
-$1=self["@superSends"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"superSends",{},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SemanticAnalyzer)})},
-messageSends: []}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SemanticAnalyzer)})},
-messageSends: []}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "validateVariableScope:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@currentScope"])._lookupVariable_(aString);
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._errorShadowingVariable_(aString);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"validateVariableScope:",{aString:aString},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitAssignmentNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitAssignmentNode_.apply(_st(self), [aNode]);
-_st(_st(aNode)._left())._beAssigned();
-return self}, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["visitAssignmentNode:", "beAssigned", "left"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitBlockNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._pushScope_(self._newBlockScope());
-_st(aNode)._scope_(self["@currentScope"]);
-_st(self["@currentScope"])._node_(aNode);
-_st(self["@currentScope"])._blockIndex_(self._nextBlockIndex());
-_st(_st(aNode)._parameters())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-self._validateVariableScope_(each);
-return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
-self._popScope();
-return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitCascadeNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitCascadeNode_.apply(_st(self), [aNode]);
-$1=_st(_st(_st(aNode)._nodes())._first())._superSend();
-if(smalltalk.assert($1)){
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._superSend_(true);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["visitCascadeNode:", "ifTrue:", "superSend", "first", "nodes", "do:", "superSend:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitClassReferenceNode:",
-fn: function (aNode){
-var self=this;
-function $ClassRefVar(){return smalltalk.ClassRefVar||(typeof ClassRefVar=="undefined"?nil:ClassRefVar)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._classReferences())._add_(_st(aNode)._value());
-$1=_st($ClassRefVar())._new();
-_st($1)._name_(_st(aNode)._value());
-$2=_st($1)._yourself();
-_st(aNode)._binding_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["add:", "classReferences", "value", "binding:", "name:", "new", "yourself"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitMethodNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._pushScope_(self._newMethodScope());
-_st(aNode)._scope_(self["@currentScope"]);
-_st(self["@currentScope"])._node_(aNode);
-_st(_st(self._theClass())._allInstanceVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@currentScope"])._addIVar_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(_st(aNode)._arguments())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-self._validateVariableScope_(each);
-return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitMethodNode_.apply(_st(self), [aNode]);
-$1=aNode;
-_st($1)._classReferences_(self._classReferences());
-_st($1)._messageSends_(_st(self._messageSends())._keys());
-$2=_st($1)._superSends_(_st(self._superSends())._keys());
-self._popScope();
-return self}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "messageSends:", "keys", "messageSends", "superSends:", "superSends", "popScope"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitReturnNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(aNode)._scope_(self["@currentScope"]);
-$1=_st(self["@currentScope"])._isMethodScope();
-if(smalltalk.assert($1)){
-_st(self["@currentScope"])._localReturn_(true);
-} else {
-_st(_st(self["@currentScope"])._methodScope())._addNonLocalReturn_(self["@currentScope"]);
-};
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitReturnNode_.apply(_st(self), [aNode]);
-return self}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSendNode:",
-fn: function (aNode){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-function $IRSendInliner(){return smalltalk.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(_st(_st(aNode)._receiver())._value()).__eq("super");
-if(smalltalk.assert($1)){
-_st(aNode)._superSend_(true);
-_st(_st(aNode)._receiver())._value_("self");
-_st(self._superSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Set())._new();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(_st(self._superSends())._at_(_st(aNode)._selector()))._add_(aNode);
-} else {
-$2=_st(_st($IRSendInliner())._inlinedSelectors())._includes_(_st(aNode)._selector());
-if(smalltalk.assert($2)){
-_st(aNode)._shouldBeInlined_(true);
-_st(_st(aNode)._arguments())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(each)._isBlockNode();
-if(smalltalk.assert($3)){
-return _st(each)._shouldBeInlined_(true);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)})}));
-_st(_st(aNode)._receiver())._shouldBeAliased_(true);
-};
-};
-_st(self._messageSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Set())._new();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
-_st(_st(self._messageSends())._at_(_st(aNode)._selector()))._add_(aNode);
-_st(aNode)._index_(_st(_st(self._messageSends())._at_(_st(aNode)._selector()))._size());
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
-return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "at:ifAbsentPut:", "superSends", "selector", "new", "add:", "at:", "ifTrue:", "includes:", "inlinedSelectors", "shouldBeInlined:", "do:", "arguments", "isBlockNode", "shouldBeAliased:", "messageSends", "index:", "size", "visitSendNode:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitSequenceNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(aNode)._temps())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-self._validateVariableScope_(each);
-return _st(self["@currentScope"])._addTemp_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitSequenceNode_.apply(_st(self), [aNode]);
-return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitVariableNode:",
-fn: function (aNode){
-var self=this;
-function $UnknownVar(){return smalltalk.UnknownVar||(typeof UnknownVar=="undefined"?nil:UnknownVar)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$2;
-$1=aNode;
-$3=_st(self["@currentScope"])._lookupVariable_(aNode);
-if(($receiver = $3) == nil || $receiver == undefined){
-self._errorUnknownVariable_(aNode);
-$4=_st($UnknownVar())._new();
-_st($4)._name_(_st(aNode)._value());
-$5=_st($4)._yourself();
-$2=$5;
-} else {
-$2=$3;
-};
-_st($1)._binding_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["binding:", "ifNil:", "lookupVariable:", "errorUnknownVariable:", "name:", "new", "value", "yourself"]}),
-smalltalk.SemanticAnalyzer);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._theClass_(aClass);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass},smalltalk.SemanticAnalyzer.klass)})},
-messageSends: ["theClass:", "new", "yourself"]}),
-smalltalk.SemanticAnalyzer.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 49 - 55
js/Compiler-Semantic.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Semantic", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Compiler-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Semantic');
+smalltalk.packages["Compiler-Semantic"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('LexicalScope', smalltalk.Object, ['node', 'instruction', 'temps', 'args', 'outerScope', 'blockIndex'], 'Compiler-Semantic');
 smalltalk.LexicalScope.comment="I represent a lexical scope where variable names are associated with ScopeVars\x0aInstances are used for block scopes. Method scopes are instances of MethodLexicalScope.\x0a\x0aI am attached to a ScopeVar and method/block nodes.\x0aEach context (method/closure) get a fresh scope that inherits from its outer scope.";
@@ -16,7 +17,7 @@ _st(_st(self._args())._at_(aString))._scope_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"addArg:",{aString:aString},smalltalk.LexicalScope)})},
 args: ["aString"],
 source: "addArg: aString\x0a\x09self args at: aString put: (ArgVar on: aString).\x0a\x09(self args at: aString) scope: self",
-messageSends: ["at:put:", "args", "on:", "scope:", "at:"],
+messageSends: ["at:put:", "on:", "args", "scope:", "at:"],
 referencedClasses: ["ArgVar"]
 }),
 smalltalk.LexicalScope);
@@ -34,7 +35,7 @@ _st(_st(self._temps())._at_(aString))._scope_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"addTemp:",{aString:aString},smalltalk.LexicalScope)})},
 args: ["aString"],
 source: "addTemp: aString\x0a\x09self temps at: aString put: (TempVar on: aString).\x0a\x09(self temps at: aString) scope: self",
-messageSends: ["at:put:", "temps", "on:", "scope:", "at:"],
+messageSends: ["at:put:", "on:", "temps", "scope:", "at:"],
 referencedClasses: ["TempVar"]
 }),
 smalltalk.LexicalScope);
@@ -70,7 +71,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.LexicalScope)})},
 args: [],
 source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
-messageSends: [",", "keys", "args", "temps"],
+messageSends: [",", "keys", "temps", "args"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -115,14 +116,14 @@ return smalltalk.withContext(function($ctx3) {
 return _st(self._temps())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
 return smalltalk.withContext(function($ctx4) {
 return nil;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aStringOrNode:aStringOrNode},smalltalk.LexicalScope)})},
 args: ["aStringOrNode"],
 source: "bindingFor: aStringOrNode\x0a\x09^ self pseudoVars at: aStringOrNode value ifAbsent: [\x0a\x09\x09self args at: aStringOrNode value ifAbsent: [\x0a\x09\x09\x09self temps at: aStringOrNode value ifAbsent: [ nil ]]]",
-messageSends: ["at:ifAbsent:", "pseudoVars", "value", "args", "temps"],
+messageSends: ["at:ifAbsent:", "value", "temps", "args", "pseudoVars"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -177,12 +178,12 @@ var $1;
 $1=_st(self._isInlined())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._outerScope())._canInlineNonLocalReturns();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},smalltalk.LexicalScope)})},
 args: [],
 source: "canInlineNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canInlineNonLocalReturns ]",
-messageSends: ["and:", "isInlined", "canInlineNonLocalReturns", "outerScope"],
+messageSends: ["and:", "canInlineNonLocalReturns", "outerScope", "isInlined"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -250,12 +251,12 @@ var $1;
 $1=_st(_st(self._instruction())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._instruction())._isInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.LexicalScope)})},
 args: [],
 source: "isInlined\x0a\x09^ self instruction notNil and: [\x0a\x09\x09self instruction isInlined ]",
-messageSends: ["and:", "notNil", "instruction", "isInlined"],
+messageSends: ["and:", "isInlined", "instruction", "notNil"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -303,7 +304,7 @@ return $3;
 }, function($ctx1) {$ctx1.fill(self,"lookupVariable:",{aNode:aNode,lookup:lookup},smalltalk.LexicalScope)})},
 args: ["aNode"],
 source: "lookupVariable: aNode\x0a\x09| lookup |\x0a\x09lookup := (self bindingFor: aNode).\x0a\x09lookup ifNil: [\x0a\x09\x09lookup := self outerScope ifNotNil: [\x0a\x09\x09\x09(self outerScope lookupVariable: aNode) ]].\x0a\x09^ lookup",
-messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"],
+messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "lookupVariable:", "outerScope"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -326,7 +327,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodScope",{},smalltalk.LexicalScope)})},
 args: [],
 source: "methodScope\x0a\x09^ self outerScope ifNotNil: [\x0a\x09\x09self outerScope methodScope ]",
-messageSends: ["ifNotNil:", "outerScope", "methodScope"],
+messageSends: ["ifNotNil:", "methodScope", "outerScope"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -441,7 +442,7 @@ return $4;
 }, function($ctx1) {$ctx1.fill(self,"scopeLevel",{},smalltalk.LexicalScope)})},
 args: [],
 source: "scopeLevel\x0a\x09self outerScope ifNil: [ ^ 1 ].\x0a\x09self isInlined ifTrue: [ ^ self outerScope scopeLevel ].\x0a\x09\x0a\x09^ self outerScope scopeLevel + 1",
-messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"],
+messageSends: ["ifNil:", "outerScope", "ifTrue:", "scopeLevel", "isInlined", "+"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -488,7 +489,7 @@ _st(_st(self._iVars())._at_(aString))._scope_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"addIVar:",{aString:aString},smalltalk.MethodLexicalScope)})},
 args: ["aString"],
 source: "addIVar: aString\x0a\x09self iVars at: aString put: (InstanceVar on: aString).\x0a\x09(self iVars at: aString) scope: self",
-messageSends: ["at:put:", "iVars", "on:", "scope:", "at:"],
+messageSends: ["at:put:", "on:", "iVars", "scope:", "at:"],
 referencedClasses: ["InstanceVar"]
 }),
 smalltalk.MethodLexicalScope);
@@ -522,7 +523,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.MethodLexicalScope)})},
 args: [],
 source: "allVariableNames\x0a\x09^ super allVariableNames, self iVars keys",
-messageSends: [",", "allVariableNames", "keys", "iVars"],
+messageSends: [",", "keys", "iVars", "allVariableNames"],
 referencedClasses: []
 }),
 smalltalk.MethodLexicalScope);
@@ -540,7 +541,7 @@ if(($receiver = $2) == nil || $receiver == undefined){
 $1=_st(self._iVars())._at_ifAbsent_(_st(aNode)._value(),(function(){
 return smalltalk.withContext(function($ctx2) {
 return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 } else {
 $1=$2;
 };
@@ -548,7 +549,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aNode:aNode},smalltalk.MethodLexicalScope)})},
 args: ["aNode"],
 source: "bindingFor: aNode\x0a\x09^ (super bindingFor: aNode) ifNil: [\x0a\x09\x09self iVars at: aNode value ifAbsent: [ nil ]]",
-messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "iVars", "value"],
+messageSends: ["ifNil:", "at:ifAbsent:", "value", "iVars", "bindingFor:"],
 referencedClasses: []
 }),
 smalltalk.MethodLexicalScope);
@@ -735,8 +736,8 @@ category: 'accessing',
 fn: function (){
 var self=this;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 function $PseudoVar(){return smalltalk.PseudoVar||(typeof PseudoVar=="undefined"?nil:PseudoVar)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3,$4;
 $1=self["@pseudoVars"];
@@ -749,7 +750,7 @@ $2=_st($PseudoVar())._on_(each);
 _st($2)._scope_(self._methodScope());
 $3=_st($2)._yourself();
 return _st(self["@pseudoVars"])._at_put_(each,$3);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 } else {
 $1;
 };
@@ -758,8 +759,8 @@ return $4;
 }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},smalltalk.MethodLexicalScope)})},
 args: [],
 source: "pseudoVars\x0a\x09pseudoVars ifNil: [\x0a\x09\x09pseudoVars := Dictionary new.\x0a\x09\x09Smalltalk current pseudoVariableNames do: [ :each |\x0a\x09\x09\x09pseudoVars at: each put: ((PseudoVar on: each)\x0a\x09\x09\x09\x09scope: self methodScope;\x0a\x09\x09\x09\x09yourself) ]].\x0a\x09^ pseudoVars",
-messageSends: ["ifNil:", "new", "do:", "pseudoVariableNames", "current", "at:put:", "scope:", "on:", "methodScope", "yourself"],
-referencedClasses: ["Dictionary", "Smalltalk", "PseudoVar"]
+messageSends: ["ifNil:", "new", "do:", "at:put:", "scope:", "methodScope", "on:", "yourself", "pseudoVariableNames", "current"],
+referencedClasses: ["Dictionary", "PseudoVar", "Smalltalk"]
 }),
 smalltalk.MethodLexicalScope);
 
@@ -772,7 +773,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 _st(self._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
 return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope},smalltalk.MethodLexicalScope)})},
 args: ["aScope"],
 source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
@@ -1004,7 +1005,7 @@ var $1,$2,$3;
 $1=_st(self._isArgVar())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._isPseudoVar();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($1)){
 $2=_st($InvalidAssignmentError())._new();
 _st($2)._variableName_(self._name());
@@ -1014,7 +1015,7 @@ $3;
 return self}, function($ctx1) {$ctx1.fill(self,"validateAssignment",{},smalltalk.ScopeVar)})},
 args: [],
 source: "validateAssignment\x0a\x09(self isArgVar or: [ self isPseudoVar ]) ifTrue: [\x0a\x09\x09InvalidAssignmentError new\x0a\x09\x09\x09variableName: self name;\x0a\x09\x09\x09signal]",
-messageSends: ["ifTrue:", "or:", "isArgVar", "isPseudoVar", "variableName:", "new", "name", "signal"],
+messageSends: ["ifTrue:", "variableName:", "name", "new", "signal", "or:", "isPseudoVar", "isArgVar"],
 referencedClasses: ["InvalidAssignmentError"]
 }),
 smalltalk.ScopeVar);
@@ -1254,7 +1255,7 @@ smalltalk.UnknownVar);
 
 
 
-smalltalk.addClass('SemanticAnalyzer', smalltalk.NodeVisitor, ['currentScope', 'theClass', 'classReferences', 'messageSends', 'superSends', 'blockIndex'], 'Compiler-Semantic');
+smalltalk.addClass('SemanticAnalyzer', smalltalk.NodeVisitor, ['currentScope', 'blockIndex', 'theClass', 'classReferences', 'messageSends', 'superSends'], 'Compiler-Semantic');
 smalltalk.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
 smalltalk.addMethod(
 smalltalk.method({
@@ -1308,15 +1309,15 @@ category: 'error handling',
 fn: function (aNode){
 var self=this;
 var identifier;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3;
 identifier=_st(aNode)._value();
 $1=_st(_st(_st(_st(_st($Smalltalk())._current())._globalJsVariables())._includes_(identifier))._not())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._isVariableGloballyUndefined_(identifier);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 if(smalltalk.assert($1)){
 $2=_st($UnknownVariableError())._new();
 _st($2)._variableName_(_st(aNode)._value());
@@ -1328,8 +1329,8 @@ _st(_st(_st(self["@currentScope"])._methodScope())._unknownVariables())._add_(_s
 return self}, function($ctx1) {$ctx1.fill(self,"errorUnknownVariable:",{aNode:aNode,identifier:identifier},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "errorUnknownVariable: aNode\x0a\x09\x22Throw an error if the variable is undeclared in the global JS scope (i.e. window).\x0a\x09We allow all variables listed by Smalltalk>>#globalJsVariables.\x0a\x09This list includes: `jQuery`, `window`, `document`,  `process` and `global`\x0a\x09for nodejs and browser environments.\x0a\x09\x0a\x09This is only to make sure compilation works on both browser-based and nodejs environments.\x0a\x09The ideal solution would be to use a pragma instead\x22\x0a\x0a\x09| identifier |\x0a\x09identifier := aNode value.\x0a\x09\x0a\x09((Smalltalk current globalJsVariables includes: identifier) not\x0a\x09\x09and: [ self isVariableGloballyUndefined: identifier ])\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09UnknownVariableError new\x0a\x09\x09\x09\x09\x09variableName: aNode value;\x0a\x09\x09\x09\x09\x09signal ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09currentScope methodScope unknownVariables add: aNode value ]",
-messageSends: ["value", "ifTrue:ifFalse:", "and:", "not", "includes:", "globalJsVariables", "current", "isVariableGloballyUndefined:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope"],
-referencedClasses: ["Smalltalk", "UnknownVariableError"]
+messageSends: ["value", "ifTrue:ifFalse:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope", "and:", "isVariableGloballyUndefined:", "not", "includes:", "globalJsVariables", "current"],
+referencedClasses: ["UnknownVariableError", "Smalltalk"]
 }),
 smalltalk.SemanticAnalyzer);
 
@@ -1575,7 +1576,7 @@ self._errorShadowingVariable_(aString);
 return self}, function($ctx1) {$ctx1.fill(self,"validateVariableScope:",{aString:aString},smalltalk.SemanticAnalyzer)})},
 args: ["aString"],
 source: "validateVariableScope: aString\x0a\x09\x22Validate the variable scope in by doing a recursive lookup, up to the method scope\x22\x0a\x0a\x09(currentScope lookupVariable: aString) ifNotNil: [\x0a\x09\x09self errorShadowingVariable: aString ]",
-messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"],
+messageSends: ["ifNotNil:", "errorShadowingVariable:", "lookupVariable:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1612,12 +1613,12 @@ _st(_st(aNode)._parameters())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 self._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,0)})}));
 smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitBlockNode_.apply(_st(self), [aNode]);
 self._popScope();
 return self}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
-source: "visitBlockNode: aNode\x0a\x09self pushScope: self newBlockScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x09currentScope blockIndex: self nextBlockIndex.\x0a\x09\x0a\x09aNode parameters do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitBlockNode: aNode.\x0a\x09self popScope",
+source: "visitBlockNode: aNode\x0a\x09self pushScope: self newBlockScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x09currentScope blockIndex: self nextBlockIndex.\x0a\x0a\x09aNode parameters do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitBlockNode: aNode.\x0a\x09self popScope",
 messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"],
 referencedClasses: []
 }),
@@ -1641,7 +1642,7 @@ return _st(each)._superSend_(true);
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
-source: "visitCascadeNode: aNode\x0a\x09super visitCascadeNode: aNode.\x0a\x09aNode nodes first superSend ifTrue: [\x0a\x09\x09aNode nodes do: [ :each | each superSend: true ]]",
+source: "visitCascadeNode: aNode\x0a\x09super visitCascadeNode: aNode.\x0a\x09aNode nodes first superSend ifTrue: [\x0a\x09\x09aNode nodes do: [ :each | each superSend: true ] ]",
 messageSends: ["visitCascadeNode:", "ifTrue:", "superSend", "first", "nodes", "do:", "superSend:"],
 referencedClasses: []
 }),
@@ -1664,7 +1665,7 @@ _st(aNode)._binding_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"visitClassReferenceNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "visitClassReferenceNode: aNode\x0a\x09self classReferences add: aNode value.\x0a\x09aNode binding: (ClassRefVar new name: aNode value; yourself)",
-messageSends: ["add:", "classReferences", "value", "binding:", "name:", "new", "yourself"],
+messageSends: ["add:", "value", "classReferences", "binding:", "name:", "new", "yourself"],
 referencedClasses: ["ClassRefVar"]
 }),
 smalltalk.SemanticAnalyzer);
@@ -1683,12 +1684,12 @@ _st(self["@currentScope"])._node_(aNode);
 _st(_st(self._theClass())._allInstanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@currentScope"])._addIVar_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 _st(_st(aNode)._arguments())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 self._validateVariableScope_(each);
 return _st(self["@currentScope"])._addArg_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitMethodNode_.apply(_st(self), [aNode]);
 $1=aNode;
 _st($1)._classReferences_(self._classReferences());
@@ -1698,7 +1699,7 @@ self._popScope();
 return self}, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allInstanceVariableNames do: [:each |\x0a\x09\x09currentScope addIVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09messageSends: self messageSends keys;\x0a\x09\x09superSends: self superSends keys.\x0a\x09self popScope",
-messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "messageSends:", "keys", "messageSends", "superSends:", "superSends", "popScope"],
+messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "addIVar:", "allInstanceVariableNames", "theClass", "validateVariableScope:", "addArg:", "arguments", "visitMethodNode:", "classReferences:", "classReferences", "messageSends:", "keys", "messageSends", "superSends:", "superSends", "popScope"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1722,7 +1723,7 @@ smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitReturnNode_.apply(_st(s
 return self}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "visitReturnNode: aNode\x0a\x09aNode scope: currentScope.\x0a\x09currentScope isMethodScope\x0a\x09\x09ifTrue: [ currentScope localReturn: true ]\x0a\x09\x09ifFalse: [ currentScope methodScope addNonLocalReturn: currentScope ].\x0a\x09super visitReturnNode: aNode",
-messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"],
+messageSends: ["scope:", "ifTrue:ifFalse:", "localReturn:", "addNonLocalReturn:", "methodScope", "isMethodScope", "visitReturnNode:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1736,7 +1737,7 @@ var self=this;
 function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
 function $IRSendInliner(){return smalltalk.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2;
 $1=_st(_st(_st(aNode)._receiver())._value()).__eq("super");
 if(smalltalk.assert($1)){
 _st(aNode)._superSend_(true);
@@ -1750,27 +1751,20 @@ _st(_st(self._superSends())._at_(_st(aNode)._selector()))._add_(aNode);
 $2=_st(_st($IRSendInliner())._inlinedSelectors())._includes_(_st(aNode)._selector());
 if(smalltalk.assert($2)){
 _st(aNode)._shouldBeInlined_(true);
-_st(_st(aNode)._arguments())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(each)._isBlockNode();
-if(smalltalk.assert($3)){
-return _st(each)._shouldBeInlined_(true);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)})}));
 _st(_st(aNode)._receiver())._shouldBeAliased_(true);
 };
 };
 _st(self._messageSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st($Set())._new();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
 _st(_st(self._messageSends())._at_(_st(aNode)._selector()))._add_(aNode);
 _st(aNode)._index_(_st(_st(self._messageSends())._at_(_st(aNode)._selector()))._size());
 smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
 return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
-source: "visitSendNode: aNode\x0a\x0a\x09aNode receiver value = 'super'\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09aNode superSend: true.\x0a\x09\x09\x09aNode receiver value: 'self'.\x0a\x09\x09\x09self superSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09\x09\x09(self superSends at: aNode selector) add: aNode ]\x0a\x09\x09\x0a\x09\x09ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode arguments do: [ :each |\x0a\x09\x09\x09\x09each isBlockNode ifTrue: [ each shouldBeInlined: true ] ].\x0a\x09\x09\x09aNode receiver shouldBeAliased: true ] ].\x0a\x0a\x09self messageSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09(self messageSends at: aNode selector) add: aNode.\x0a\x0a\x09aNode index: (self messageSends at: aNode selector) size.\x0a\x0a\x09super visitSendNode: aNode",
-messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "at:ifAbsentPut:", "superSends", "selector", "new", "add:", "at:", "ifTrue:", "includes:", "inlinedSelectors", "shouldBeInlined:", "do:", "arguments", "isBlockNode", "shouldBeAliased:", "messageSends", "index:", "size", "visitSendNode:"],
+source: "visitSendNode: aNode\x0a\x0a\x09aNode receiver value = 'super'\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09aNode superSend: true.\x0a\x09\x09\x09aNode receiver value: 'self'.\x0a\x09\x09\x09self superSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09\x09\x09(self superSends at: aNode selector) add: aNode ]\x0a\x09\x09\x0a\x09\x09ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode receiver shouldBeAliased: true ] ].\x0a\x0a\x09self messageSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09(self messageSends at: aNode selector) add: aNode.\x0a\x0a\x09aNode index: (self messageSends at: aNode selector) size.\x0a\x0a\x09super visitSendNode: aNode",
+messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "at:ifAbsentPut:", "superSends", "selector", "new", "add:", "at:", "ifTrue:", "includes:", "inlinedSelectors", "shouldBeInlined:", "shouldBeAliased:", "messageSends", "index:", "size", "visitSendNode:"],
 referencedClasses: ["Set", "IRSendInliner"]
 }),
 smalltalk.SemanticAnalyzer);
@@ -1786,12 +1780,12 @@ _st(_st(aNode)._temps())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 self._validateVariableScope_(each);
 return _st(self["@currentScope"])._addTemp_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitSequenceNode_.apply(_st(self), [aNode]);
 return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addTemp: each ].\x0a\x0a\x09super visitSequenceNode: aNode",
-messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"],
+messageSends: ["do:", "validateVariableScope:", "addTemp:", "temps", "visitSequenceNode:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1820,7 +1814,7 @@ _st($1)._binding_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
 source: "visitVariableNode: aNode\x0a\x09\x22Bind a ScopeVar to aNode by doing a lookup in the current scope.\x0a\x09If no ScopeVar is found, bind a UnknowVar and throw an error\x22\x0a\x0a\x09aNode binding: ((currentScope lookupVariable: aNode) ifNil: [\x0a\x09\x09self errorUnknownVariable: aNode.\x0a\x09\x09UnknownVar new name: aNode value; yourself ])",
-messageSends: ["binding:", "ifNil:", "lookupVariable:", "errorUnknownVariable:", "name:", "new", "value", "yourself"],
+messageSends: ["binding:", "ifNil:", "errorUnknownVariable:", "name:", "value", "new", "yourself", "lookupVariable:"],
 referencedClasses: ["UnknownVar"]
 }),
 smalltalk.SemanticAnalyzer);
@@ -1847,4 +1841,4 @@ referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1529
js/Compiler-Tests.deploy.js

@@ -1,1529 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Tests');
-
-smalltalk.addClass('ASTVisitorTest', smalltalk.TestCase, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "analyze:forClass:",
-fn: function (aNode,aClass){
-var self=this;
-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;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},smalltalk.ASTVisitorTest)})},
-messageSends: ["visit:", "on:"]}),
-smalltalk.ASTVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parse:",
-fn: function (aString){
-var self=this;
-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;
-}, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},smalltalk.ASTVisitorTest)})},
-messageSends: ["parse:", "current"]}),
-smalltalk.ASTVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parse:forClass:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._analyze_forClass_(self._parse_(aString),aClass);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},smalltalk.ASTVisitorTest)})},
-messageSends: ["analyze:forClass:", "parse:"]}),
-smalltalk.ASTVisitorTest);
-
-
-
-smalltalk.addClass('ASTPCNodeVisitorTest', smalltalk.ASTVisitorTest, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "astPCNodeVisitor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._astPCNodeVisitorForPC_((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitor",{},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["astPCNodeVisitorForPC:"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "astPCNodeVisitorForPC:",
-fn: function (anInteger){
-var self=this;
-function $ASTPCNodeVisitor(){return smalltalk.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
-function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$2=_st($ASTPCNodeVisitor())._new();
-_st($2)._pc_((0));
-$3=_st($AIContext())._new();
-_st($3)._pc_(anInteger);
-$4=_st($3)._yourself();
-_st($2)._context_($4);
-$5=_st($2)._yourself();
-$1=$5;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitorForPC:",{anInteger:anInteger},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["pc:", "new", "context:", "yourself"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testJSStatementNode",
-fn: function (){
-var self=this;
-var ast,visitor;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-ast=self._parse_forClass_("foo <consolee.log(1)>",$Object());
-$1=self._astPCNodeVisitor();
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-self._assert_(_st($2)._isJSStatementNode());
-return self}, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,visitor:visitor},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMessageSend",
-fn: function (){
-var self=this;
-var ast;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-ast=self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$Object());
-$1=self._astPCNodeVisitorForPC_((2));
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-self._assert_equals_(_st($2)._selector(),"yourself");
-return self}, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForPC:", "currentNode"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMessageSendWithInlining",
-fn: function (){
-var self=this;
-var ast;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-ast=self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$Object());
-$1=self._astPCNodeVisitorForPC_((2));
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-self._assert_equals_(_st($2)._selector(),"yourself");
-ast=self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$Object());
-$3=self._astPCNodeVisitorForPC_((3));
-_st($3)._visit_(ast);
-$4=_st($3)._currentNode();
-self._assert_equals_(_st($4)._selector(),"asBoolean");
-return self}, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForPC:", "currentNode"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNoMessageSend",
-fn: function (){
-var self=this;
-var ast;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-ast=self._parse_forClass_("foo ^ self",$Object());
-$1=self._astPCNodeVisitor();
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-self._assert_(_st($2)._isNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPC",
-fn: function (){
-var self=this;
-var ast,visitor;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-ast=self._parse_forClass_("foo <console.log(1)>",$Object());
-$1=self._astPCNodeVisitor();
-_st($1)._visit_(ast);
-$2=_st($1)._currentNode();
-self._assert_(_st($2)._isJSStatementNode());
-return self}, function($ctx1) {$ctx1.fill(self,"testPC",{ast:ast,visitor:visitor},smalltalk.ASTPCNodeVisitorTest)})},
-messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]}),
-smalltalk.ASTPCNodeVisitorTest);
-
-
-
-smalltalk.addClass('AbstractASTInterpreterTest', smalltalk.ASTVisitorTest, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:",
-fn: function (aString){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._interpret_withArguments_(aString,_st($Dictionary())._new());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpret:",{aString:aString},smalltalk.AbstractASTInterpreterTest)})},
-messageSends: ["interpret:withArguments:", "new"]}),
-smalltalk.AbstractASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:receiver:withArguments:",
-fn: function (aString,anObject,aDictionary){
-var self=this;
-var ctx;
-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(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(ctx)._localAt_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$2=self._interpreter();
-_st($2)._context_(ctx);
-_st($2)._interpret_(_st(_st(self._parse_forClass_(aString,_st(anObject)._class()))._nodes())._first());
-$3=_st($2)._result();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpret:receiver:withArguments:",{aString:aString,anObject:anObject,aDictionary:aDictionary,ctx:ctx},smalltalk.AbstractASTInterpreterTest)})},
-messageSends: ["new", "receiver:", "keysAndValuesDo:", "localAt:put:", "context:", "interpreter", "interpret:", "first", "nodes", "parse:forClass:", "class", "result"]}),
-smalltalk.AbstractASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:withArguments:",
-fn: function (aString,aDictionary){
-var self=this;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._interpret_receiver_withArguments_(aString,_st($Object())._new(),aDictionary);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpret:withArguments:",{aString:aString,aDictionary:aDictionary},smalltalk.AbstractASTInterpreterTest)})},
-messageSends: ["interpret:receiver:withArguments:", "new"]}),
-smalltalk.AbstractASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.AbstractASTInterpreterTest)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.AbstractASTInterpreterTest);
-
-
-
-smalltalk.addClass('ASTInterpreterTest', smalltalk.AbstractASTInterpreterTest, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-function $ASTInterpreter(){return smalltalk.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ASTInterpreter())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["new"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBinarySend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo 2+3+4"),(9));
-return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBlockLiteral",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
-self._assert_equals_(self._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
-self._assert_equals_(self._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCascade",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(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)})},
-messageSends: ["assert:equals:", "interpret:", "with:with:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicArray",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicDictionary",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._from_([(1).__minus_gt((1)),(2).__minus_gt((3))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "->"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInlinedJSStatement",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo <return 2+3>"),(5));
-self._assert_equals_(self._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._from_(["anInteger".__minus_gt((3))])),(5));
-return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "interpret:withArguments:", "->"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstVarAccess",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ x",(2).__at((3)),smalltalk.HashedCollection._from_([])),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstVarAssignment",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st($Point())._new(),smalltalk.HashedCollection._from_(["anInteger".__minus_gt((2))])),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new", "->"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonlocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testReceiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ self",(2).__at((3)),smalltalk.HashedCollection._from_([])),(2).__at((3)));
-return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSuper",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ super isBoolean",true,_st($Dictionary())._new()),false);
-return self}, function($ctx1) {$ctx1.fill(self,"testSuper",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTempAssignment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo | a | a := 2. ^ a"),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.ASTInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testThisContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(self._interpret_("foo ^ thisContext"))._outerContext())._isNil());
-self._assert_(_st(_st(self._interpret_("foo ^ [ thisContext ] value"))._outerContext())._notNil());
-self._assert_(self._interpret_("foo ^ [ thisContext ] value outerContext == thisContext"));
-return self}, function($ctx1) {$ctx1.fill(self,"testThisContext",{},smalltalk.ASTInterpreterTest)})},
-messageSends: ["assert:", "isNil", "outerContext", "interpret:", "notNil"]}),
-smalltalk.ASTInterpreterTest);
-
-
-
-smalltalk.addClass('ASTSteppingInterpreterTest', smalltalk.AbstractASTInterpreterTest, ['interpreter'], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-function $ASTSteppingInterpreter(){return smalltalk.ASTSteppingInterpreter||(typeof ASTSteppingInterpreter=="undefined"?nil:ASTSteppingInterpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@interpreter"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@interpreter"]=_st($ASTSteppingInterpreter())._new();
-$1=self["@interpreter"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTSteppingInterpreterTest)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ASTSteppingInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_("foo 1 + 2");
-self._deny_(_st(self._interpreter())._atEnd());
-_st(self._interpreter())._step();
-self._deny_(_st(self._interpreter())._atEnd());
-_st(self._interpreter())._step();
-self._deny_(_st(self._interpreter())._atEnd());
-_st(self._interpreter())._step();
-self._deny_(_st(self._interpreter())._atEnd());
-_st(self._interpreter())._step();
-self._assert_(_st(self._interpreter())._atEnd());
-return self}, function($ctx1) {$ctx1.fill(self,"testAtEnd",{},smalltalk.ASTSteppingInterpreterTest)})},
-messageSends: ["interpret:", "deny:", "atEnd", "interpreter", "step", "assert:"]}),
-smalltalk.ASTSteppingInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMessageSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_("foo 1 + 2");
-_st(self._interpreter())._step();
-_st(self._interpreter())._step();
-_st(self._interpreter())._step();
-self._assert_equals_(_st(_st(self._interpreter())._currentNode())._value(),(1));
-_st(self._interpreter())._step();
-self._assert_equals_(_st(_st(self._interpreter())._currentNode())._value(),(2));
-_st(self._interpreter())._step();
-self._assert_equals_(_st(self._interpreter())._result(),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testMessageSend",{},smalltalk.ASTSteppingInterpreterTest)})},
-messageSends: ["interpret:", "step", "interpreter", "assert:equals:", "value", "currentNode", "result"]}),
-smalltalk.ASTSteppingInterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSimpleStepping",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._interpret_("foo 1");
-_st(self._interpreter())._step();
-self._assert_(_st(_st(self._interpreter())._result())._isNil());
-_st(self._interpreter())._step();
-self._assert_equals_(_st(self._interpreter())._result(),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testSimpleStepping",{},smalltalk.ASTSteppingInterpreterTest)})},
-messageSends: ["interpret:", "step", "interpreter", "assert:", "isNil", "result", "assert:equals:"]}),
-smalltalk.ASTSteppingInterpreterTest);
-
-
-
-smalltalk.addClass('InterpreterTest', smalltalk.AbstractASTInterpreterTest, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:receiver:withArguments:",
-fn: function (aString,anObject,aDictionary){
-var self=this;
-var ctx,interpreter;
-function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$5,$3;
-interpreter=self._interpreter();
-$1=_st($AIContext())._new();
-_st($1)._receiver_(anObject);
-_st($1)._interpreter_(interpreter);
-$2=_st($1)._yourself();
-ctx=$2;
-_st(aDictionary)._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(ctx)._localAt_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$4=interpreter;
-_st($4)._context_(ctx);
-_st($4)._interpret_(_st(self._parse_forClass_(aString,_st(anObject)._class()))._nextChild());
-_st($4)._proceed();
-$5=_st($4)._result();
-$3=$5;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"interpret:receiver:withArguments:",{aString:aString,anObject:anObject,aDictionary:aDictionary,ctx:ctx,interpreter:interpreter},smalltalk.InterpreterTest)})},
-messageSends: ["interpreter", "receiver:", "new", "interpreter:", "yourself", "keysAndValuesDo:", "localAt:put:", "context:", "interpret:", "nextChild", "parse:forClass:", "class", "proceed", "result"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-function $Interpreter(){return smalltalk.Interpreter||(typeof Interpreter=="undefined"?nil:Interpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Interpreter())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.InterpreterTest)})},
-messageSends: ["new"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBinarySend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ 2+3+4"),(9));
-return self}, function($ctx1) {$ctx1.fill(self,"testBinarySend",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBlockEvaluation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ true ifTrue: [ 1 asString, '2' ]"),"12");
-self._assert_equals_(self._interpret_("foo ^ #(1 2 3) collect: [ :each | each + 3 ]"),[(4), (5), (6)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testBlockEvaluation",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBlockLiteral",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]"),(1));
-self._assert_equals_(self._interpret_("foo true ifTrue: [ ^ 1 ] ifFalse: [ 2 ]"),(1));
-self._assert_equals_(self._interpret_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]"),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testBlockLiteral",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCascade",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(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.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "with:with:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicArray",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ {1+1. 2+2}"),[(2), (4)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicArray",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicDictionary",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ #{1->1. 2->3}"),smalltalk.HashedCollection._from_([(1).__minus_gt((1)),(2).__minus_gt((3))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionary",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "->"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGlobalVar",
-fn: function (){
-var self=this;
-function $BlockClosure(){return smalltalk.BlockClosure||(typeof BlockClosure=="undefined"?nil:BlockClosure)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ eval class"),$BlockClosure());
-self._assert_equals_(self._interpret_("foo ^ Math cos: 0"),(1));
-self._assert_equals_(self._interpret_("foo ^ NonExistingVar"),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testGlobalVar",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInlinedJSStatement",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo <return 2+3>"),(5));
-self._assert_equals_(self._interpret_withArguments_("foo: anInteger <return 2 + anInteger>",smalltalk.HashedCollection._from_(["anInteger".__minus_gt((3))])),(5));
-return self}, function($ctx1) {$ctx1.fill(self,"testInlinedJSStatement",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "interpret:withArguments:", "->"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstVarAccess",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ x",(2).__at((3)),smalltalk.HashedCollection._from_([])),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAccess",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstVarAssignment",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo: anInteger x := anInteger. ^ x",_st($Point())._new(),smalltalk.HashedCollection._from_(["anInteger".__minus_gt((2))])),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testInstVarAssignment",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new", "->"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testKeywordSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ Point x: 1 y: 2"),(1).__at((2)));
-return self}, function($ctx1) {$ctx1.fill(self,"testKeywordSend",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "@"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMultipleSequences",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6"),(30));
-return self}, function($ctx1) {$ctx1.fill(self,"testMultipleSequences",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNestedSends",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString"),_st(_st($Point())._x_y_((2).__at((3)),(4)))._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"testNestedSends",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:", "asString", "x:y:", "@"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonlocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo true ifTrue: [ ^ 1 ]. ^2"),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testNonlocalReturn",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testReceiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ self",(2).__at((3)),smalltalk.HashedCollection._from_([])),(2).__at((3)));
-return self}, function($ctx1) {$ctx1.fill(self,"testReceiver",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "@"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSuper",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_receiver_withArguments_("foo ^ super isBoolean",true,_st($Dictionary())._new()),false);
-return self}, function($ctx1) {$ctx1.fill(self,"testSuper",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:receiver:withArguments:", "new"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTempAssignment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo | a | a := 2. ^ a"),(2));
-self._assert_equals_(self._interpret_("foo | a | a := nil. ^ a"),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testTempAssignment",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testThisContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(self._interpret_("foo ^ thisContext"))._outerContext())._isNil());
-self._assert_(_st(_st(self._interpret_("foo ^ [ thisContext ] value"))._outerContext())._notNil());
-self._assert_(self._interpret_("foo ^ [ thisContext ] value outerContext == thisContext"));
-return self}, function($ctx1) {$ctx1.fill(self,"testThisContext",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:", "isNil", "outerContext", "interpret:", "notNil"]}),
-smalltalk.InterpreterTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnarySend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._interpret_("foo ^ 1 asString"),"1");
-return self}, function($ctx1) {$ctx1.fill(self,"testUnarySend",{},smalltalk.InterpreterTest)})},
-messageSends: ["assert:equals:", "interpret:"]}),
-smalltalk.InterpreterTest);
-
-
-
-smalltalk.addClass('CodeGeneratorTest', smalltalk.TestCase, ['receiver'], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeGeneratorClass",
-fn: function (){
-var self=this;
-function $CodeGenerator(){return smalltalk.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$CodeGenerator();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.CodeGeneratorTest)})},
-messageSends: []}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compiler",
-fn: function (){
-var self=this;
-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_(self._codeGeneratorClass());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compiler",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=_st(self._targetClass())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["new", "targetClass"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "should:return:",
-fn: function (aString,anObject){
-var self=this;
-var method,result;
-return smalltalk.withContext(function($ctx1) { 
-method=_st(self._compiler())._install_forClass_category_(aString,self._targetClass(),"tests");
-result=_st(self["@receiver"])._perform_(_st(method)._selector());
-_st(self._targetClass())._removeCompiledMethod_(method);
-self._assert_equals_(anObject,result);
-return self}, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject,method:method,result:result},smalltalk.CodeGeneratorTest)})},
-messageSends: ["install:forClass:category:", "compiler", "targetClass", "perform:", "selector", "removeCompiledMethod:", "assert:equals:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "targetClass",
-fn: function (){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$DoIt();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"targetClass",{},smalltalk.CodeGeneratorTest)})},
-messageSends: []}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.CodeGeneratorTest)})},
-messageSends: []}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAssignment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
-self._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
-self._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBackslashSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("\x5c arg ^ 4",(4));
-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.method({
-selector: "testBlockReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
-self._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
-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)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCascades",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testCascades",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicArrayElementsOrdered",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-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)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicDictionaryElementsOrdered",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'->1.\x0a\x09^ #{ x. (true ifTrue: [ x := 'bar'->2 ]) }\x0a",smalltalk.HashedCollection._from_(["foo".__minus_gt((1)),"bar".__minus_gt((2))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:", "->"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInnerTemporalDependentElementsOrdered",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",["foo".__minus_gt($Array()),"bar".__minus_gt((2))]);
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",["foo".__minus_gt((1)),"bar".__minus_gt((2))]);
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",["foo".__minus_gt((1)),"bar".__minus_gt((2))]);
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",smalltalk.HashedCollection._from_(["foo".__minus_gt((1)),"bar".__minus_gt((2))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:", "->"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testLiterals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1",(1));
-self._should_return_("foo ^ 'hello'","hello");
-self._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
-self._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
-self._should_return_("foo ^ true",true);
-self._should_return_("foo ^ false",false);
-self._should_return_("foo ^ #{1->2. 3->4}",smalltalk.HashedCollection._from_([(1).__minus_gt((2)),(3).__minus_gt((4))]));
-self._should_return_("foo ^ #hello","hello");
-self._should_return_("foo ^ -123.456",(-123.456));
-return self}, function($ctx1) {$ctx1.fill(self,"testLiterals",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:", "->"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1",(1));
-self._should_return_("foo ^ 1 + 1",(2));
-self._should_return_("foo ",self["@receiver"]);
-self._should_return_("foo self asString",self["@receiver"]);
-self._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testLocalReturn",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMessageSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1 asString","1");
-self._should_return_("foo ^ 1 + 1",(2));
-self._should_return_("foo ^ 1 + 2 * 3",(9));
-self._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
-self._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testMessageSends",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMutableLiterals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNestedIfTrue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
-self._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
-self._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
-self._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonLocalReturn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo [ ^ 1 ] value",(1));
-self._should_return_("foo [ ^ 1 + 1 ] value",(2));
-self._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
-self._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
-return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPascalCaseGlobal",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^Object",_st(smalltalk)._at_("Object"));
-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.method({
-selector: "testSendReceiverAndArgumentsOrdered",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
-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)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifFalse",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
-self._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
-self._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
-self._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifFalse",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifFalseIfTrue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
-self._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
-self._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
-self._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
-self._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
-self._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
-self._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifNil",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifNilIfNotNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
-self._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
-self._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
-self._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifNotNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
-self._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
-self._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
-self._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testifNotNil",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifNotNilWithArgument",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3));
-self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil);
-self._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3));
-self._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5));
-self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3));
-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.method({
-selector: "testifTrue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
-self._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
-self._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
-self._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifTrue",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testifTrueIfFalse",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
-self._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
-self._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
-self._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse",{},smalltalk.CodeGeneratorTest)})},
-messageSends: ["should:return:"]}),
-smalltalk.CodeGeneratorTest);
-
-
-
-smalltalk.addClass('InliningCodeGeneratorTest', smalltalk.CodeGeneratorTest, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeGeneratorClass",
-fn: function (){
-var self=this;
-function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$InliningCodeGenerator();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.InliningCodeGeneratorTest)})},
-messageSends: []}),
-smalltalk.InliningCodeGeneratorTest);
-
-
-
-smalltalk.addClass('ScopeVarTest', smalltalk.TestCase, [], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testClassRefVar",
-fn: function (){
-var self=this;
-var node;
-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");
-$2=_st($1)._yourself();
-node=$2;
-_st(_st($SemanticAnalyzer())._new())._visit_(node);
-self._assert_(_st(_st(node)._binding())._isClassRefVar());
-return self}, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},smalltalk.ScopeVarTest)})},
-messageSends: ["value:", "new", "yourself", "visit:", "assert:", "isClassRefVar", "binding"]}),
-smalltalk.ScopeVarTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstanceVar",
-fn: function (){
-var self=this;
-var node,scope;
-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");
-$2=_st($1)._yourself();
-node=$2;
-scope=_st($MethodLexicalScope())._new();
-_st(scope)._addIVar_("bzzz");
-self._assert_(_st(_st(scope)._bindingFor_(node))._isInstanceVar());
-return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
-messageSends: ["value:", "new", "yourself", "addIVar:", "assert:", "isInstanceVar", "bindingFor:"]}),
-smalltalk.ScopeVarTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPseudoVar",
-fn: function (){
-var self=this;
-var node,pseudoVars;
-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"];
-_st(pseudoVars)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st($VariableNode())._new();
-_st($1)._value_(each);
-$2=_st($1)._yourself();
-node=$2;
-node;
-return self._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isPseudoVar());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},smalltalk.ScopeVarTest)})},
-messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"]}),
-smalltalk.ScopeVarTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTempVar",
-fn: function (){
-var self=this;
-var node,scope;
-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");
-$2=_st($1)._yourself();
-node=$2;
-scope=_st($MethodLexicalScope())._new();
-_st(scope)._addTemp_("bzzz");
-self._assert_(_st(_st(scope)._bindingFor_(node))._isTempVar());
-return self}, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},smalltalk.ScopeVarTest)})},
-messageSends: ["value:", "new", "yourself", "addTemp:", "assert:", "isTempVar", "bindingFor:"]}),
-smalltalk.ScopeVarTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnknownVar",
-fn: function (){
-var self=this;
-var node;
-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");
-$2=_st($1)._yourself();
-node=$2;
-self._assert_(_st(_st(_st($MethodLexicalScope())._new())._bindingFor_(node))._isNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},smalltalk.ScopeVarTest)})},
-messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"]}),
-smalltalk.ScopeVarTest);
-
-
-
-smalltalk.addClass('SemanticAnalyzerTest', smalltalk.TestCase, ['analyzer'], 'Compiler-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-self["@analyzer"]=_st($SemanticAnalyzer())._on_($Object());
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["on:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAssignment",
-fn: function (){
-var self=this;
-var src,ast;
-function $InvalidAssignmentError(){return smalltalk.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
-return smalltalk.withContext(function($ctx1) { 
-src="foo self := 1";
-ast=_st(smalltalk)._parse_(src);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$InvalidAssignmentError());
-return self}, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "should:raise:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonLocalReturn",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. ^ a";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-self._deny_(_st(_st(ast)._scope())._hasNonLocalReturn());
-return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonLocalReturn2",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ [ ^ a] ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-self._assert_(_st(_st(ast)._scope())._hasNonLocalReturn());
-return self}, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testScope",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ | b | b := a ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-self._deny_(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()).__eq_eq(_st(ast)._scope()));
-return self}, function($ctx1) {$ctx1.fill(self,"testScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "nodes", "first"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testScope2",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ [ | b | b := a ] ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-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()));
-return self}, function($ctx1) {$ctx1.fill(self,"testScope2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "nodes", "last"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testScopeLevel",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ [ | b | b := a ] ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-self._assert_equals_(_st(_st(ast)._scope())._scopeLevel(),(1));
-self._assert_equals_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._scope())._scopeLevel(),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testScopeLevel",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "assert:equals:", "scopeLevel", "scope", "first", "nodes", "last"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnknownVariables",
-fn: function (){
-var self=this;
-var src,ast;
-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);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$UnknownVariableError());
-return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "should:raise:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnknownVariablesWithScope",
-fn: function (){
-var self=this;
-var src,ast;
-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);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$UnknownVariableError());
-return self}, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "should:raise:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariableShadowing",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariableShadowing2",
-fn: function (){
-var self=this;
-var src,ast;
-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);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$ShadowingVariableError());
-return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "should:raise:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariableShadowing3",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ | b | b := 2 ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariableShadowing4",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariableShadowing5",
-fn: function (){
-var self=this;
-var src,ast;
-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);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@analyzer"])._visit_(ast);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$ShadowingVariableError());
-return self}, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "should:raise:", "visit:"]}),
-smalltalk.SemanticAnalyzerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testVariablesLookup",
-fn: function (){
-var self=this;
-var src,ast;
-return smalltalk.withContext(function($ctx1) { 
-src="foo | a | a + 1. [ | b | b := a ]";
-ast=_st(smalltalk)._parse_(src);
-_st(self["@analyzer"])._visit_(ast);
-self._assert_(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._isTempVar());
-self._assert_(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._first())._receiver())._binding())._scope()).__eq_eq(_st(ast)._scope()));
-self._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._isTempVar());
-self._assert_(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._nodes())._first())._nodes())._first())._left())._binding())._scope()).__eq_eq(_st(_st(_st(_st(_st(ast)._nodes())._first())._nodes())._last())._scope()));
-return self}, function($ctx1) {$ctx1.fill(self,"testVariablesLookup",{src:src,ast:ast},smalltalk.SemanticAnalyzerTest)})},
-messageSends: ["parse:", "visit:", "assert:", "isTempVar", "binding", "receiver", "first", "nodes", "==", "scope", "left", "last"]}),
-smalltalk.SemanticAnalyzerTest);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Compiler-Tests.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Compiler-Tests", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/SUnit"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Compiler-Tests');
+smalltalk.packages["Compiler-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('ASTVisitorTest', smalltalk.TestCase, [], 'Compiler-Tests');
 smalltalk.addMethod(
@@ -2041,4 +2042,4 @@ referencedClasses: []
 smalltalk.SemanticAnalyzerTest);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 86
js/Examples.deploy.js

@@ -1,86 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Examples');
-
-smalltalk.addClass('Counter', smalltalk.Widget, ['count', 'header'], 'Examples');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "decrease",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@count"]=_st(self["@count"]).__minus((1));
-_st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(html)._with_(_st(self["@count"])._asString());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
-messageSends: ["-", "contents:", "with:", "asString"]}),
-smalltalk.Counter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "increase",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@count"]=_st(self["@count"]).__plus((1));
-_st(self["@header"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(html)._with_(_st(self["@count"])._asString());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
-messageSends: ["+", "contents:", "with:", "asString"]}),
-smalltalk.Counter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Counter.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@count"]=(0);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Counter)})},
-messageSends: ["initialize"]}),
-smalltalk.Counter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-$1=_st(html)._h1();
-_st($1)._with_(_st(self["@count"])._asString());
-$2=_st($1)._yourself();
-self["@header"]=$2;
-$3=_st(html)._button();
-_st($3)._with_("++");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._increase();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$5=_st(html)._button();
-_st($5)._with_("--");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._decrease();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
-messageSends: ["with:", "h1", "asString", "yourself", "button", "onClick:", "increase", "decrease"]}),
-smalltalk.Counter);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tryExample",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._new())._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
-messageSends: ["appendToJQuery:", "new", "asJQuery"]}),
-smalltalk.Counter.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Examples.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Examples", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Canvas"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Examples');
+smalltalk.packages["Examples"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Counter', smalltalk.Widget, ['count', 'header'], 'Examples');
 smalltalk.Counter.comment="This is a trivial Widget example mimicking the classic Counter example in Seaside.\x0aIn order to play with it, just evaluate the doit below in a workspace.\x0aThen take a look in the HTML document above the IDE.\x0a\x0a\x09\x09Counter tryExample";
@@ -109,4 +110,4 @@ referencedClasses: []
 }),
 smalltalk.Counter.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 439
js/Helios-Announcements.deploy.js

@@ -1,439 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Announcements');
-
-smalltalk.addClass('HLAboutToChange', smalltalk.Object, ['actionBlock'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "actionBlock",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@actionBlock"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"actionBlock",{},smalltalk.HLAboutToChange)})},
-messageSends: []}),
-smalltalk.HLAboutToChange);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "actionBlock:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@actionBlock"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"actionBlock:",{aBlock:aBlock},smalltalk.HLAboutToChange)})},
-messageSends: []}),
-smalltalk.HLAboutToChange);
-
-
-
-smalltalk.addClass('HLAnnouncement', smalltalk.Object, [], 'Helios-Announcements');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "announcement";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.HLAnnouncement.klass)})},
-messageSends: []}),
-smalltalk.HLAnnouncement.klass);
-
-
-smalltalk.addClass('HLCodeHandled', smalltalk.HLAnnouncement, ['code'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "code",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@code"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"code",{},smalltalk.HLCodeHandled)})},
-messageSends: []}),
-smalltalk.HLCodeHandled);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "code:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@code"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"code:",{aModel:aModel},smalltalk.HLCodeHandled)})},
-messageSends: []}),
-smalltalk.HLCodeHandled);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aCodeModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._code_(aCodeModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aCodeModel:aCodeModel},smalltalk.HLCodeHandled.klass)})},
-messageSends: ["code:", "new", "yourself"]}),
-smalltalk.HLCodeHandled.klass);
-
-
-smalltalk.addClass('HLDoItExecuted', smalltalk.HLCodeHandled, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLDoItRequested', smalltalk.HLCodeHandled, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLInspectItRequested', smalltalk.HLCodeHandled, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLPrintItRequested', smalltalk.HLCodeHandled, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLDebuggerAnnouncement', smalltalk.HLAnnouncement, ['context'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.HLDebuggerAnnouncement)})},
-messageSends: []}),
-smalltalk.HLDebuggerAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.HLDebuggerAnnouncement)})},
-messageSends: []}),
-smalltalk.HLDebuggerAnnouncement);
-
-
-
-smalltalk.addClass('HLDebuggerContextSelected', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.HLDebuggerContextSelected)})},
-messageSends: []}),
-smalltalk.HLDebuggerContextSelected);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.HLDebuggerContextSelected)})},
-messageSends: []}),
-smalltalk.HLDebuggerContextSelected);
-
-
-
-smalltalk.addClass('HLDebuggerStepped', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLDebuggerWhere', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLDiveRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLEditComment', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLErrorRaised', smalltalk.HLAnnouncement, ['error'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "error",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@error"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"error",{},smalltalk.HLErrorRaised)})},
-messageSends: []}),
-smalltalk.HLErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "error:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@error"]=anError;
-return self}, function($ctx1) {$ctx1.fill(self,"error:",{anError:anError},smalltalk.HLErrorRaised)})},
-messageSends: []}),
-smalltalk.HLErrorRaised);
-
-
-
-smalltalk.addClass('HLCompileErrorRaised', smalltalk.HLErrorRaised, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLParseErrorRaised', smalltalk.HLErrorRaised, ['line', 'column', 'message'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "column",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@column"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"column",{},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "column:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@column"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"column:",{anInteger:anInteger},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "line",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@line"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"line",{},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "line:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@line"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"line:",{anInteger:anInteger},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@message"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@message"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"message:",{aString:aString},smalltalk.HLParseErrorRaised)})},
-messageSends: []}),
-smalltalk.HLParseErrorRaised);
-
-
-
-smalltalk.addClass('HLUnknownVariableErrorRaised', smalltalk.HLErrorRaised, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLFocusRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLClassesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLMethodsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLPackagesFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLProtocolsFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLSourceCodeFocusRequested', smalltalk.HLFocusRequested, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLInstVarAdded', smalltalk.HLAnnouncement, ['theClass', 'variableName'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.HLInstVarAdded)})},
-messageSends: []}),
-smalltalk.HLInstVarAdded);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.HLInstVarAdded)})},
-messageSends: []}),
-smalltalk.HLInstVarAdded);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variableName"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableName",{},smalltalk.HLInstVarAdded)})},
-messageSends: []}),
-smalltalk.HLInstVarAdded);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableName:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variableName"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"variableName:",{aString:aString},smalltalk.HLInstVarAdded)})},
-messageSends: []}),
-smalltalk.HLInstVarAdded);
-
-
-
-smalltalk.addClass('HLItemSelected', smalltalk.HLAnnouncement, ['item'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "item",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@item"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"item",{},smalltalk.HLItemSelected)})},
-messageSends: []}),
-smalltalk.HLItemSelected);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "item:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@item"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"item:",{anObject:anObject},smalltalk.HLItemSelected)})},
-messageSends: []}),
-smalltalk.HLItemSelected);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._item_(anItem);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anItem:anItem},smalltalk.HLItemSelected.klass)})},
-messageSends: ["item:", "new", "yourself"]}),
-smalltalk.HLItemSelected.klass);
-
-
-smalltalk.addClass('HLClassSelected', smalltalk.HLItemSelected, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLInstanceVariableSelected', smalltalk.HLItemSelected, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLMethodSelected', smalltalk.HLItemSelected, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLPackageSelected', smalltalk.HLItemSelected, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLProtocolSelected', smalltalk.HLItemSelected, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLSaveSourceCode', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLSearchReferences', smalltalk.HLAnnouncement, ['searchString'], 'Helios-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@searchString"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"searchString",{},smalltalk.HLSearchReferences)})},
-messageSends: []}),
-smalltalk.HLSearchReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@searchString"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"searchString:",{aString:aString},smalltalk.HLSearchReferences)})},
-messageSends: []}),
-smalltalk.HLSearchReferences);
-
-
-
-smalltalk.addClass('HLShowCommentToggled', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLShowInstanceToggled', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-
-smalltalk.addClass('HLSourceCodeSaved', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Announcements.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Announcements", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Announcements');
+smalltalk.packages["Helios-Announcements"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLAboutToChange', smalltalk.Object, ['actionBlock'], 'Helios-Announcements');
 smalltalk.addMethod(
@@ -577,4 +578,4 @@ smalltalk.addClass('HLShowInstanceToggled', smalltalk.HLAnnouncement, [], 'Helio
 
 smalltalk.addClass('HLSourceCodeSaved', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 2990
js/Helios-Browser.deploy.js

@@ -1,2990 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Browser');
-
-smalltalk.addClass('HLBrowser', smalltalk.HLWidget, ['model', 'packagesListWidget', 'classesListWidget', 'protocolsListWidget', 'methodsListWidget', 'sourceWidget', 'bottomDiv'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLBrowser)})},
-messageSends: []}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classesListWidget",
-fn: function (){
-var self=this;
-function $HLClassesListWidget(){return smalltalk.HLClassesListWidget||(typeof HLClassesListWidget=="undefined"?nil:HLClassesListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@classesListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@classesListWidget"]=_st($HLClassesListWidget())._on_(self._model());
-self["@classesListWidget"];
-$1=_st(self["@classesListWidget"])._next_(self._protocolsListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classesListWidget",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "protocolsListWidget"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._environment();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLBrowser)})},
-messageSends: ["environment", "model"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._packagesListWidget())._focus();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLBrowser)})},
-messageSends: ["focus", "packagesListWidget"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsListWidget",
-fn: function (){
-var self=this;
-function $HLMethodsListWidget(){return smalltalk.HLMethodsListWidget||(typeof HLMethodsListWidget=="undefined"?nil:HLMethodsListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@methodsListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@methodsListWidget"]=_st($HLMethodsListWidget())._on_(self._model());
-self["@methodsListWidget"];
-$1=_st(self["@methodsListWidget"])._next_(self._sourceWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsListWidget",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "sourceWidget"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-function $HLBrowserModel(){return smalltalk.HLBrowserModel||(typeof HLBrowserModel=="undefined"?nil:HLBrowserModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@model"]=_st($HLBrowserModel())._new();
-$1=self["@model"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLBrowser)})},
-messageSends: []}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packagesListWidget",
-fn: function (){
-var self=this;
-function $HLPackagesListWidget(){return smalltalk.HLPackagesListWidget||(typeof HLPackagesListWidget=="undefined"?nil:HLPackagesListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@packagesListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@packagesListWidget"]=_st($HLPackagesListWidget())._on_(self._model());
-self["@packagesListWidget"];
-$1=_st(self["@packagesListWidget"])._next_(self._classesListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packagesListWidget",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "classesListWidget"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocolsListWidget",
-fn: function (){
-var self=this;
-function $HLProtocolsListWidget(){return smalltalk.HLProtocolsListWidget||(typeof HLProtocolsListWidget=="undefined"?nil:HLProtocolsListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@protocolsListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@protocolsListWidget"]=_st($HLProtocolsListWidget())._on_(self._model());
-self["@protocolsListWidget"];
-$1=_st(self["@protocolsListWidget"])._next_(self._methodsListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"protocolsListWidget",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "methodsListWidget"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindingsOn:",
-fn: function (aBindingGroup){
-var self=this;
-function $HLToolCommand(){return smalltalk.HLToolCommand||(typeof HLToolCommand=="undefined"?nil:HLToolCommand)}
-return smalltalk.withContext(function($ctx1) { 
-_st($HLToolCommand())._registerConcreteClassesOn_for_(aBindingGroup,self._model());
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindingsOn:",{aBindingGroup:aBindingGroup},smalltalk.HLBrowser)})},
-messageSends: ["registerConcreteClassesOn:for:", "model"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(self._packagesListWidget(),self._classesListWidget()),_st($HLVerticalSplitter())._with_with_(self._protocolsListWidget(),self._methodsListWidget())),self._sourceWidget())));
-_st(self._packagesListWidget())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLBrowser)})},
-messageSends: ["with:", "with:with:", "packagesListWidget", "classesListWidget", "protocolsListWidget", "methodsListWidget", "sourceWidget", "focus"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sourceWidget",
-fn: function (){
-var self=this;
-function $HLBrowserBottomWidget(){return smalltalk.HLBrowserBottomWidget||(typeof HLBrowserBottomWidget=="undefined"?nil:HLBrowserBottomWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@sourceWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLBrowserBottomWidget())._new();
-_st($3)._model_(self._model());
-$4=_st($3)._yourself();
-self["@sourceWidget"]=$4;
-$1=self["@sourceWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sourceWidget",{},smalltalk.HLBrowser)})},
-messageSends: ["ifNil:", "model:", "new", "model", "yourself"]}),
-smalltalk.HLBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLBrowser.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st([self._packagesListWidget(),self._classesListWidget(),self._protocolsListWidget(),self._methodsListWidget(),self._sourceWidget()])._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._unregister();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLBrowser)})},
-messageSends: ["unregister", "do:", "packagesListWidget", "classesListWidget", "protocolsListWidget", "methodsListWidget", "sourceWidget"]}),
-smalltalk.HLBrowser);
-
-
-smalltalk.HLBrowser.klass.iVarNames = ['nextId'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLBrowser.klass)})},
-messageSends: []}),
-smalltalk.HLBrowser.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextId",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@nextId"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@nextId"]=(0);
-self["@nextId"];
-} else {
-$1;
-};
-$2="browser_".__comma(_st(_st(self["@nextId"]).__plus((1)))._asString());
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"nextId",{},smalltalk.HLBrowser.klass)})},
-messageSends: ["ifNil:", ",", "asString", "+"]}),
-smalltalk.HLBrowser.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "browser";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLBrowser.klass)})},
-messageSends: []}),
-smalltalk.HLBrowser.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Browser";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLBrowser.klass)})},
-messageSends: []}),
-smalltalk.HLBrowser.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (0);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLBrowser.klass)})},
-messageSends: []}),
-smalltalk.HLBrowser.klass);
-
-
-smalltalk.addClass('HLBrowserBottomWidget', smalltalk.HLWidget, ['model', 'codeWidget', 'documentationWidget'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: []}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeWidget",
-fn: function (){
-var self=this;
-function $HLBrowserCodeWidget(){return smalltalk.HLBrowserCodeWidget||(typeof HLBrowserCodeWidget=="undefined"?nil:HLBrowserCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLBrowserCodeWidget())._new();
-_st($3)._browserModel_(self._model());
-$4=_st($3)._yourself();
-self["@codeWidget"]=$4;
-$1=self["@codeWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["ifNil:", "browserModel:", "new", "model", "yourself"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "documentationWidget",
-fn: function (){
-var self=this;
-function $HLDocumentationWidget(){return smalltalk.HLDocumentationWidget||(typeof HLDocumentationWidget=="undefined"?nil:HLDocumentationWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@documentationWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLDocumentationWidget())._new();
-_st($3)._model_(self._model());
-$4=_st($3)._yourself();
-self["@documentationWidget"]=$4;
-$1=self["@documentationWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"documentationWidget",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["ifNil:", "model:", "new", "model", "yourself"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._codeWidget())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["focus", "codeWidget"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: []}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-self._observeModel();
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["observeModel"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-function $HLShowCommentToggled(){return smalltalk.HLShowCommentToggled||(typeof HLShowCommentToggled=="undefined"?nil:HLShowCommentToggled)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLShowInstanceToggled(),"onShowInstanceToggled",self);
-$2=_st($1)._on_send_to_($HLShowCommentToggled(),"onShowCommentToggled",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowCommentToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onShowCommentToggled",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowInstanceToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"previous",{},smalltalk.HLBrowserBottomWidget)})},
-messageSends: []}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"previous:",{aWidget:aWidget},smalltalk.HLBrowserBottomWidget)})},
-messageSends: []}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._showComment();
-if(smalltalk.assert($1)){
-self._renderPanesOn_(html);
-} else {
-_st(html)._with_(self._codeWidget());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["ifTrue:ifFalse:", "showComment", "model", "renderPanesOn:", "with:", "codeWidget"]}),
-smalltalk.HLBrowserBottomWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderPanesOn:",
-fn: function (html){
-var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLVerticalSplitter())._with_with_(self._codeWidget(),self._documentationWidget()));
-return self}, function($ctx1) {$ctx1.fill(self,"renderPanesOn:",{html:html},smalltalk.HLBrowserBottomWidget)})},
-messageSends: ["with:", "with:with:", "codeWidget", "documentationWidget"]}),
-smalltalk.HLBrowserBottomWidget);
-
-
-
-smalltalk.addClass('HLBrowserModel', smalltalk.HLToolModel, ['showInstance', 'showComment'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editComment",
-fn: function (){
-var self=this;
-function $HLEditComment(){return smalltalk.HLEditComment||(typeof HLEditComment=="undefined"?nil:HLEditComment)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLEditComment())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"editComment",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusOnClasses",
-fn: function (){
-var self=this;
-function $HLClassesFocusRequested(){return smalltalk.HLClassesFocusRequested||(typeof HLClassesFocusRequested=="undefined"?nil:HLClassesFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLClassesFocusRequested())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusOnClasses",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusOnMethods",
-fn: function (){
-var self=this;
-function $HLMethodsFocusRequested(){return smalltalk.HLMethodsFocusRequested||(typeof HLMethodsFocusRequested=="undefined"?nil:HLMethodsFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLMethodsFocusRequested())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusOnMethods",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusOnPackages",
-fn: function (){
-var self=this;
-function $HLPackagesFocusRequested(){return smalltalk.HLPackagesFocusRequested||(typeof HLPackagesFocusRequested=="undefined"?nil:HLPackagesFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLPackagesFocusRequested())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusOnPackages",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusOnProtocols",
-fn: function (){
-var self=this;
-function $HLProtocolsFocusRequested(){return smalltalk.HLProtocolsFocusRequested||(typeof HLProtocolsFocusRequested=="undefined"?nil:HLProtocolsFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLProtocolsFocusRequested())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusOnProtocols",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusOnSourceCode",
-fn: function (){
-var self=this;
-function $HLSourceCodeFocusRequested(){return smalltalk.HLSourceCodeFocusRequested||(typeof HLSourceCodeFocusRequested=="undefined"?nil:HLSourceCodeFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLSourceCodeFocusRequested())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusOnSourceCode",{},smalltalk.HLBrowserModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBrowserModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBrowserModel",{},smalltalk.HLBrowserModel)})},
-messageSends: []}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setClassComment:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._setClassCommentOf_to_(_st(self._selectedClass())._theNonMetaClass(),aString);
-return self}, function($ctx1) {$ctx1.fill(self,"setClassComment:",{aString:aString},smalltalk.HLBrowserModel)})},
-messageSends: ["setClassCommentOf:to:", "environment", "theNonMetaClass", "selectedClass"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showComment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@showComment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"showComment",{},smalltalk.HLBrowserModel)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showComment:",
-fn: function (aBoolean){
-var self=this;
-function $HLShowCommentToggled(){return smalltalk.HLShowCommentToggled||(typeof HLShowCommentToggled=="undefined"?nil:HLShowCommentToggled)}
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@showComment"]=aBoolean;
-self["@showComment"];
-return _st(self._announcer())._announce_(_st($HLShowCommentToggled())._new());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"showComment:",{aBoolean:aBoolean},smalltalk.HLBrowserModel)})},
-messageSends: ["withChangesDo:", "announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showInstance",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@showInstance"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=true;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"showInstance",{},smalltalk.HLBrowserModel)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBrowserModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showInstance:",
-fn: function (aBoolean){
-var self=this;
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@showInstance"]=aBoolean;
-self["@showInstance"];
-$1=self._selectedClass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=self;
-$4=aBoolean;
-if(smalltalk.assert($4)){
-$3=_st(self._selectedClass())._theNonMetaClass();
-} else {
-$3=_st(self._selectedClass())._theMetaClass();
-};
-_st($2)._selectedClass_($3);
-};
-return _st(self._announcer())._announce_(_st($HLShowInstanceToggled())._new());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"showInstance:",{aBoolean:aBoolean},smalltalk.HLBrowserModel)})},
-messageSends: ["withChangesDo:", "ifNotNil:", "selectedClass", "selectedClass:", "ifTrue:ifFalse:", "theNonMetaClass", "theMetaClass", "announce:", "announcer", "new"]}),
-smalltalk.HLBrowserModel);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._environment_(anEnvironment);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anEnvironment:anEnvironment},smalltalk.HLBrowserModel.klass)})},
-messageSends: ["environment:", "new", "yourself"]}),
-smalltalk.HLBrowserModel.klass);
-
-
-smalltalk.addClass('HLClassCache', smalltalk.Object, ['class', 'selectorsCache', 'overrideCache', 'overriddenCache'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "invalidateChildrenSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(_st(self._theClass())._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self._selectorsCache())._cacheFor_(each);
-_st($1)._removeSelector_(aSelector);
-$2=_st($1)._invalidateChildrenSelector_(aSelector);
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"invalidateChildrenSelector:",{aSelector:aSelector},smalltalk.HLClassCache)})},
-messageSends: ["do:", "subclasses", "theClass", "removeSelector:", "cacheFor:", "selectorsCache", "invalidateChildrenSelector:"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "invalidateParentSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._theClass())._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=_st(self._selectorsCache())._cacheFor_(_st(self._theClass())._superclass());
-_st($2)._removeSelector_(aSelector);
-$3=_st($2)._invalidateParentSelector_(aSelector);
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"invalidateParentSelector:",{aSelector:aSelector},smalltalk.HLClassCache)})},
-messageSends: ["ifNotNil:", "superclass", "theClass", "removeSelector:", "cacheFor:", "selectorsCache", "invalidateParentSelector:"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "invalidateSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._invalidateParentSelector_(aSelector);
-_st($1)._invalidateChildrenSelector_(aSelector);
-$2=_st($1)._removeSelector_(aSelector);
-return self}, function($ctx1) {$ctx1.fill(self,"invalidateSelector:",{aSelector:aSelector},smalltalk.HLClassCache)})},
-messageSends: ["invalidateParentSelector:", "invalidateChildrenSelector:", "removeSelector:"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._overriddenCache())._at_ifAbsentPut_(_st(aMethod)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aMethod)._isOverridden();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverridden:",{aMethod:aMethod},smalltalk.HLClassCache)})},
-messageSends: ["at:ifAbsentPut:", "overriddenCache", "selector", "isOverridden"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._overrideCache())._at_ifAbsentPut_(_st(aMethod)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aMethod)._isOverride();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverride:",{aMethod:aMethod},smalltalk.HLClassCache)})},
-messageSends: ["at:ifAbsentPut:", "overrideCache", "selector", "isOverride"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "overriddenCache",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@overriddenCache"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@overriddenCache"]=_st($HashedCollection())._new();
-$1=self["@overriddenCache"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overriddenCache",{},smalltalk.HLClassCache)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "overrideCache",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@overrideCache"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@overrideCache"]=_st($HashedCollection())._new();
-$1=self["@overrideCache"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overrideCache",{},smalltalk.HLClassCache)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._overriddenCache())._removeKey_ifAbsent_(aSelector,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(self._overrideCache())._removeKey_ifAbsent_(aSelector,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeSelector:",{aSelector:aSelector},smalltalk.HLClassCache)})},
-messageSends: ["removeKey:ifAbsent:", "overriddenCache", "overrideCache"]}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorsCache",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectorsCache"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorsCache",{},smalltalk.HLClassCache)})},
-messageSends: []}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorsCache:",
-fn: function (aCache){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectorsCache"]=aCache;
-return self}, function($ctx1) {$ctx1.fill(self,"selectorsCache:",{aCache:aCache},smalltalk.HLClassCache)})},
-messageSends: []}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@class"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.HLClassCache)})},
-messageSends: []}),
-smalltalk.HLClassCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@class"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.HLClassCache)})},
-messageSends: []}),
-smalltalk.HLClassCache);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:selectorsCache:",
-fn: function (aClass,aSelectorsCache){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._theClass_(aClass);
-_st($2)._selectorsCache_(aSelectorsCache);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:selectorsCache:",{aClass:aClass,aSelectorsCache:aSelectorsCache},smalltalk.HLClassCache.klass)})},
-messageSends: ["theClass:", "new", "selectorsCache:", "yourself"]}),
-smalltalk.HLClassCache.klass);
-
-
-smalltalk.addClass('HLClassesListWidget', smalltalk.HLToolListWidget, [], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClassForItem:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(_st(aClass)._theNonMetaClass())._comment())._isEmpty();
-if(smalltalk.assert($1)){
-return "uncommented";
-};
-$2=_st(_st(aClass)._theNonMetaClass())._heliosClass();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"cssClassForItem:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["ifTrue:", "isEmpty", "comment", "theNonMetaClass", "heliosClass"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusMethodsListWidget",
-fn: function (){
-var self=this;
-function $HLMethodsListFocus(){return smalltalk.HLMethodsListFocus||(typeof HLMethodsListFocus=="undefined"?nil:HLMethodsListFocus)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._announce_(_st($HLMethodsListFocus())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusMethodsListWidget",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["announce:", "announcer", "model", "new"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusProtocolsListWidget",
-fn: function (){
-var self=this;
-function $HLProtocolsListFocus(){return smalltalk.HLProtocolsListFocus||(typeof HLProtocolsListFocus=="undefined"?nil:HLProtocolsListFocus)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._announce_(_st($HLProtocolsListFocus())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusProtocolsListWidget",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["announce:", "announcer", "model", "new"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "getChildrenOf:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._items())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._superclass()).__eq(aClass);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"getChildrenOf:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["select:", "items", "=", "superclass"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "getRootClassesOf:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aCollection)._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(aCollection)._includes_(_st(each)._superclass()))._not();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"getRootClassesOf:",{aCollection:aCollection},smalltalk.HLClassesListWidget)})},
-messageSends: ["select:", "not", "includes:", "superclass"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLClassesListWidget)})},
-messageSends: []}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLPackageSelected(){return smalltalk.HLPackageSelected||(typeof HLPackageSelected=="undefined"?nil:HLPackageSelected)}
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-function $HLShowCommentToggled(){return smalltalk.HLShowCommentToggled||(typeof HLShowCommentToggled=="undefined"?nil:HLShowCommentToggled)}
-function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
-function $HLClassesFocusRequested(){return smalltalk.HLClassesFocusRequested||(typeof HLClassesFocusRequested=="undefined"?nil:HLClassesFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLPackageSelected(),"onPackageSelected:",self);
-_st($1)._on_send_to_($HLShowInstanceToggled(),"onShowInstanceToggled",self);
-_st($1)._on_send_to_($HLShowCommentToggled(),"onShowCommentToggled",self);
-_st($1)._on_send_to_($HLClassSelected(),"onClassSelected:",self);
-$2=_st($1)._on_send_to_($HLClassesFocusRequested(),"onClassesFocusRequested",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
-function $ClassRemoved(){return smalltalk.ClassRemoved||(typeof ClassRemoved=="undefined"?nil:ClassRemoved)}
-function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
-function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
-function $ClassMigrated(){return smalltalk.ClassMigrated||(typeof ClassMigrated=="undefined"?nil:ClassMigrated)}
-function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._systemAnnouncer();
-_st($1)._on_send_to_($ClassAdded(),"onClassAdded:",self);
-_st($1)._on_send_to_($ClassRemoved(),"onClassRemoved:",self);
-_st($1)._on_send_to_($ClassMoved(),"onClassMoved:",self);
-_st($1)._on_send_to_($ClassRenamed(),"onClassRenamed:",self);
-_st($1)._on_send_to_($ClassMigrated(),"onClassMigrated:",self);
-$2=_st($1)._on_send_to_($ClassCommentChanged(),"onClassCommentChanged:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassAdded:",
-fn: function (anAnnouncement){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-class_=_st(anAnnouncement)._theClass();
-$1=_st(_st(_st(class_)._package()).__eq(_st(self._model())._selectedPackage()))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._items())._includes_(class_);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassAdded:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLClassesListWidget)})},
-messageSends: ["theClass", "ifFalse:", "or:", "=", "package", "selectedPackage", "model", "includes:", "items", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassCommentChanged:",
-fn: function (anAnnouncement){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-class_=_st(anAnnouncement)._theClass();
-$1=_st(_st(class_)._package()).__eq(_st(self._model())._selectedPackage());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassCommentChanged:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLClassesListWidget)})},
-messageSends: ["theClass", "ifFalse:", "=", "package", "selectedPackage", "model", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassMigrated:",
-fn: function (anAnnouncement){
-var self=this;
-var class_,oldClass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-class_=_st(anAnnouncement)._theClass();
-oldClass=_st(anAnnouncement)._oldClass();
-$1=_st(self._items())._includes_(oldClass);
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(_st(self._model())._selectedClass()).__eq(oldClass);
-if(smalltalk.assert($3)){
-_st(self._model())._selectedClass_(class_);
-};
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassMigrated:",{anAnnouncement:anAnnouncement,class_:class_,oldClass:oldClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["theClass", "oldClass", "ifFalse:", "includes:", "items", "ifTrue:", "=", "selectedClass", "model", "selectedClass:", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassMoved:",
-fn: function (anAnnouncement){
-var self=this;
-var class_,oldPackage;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-class_=_st(anAnnouncement)._theClass();
-oldPackage=_st(anAnnouncement)._oldPackage();
-$1=_st(_st(oldPackage).__eq(_st(self._model())._selectedPackage()))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(class_)._package()).__eq(_st(self._model())._selectedPackage());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(oldPackage).__eq(_st(self._model())._selectedPackage());
-if(smalltalk.assert($3)){
-$4=self;
-_st($4)._selectedItem_(nil);
-$5=_st($4)._selectItem_(nil);
-$5;
-};
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassMoved:",{anAnnouncement:anAnnouncement,class_:class_,oldPackage:oldPackage},smalltalk.HLClassesListWidget)})},
-messageSends: ["theClass", "oldPackage", "ifFalse:", "or:", "=", "selectedPackage", "model", "package", "ifTrue:", "selectedItem:", "selectItem:", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassRemoved:",
-fn: function (anAnnouncement){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-class_=_st(anAnnouncement)._theClass();
-$1=_st(_st(class_)._package()).__eq(_st(self._model())._selectedPackage());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassRemoved:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLClassesListWidget)})},
-messageSends: ["theClass", "ifFalse:", "=", "package", "selectedPackage", "model", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassRenamed:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(_st(anAnnouncement)._theClass())._package()).__eq(_st(self._model())._selectedPackage());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassRenamed:",{anAnnouncement:anAnnouncement},smalltalk.HLClassesListWidget)})},
-messageSends: ["ifFalse:", "=", "package", "theClass", "selectedPackage", "model", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var selectedClass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(anAnnouncement)._item();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-selectedClass=_st(_st(anAnnouncement)._item())._theNonMetaClass();
-self._selectedItem_(selectedClass);
-$3=self._hasFocus();
-if(! smalltalk.assert($3)){
-$4=self;
-_st($4)._activateItem_(selectedClass);
-$5=_st($4)._focus();
-$5;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{anAnnouncement:anAnnouncement,selectedClass:selectedClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["ifNil:", "item", "theNonMetaClass", "selectedItem:", "ifFalse:", "hasFocus", "activateItem:", "focus"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassesFocusRequested",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassesFocusRequested",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onPackageSelected:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectedItem_(nil);
-self._setItemsForSelectedPackage();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onPackageSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLClassesListWidget)})},
-messageSends: ["selectedItem:", "setItemsForSelectedPackage", "refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowCommentToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onShowCommentToggled",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowInstanceToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-var checkbox;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$7,$8,$2,$9,$11,$12,$10,$13;
-$1=_st(html)._div();
-_st($1)._class_("btn-group");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._button();
-_st($3)._class_(_st($String())._streamContents_((function(str){
-return smalltalk.withContext(function($ctx3) {
-_st(str)._nextPutAll_("btn");
-$4=self._showInstance();
-if(smalltalk.assert($4)){
-return _st(str)._nextPutAll_(" active");
-};
-}, function($ctx3) {$ctx3.fillBlock({str:str},$ctx2,2)})})));
-_st($3)._with_("Instance");
-$5=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._showInstance_(true);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-$5;
-$6=_st(html)._button();
-_st($6)._class_(_st($String())._streamContents_((function(str){
-return smalltalk.withContext(function($ctx3) {
-_st(str)._nextPutAll_("btn");
-$7=self._showClass();
-if(smalltalk.assert($7)){
-return _st(str)._nextPutAll_(" active");
-};
-}, function($ctx3) {$ctx3.fillBlock({str:str},$ctx2,5)})})));
-_st($6)._with_("Class");
-$8=_st($6)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._showInstance_(false);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)})}));
-return $8;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$9=_st(html)._label();
-_st($9)._class_("checkbox");
-$10=_st($9)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$11=_st(html)._input();
-_st($11)._type_("checkbox");
-$12=_st($11)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._toggleShowComment();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,9)})}));
-checkbox=$12;
-checkbox;
-return _st(html)._with_("Doc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)})}));
-$13=self._showComment();
-if(smalltalk.assert($13)){
-_st(checkbox)._at_put_("checked","checked");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html,checkbox:checkbox},smalltalk.HLClassesListWidget)})},
-messageSends: ["class:", "div", "with:", "button", "streamContents:", "nextPutAll:", "ifTrue:", "showInstance", "onClick:", "showInstance:", "showClass", "label", "type:", "input", "toggleShowComment", "showComment", "at:put:"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItem:level:on:",
-fn: function (aClass,anInteger,html){
-var self=this;
-var li;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-li=_st(html)._li();
-self._registerMappingFrom_to_(aClass,li);
-$1=li;
-_st($1)._at_put_("list-data",_st(self._items())._indexOf_(aClass));
-_st($1)._class_(self._listCssClassForItem_(aClass));
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._a();
-_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._tag_("i"))._class_(self._cssClassForItem_(aClass));
-return self._renderItemLabel_level_on_(aClass,anInteger,html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._activateListItem_(_st(li)._asJQuery());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(self._getChildrenOf_(aClass))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderItem_level_on_(each,_st(anInteger).__plus((1)),html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItem:level:on:",{aClass:aClass,anInteger:anInteger,html:html,li:li},smalltalk.HLClassesListWidget)})},
-messageSends: ["li", "registerMappingFrom:to:", "at:put:", "indexOf:", "items", "class:", "listCssClassForItem:", "with:", "a", "tag:", "cssClassForItem:", "renderItemLabel:level:on:", "onClick:", "activateListItem:", "asJQuery", "do:", "getChildrenOf:", "renderItem:level:on:", "+"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItem:on:",
-fn: function (aClass,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLClassesListWidget.superclass.fn.prototype._renderItem_on_.apply(_st(self), [aClass,html]);
-_st(self._getChildrenOf_(aClass))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderItem_level_on_(each,(1),html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItem:on:",{aClass:aClass,html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["renderItem:on:", "do:", "getChildrenOf:", "renderItem:level:on:"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:level:on:",
-fn: function (aClass,anInteger,html){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(html)._span())._asJQuery())._html_(_st($String())._streamContents_((function(str){
-return smalltalk.withContext(function($ctx2) {
-_st(anInteger)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_("&nbsp;&nbsp;&nbsp;&nbsp;");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return _st(str)._nextPutAll_(_st(aClass)._name());
-}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:level:on:",{aClass:aClass,anInteger:anInteger,html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["html:", "asJQuery", "span", "streamContents:", "timesRepeat:", "nextPutAll:", "name"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (aClass,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._renderItemLabel_level_on_(aClass,(0),html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aClass:aClass,html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["renderItemLabel:level:on:"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderListOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._getRootClassesOf_(self._items()))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderItem_on_(each,html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderListOn:",{html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["do:", "getRootClassesOf:", "items", "renderItem:on:"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._selectedClass_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["selectedClass:", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForPackage:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2;
-$1=self;
-$3=aPackage;
-if(($receiver = $3) == nil || $receiver == undefined){
-$2=[];
-} else {
-$2=_st(_st(_st(_st(_st(aPackage)._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._theNonMetaClass();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})})))._asSet())._asArray())._sort_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._name()).__lt(_st(b)._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,4)})}));
-};
-_st($1)._items_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForPackage:",{aPackage:aPackage},smalltalk.HLClassesListWidget)})},
-messageSends: ["items:", "ifNil:ifNotNil:", "sort:", "asArray", "asSet", "collect:", "classes", "theNonMetaClass", "<", "name"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForSelectedPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._setItemsForPackage_(_st(self._model())._selectedPackage());
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForSelectedPackage",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["setItemsForPackage:", "selectedPackage", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._showInstance())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"showClass",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["not", "showInstance", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showComment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._showComment();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"showComment",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["showComment", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showComment:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showComment_(aBoolean);
-return self}, function($ctx1) {$ctx1.fill(self,"showComment:",{aBoolean:aBoolean},smalltalk.HLClassesListWidget)})},
-messageSends: ["showComment:", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showInstance",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._showInstance();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"showInstance",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["showInstance", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showInstance:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showInstance_(aBoolean);
-return self}, function($ctx1) {$ctx1.fill(self,"showInstance:",{aBoolean:aBoolean},smalltalk.HLClassesListWidget)})},
-messageSends: ["showInstance:", "model"]}),
-smalltalk.HLClassesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "toggleShowComment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showComment_(_st(self._showComment())._not());
-return self}, function($ctx1) {$ctx1.fill(self,"toggleShowComment",{},smalltalk.HLClassesListWidget)})},
-messageSends: ["showComment:", "model", "not", "showComment"]}),
-smalltalk.HLClassesListWidget);
-
-
-
-smalltalk.addClass('HLDocumentationWidget', smalltalk.HLFocusableWidget, ['model'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultDocumentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "No documentation available. \x0a**That's bad. Seriously.**";
-}, function($ctx1) {$ctx1.fill(self,"defaultDocumentation",{},smalltalk.HLDocumentationWidget)})},
-messageSends: []}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultHead",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "No class selected";
-}, function($ctx1) {$ctx1.fill(self,"defaultHead",{},smalltalk.HLDocumentationWidget)})},
-messageSends: []}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "documentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._selectedItem();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-var item;
-item=$receiver;
-$1=_st(_st(item)._comment())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._defaultDocumentation();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"documentation",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifNil:ifNotNil:", "selectedItem", "ifEmpty:", "comment", "defaultDocumentation"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editDocumentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._editComment();
-return self}, function($ctx1) {$ctx1.fill(self,"editDocumentation",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["editComment", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "head",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._selectedItem();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._defaultHead();
-} else {
-var item;
-item=$receiver;
-$1=_st(item)._name();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"head",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifNil:ifNotNil:", "selectedItem", "defaultHead", "name"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLDocumentationWidget)})},
-messageSends: []}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@model"]=aModel;
-$1=self;
-_st($1)._observeSystem();
-$2=_st($1)._observeModel();
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLDocumentationWidget)})},
-messageSends: ["observeSystem", "observeModel"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
-function $HLEditComment(){return smalltalk.HLEditComment||(typeof HLEditComment=="undefined"?nil:HLEditComment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLClassSelected(),"onClassSelected:",self);
-$2=_st($1)._on_send_to_($HLEditComment(),"onEditDocumentation",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._systemAnnouncer())._on_send_to_($ClassCommentChanged(),"onClassCommentChanged:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassCommentChanged:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(anAnnouncement)._theClass()).__eq(_st(_st(self._model())._selectedClass())._theNonMetaClass());
-if(smalltalk.assert($1)){
-self._refresh();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onClassCommentChanged:",{anAnnouncement:anAnnouncement},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifTrue:", "=", "theClass", "theNonMetaClass", "selectedClass", "model", "refresh"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassSelected:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLDocumentationWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onEditDocumentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._request_value_do_(_st(_st(_st(_st(self._model())._selectedClass())._theNonMetaClass())._name()).__comma(" comment"),_st(_st(_st(self._model())._selectedClass())._theNonMetaClass())._comment(),(function(comment){
-return smalltalk.withContext(function($ctx2) {
-return self._setClassComment_(comment);
-}, function($ctx2) {$ctx2.fillBlock({comment:comment},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"onEditDocumentation",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["request:value:do:", ",", "name", "theNonMetaClass", "selectedClass", "model", "comment", "setClassComment:"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-$1=_st(html)._div();
-_st($1)._class_("doc");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=self;
-_st($3)._renderHeadOn_(html);
-$4=_st($3)._renderDocOn_(html);
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLDocumentationWidget)})},
-messageSends: ["class:", "div", "with:", "renderHeadOn:", "renderDocOn:"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderDocOn:",
-fn: function (html){
-var self=this;
-function $Showdown(){return smalltalk.Showdown||(typeof Showdown=="undefined"?nil:Showdown)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$5,$3,$6,$7;
-$1=self._selectedItem();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._renderInheritanceOn_(html);
-$2=_st(html)._h1();
-_st($2)._with_("Overview");
-$3=_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$4=_st(html)._button();
-_st($4)._class_("button default");
-_st($4)._with_("Edit");
-$5=_st($4)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._editDocumentation();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return $5;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3;
-$6=_st(html)._div();
-_st($6)._class_("markdown");
-$7=_st($6)._asJQuery();
-_st($7)._html_(_st(_st(_st($Showdown())._at_("converter"))._new())._makeHtml_(self._documentation()));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderDocOn:",{html:html},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifNotNil:", "selectedItem", "renderInheritanceOn:", "with:", "h1", "class:", "button", "onClick:", "editDocumentation", "html:", "div", "asJQuery", "makeHtml:", "new", "at:", "documentation"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderHeadOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("head");
-$2=_st($1)._with_(self._head());
-return self}, function($ctx1) {$ctx1.fill(self,"renderHeadOn:",{html:html},smalltalk.HLDocumentationWidget)})},
-messageSends: ["class:", "div", "with:", "head"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderInheritanceOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$2;
-$1=_st(html)._div();
-_st($1)._class_("inheritance");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(html)._with_("Subclass of ");
-$3=_st(self._selectedItem())._superclass();
-if(($receiver = $3) == nil || $receiver == undefined){
-return _st(_st(html)._em())._with_("nil");
-} else {
-$4=_st(html)._a();
-_st($4)._with_(_st(_st(self._selectedItem())._superclass())._name());
-$5=_st($4)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectClass_(_st(self._selectedItem())._superclass());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-return $5;
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderInheritanceOn:",{html:html},smalltalk.HLDocumentationWidget)})},
-messageSends: ["class:", "div", "with:", "ifNil:ifNotNil:", "superclass", "selectedItem", "em", "a", "name", "onClick:", "selectClass:"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._selectedClass_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"selectClass:",{aClass:aClass},smalltalk.HLDocumentationWidget)})},
-messageSends: ["selectedClass:", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self._model())._selectedClass();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-var class_;
-class_=$receiver;
-$1=_st(class_)._theNonMetaClass();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedItem",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifNotNil:", "selectedClass", "model", "theNonMetaClass"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setClassComment:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._setClassComment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"setClassComment:",{aString:aString},smalltalk.HLDocumentationWidget)})},
-messageSends: ["setClassComment:", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLDocumentationWidget.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st(_st(self._model())._announcer())._unregister_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["unregister", "unregister:", "announcer", "model"]}),
-smalltalk.HLDocumentationWidget);
-
-
-
-smalltalk.addClass('HLMethodsListWidget', smalltalk.HLToolListWidget, ['selectorsCache'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._allProtocol();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allProtocol",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["allProtocol", "model"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClassForItem:",
-fn: function (aSelector){
-var self=this;
-var override,overriden,method;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-method=self._methodForSelector_(aSelector);
-override=self._isOverride_(method);
-overriden=self._isOverridden_(method);
-$2=override;
-if(smalltalk.assert($2)){
-$3=overriden;
-if(smalltalk.assert($3)){
-$1="override-overridden";
-} else {
-$1="override";
-};
-} else {
-$4=overriden;
-if(smalltalk.assert($4)){
-$1="overridden";
-} else {
-$1="";
-};
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cssClassForItem:",{aSelector:aSelector,override:override,overriden:overriden,method:method},smalltalk.HLMethodsListWidget)})},
-messageSends: ["methodForSelector:", "isOverride:", "isOverridden:", "ifTrue:ifFalse:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selectorsCache())._isOverridden_(aMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverridden:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
-messageSends: ["isOverridden:", "selectorsCache"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selectorsCache())._isOverride_(aMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverride:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
-messageSends: ["isOverride:", "selectorsCache"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Methods";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMethodsListWidget)})},
-messageSends: []}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodForSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._model())._selectedClass())._methodDictionary())._at_(aSelector);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodForSelector:",{aSelector:aSelector},smalltalk.HLMethodsListWidget)})},
-messageSends: ["at:", "methodDictionary", "selectedClass", "model"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsInProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-$1=_st(self._model())._selectedClass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=[];
-return $2;
-} else {
-$1;
-};
-$4=_st(aString).__eq(self._allProtocol());
-if(smalltalk.assert($4)){
-$3=_st(_st(self._model())._selectedClass())._methods();
-} else {
-$3=_st(_st(self._model())._selectedClass())._methodsInProtocol_(aString);
-};
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifNil:", "selectedClass", "model", "ifTrue:ifFalse:", "=", "allProtocol", "methods", "methodsInProtocol:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLProtocolSelected(){return smalltalk.HLProtocolSelected||(typeof HLProtocolSelected=="undefined"?nil:HLProtocolSelected)}
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-function $HLMethodSelected(){return smalltalk.HLMethodSelected||(typeof HLMethodSelected=="undefined"?nil:HLMethodSelected)}
-function $HLMethodsFocusRequested(){return smalltalk.HLMethodsFocusRequested||(typeof HLMethodsFocusRequested=="undefined"?nil:HLMethodsFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLProtocolSelected(),"onProtocolSelected:",self);
-_st($1)._on_send_to_($HLShowInstanceToggled(),"onShowInstanceToggled",self);
-_st($1)._on_send_to_($HLMethodSelected(),"onMethodSelected:",self);
-$2=_st($1)._on_send_to_($HLMethodsFocusRequested(),"onMethodsFocusRequested",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $ProtocolAdded(){return smalltalk.ProtocolAdded||(typeof ProtocolAdded=="undefined"?nil:ProtocolAdded)}
-function $ProtocolRemoved(){return smalltalk.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
-function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
-function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
-function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._systemAnnouncer();
-_st($1)._on_send_to_($ProtocolAdded(),"onProtocolAdded:",self);
-_st($1)._on_send_to_($ProtocolRemoved(),"onProtocolRemoved:",self);
-_st($1)._on_send_to_($MethodAdded(),"onMethodAdded:",self);
-_st($1)._on_send_to_($MethodRemoved(),"onMethodRemoved:",self);
-$2=_st($1)._on_send_to_($MethodMoved(),"onMethodMoved:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "model"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodAdded:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(self._model())._selectedClass()).__eq(_st(_st(anAnnouncement)._method())._methodClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedProtocol();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodAdded:",{anAnnouncement:anAnnouncement},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:", "=", "selectedClass", "model", "methodClass", "method", "setItemsForSelectedProtocol", "refresh"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodMoved:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(_st(self._model())._selectedMethod()).__eq(_st(anAnnouncement)._method());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(_st(self._model())._selectedProtocol()).__eq(_st(self._model())._allProtocol());
-if(! smalltalk.assert($3)){
-$4=self;
-_st($4)._selectedItem_(nil);
-_st($4)._selectItem_(nil);
-_st($4)._setItemsForSelectedProtocol();
-$5=_st($4)._refresh();
-$5;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodMoved:",{anAnnouncement:anAnnouncement},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:", "=", "selectedMethod", "model", "method", "selectedProtocol", "allProtocol", "selectedItem:", "selectItem:", "setItemsForSelectedProtocol", "refresh"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodRemoved:",
-fn: function (anAnnouncement){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-var $early={};
-try {
-method=_st(anAnnouncement)._method();
-_st(self._items())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(method)._selector());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$2=self._selectedItem();
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-$3=_st(_st(_st(method)._methodClass()).__eq(_st(self._model())._selectedClass()))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(method)._selector()).__eq(self._selectedItem());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-if(smalltalk.assert($3)){
-$4=self;
-_st($4)._selectedItem_(nil);
-$5=_st($4)._selectItem_(nil);
-$5;
-};
-};
-self._setItemsForSelectedProtocol();
-self._refresh();
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"onMethodRemoved:",{anAnnouncement:anAnnouncement,method:method},smalltalk.HLMethodsListWidget)})},
-messageSends: ["method", "detect:ifNone:", "items", "=", "selector", "ifNotNil:", "selectedItem", "ifTrue:", "and:", "methodClass", "selectedClass", "model", "selectedItem:", "selectItem:", "setItemsForSelectedProtocol", "refresh"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var selector,method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-method=_st(anAnnouncement)._item();
-$1=_st(method)._isCompiledMethod();
-if(smalltalk.assert($1)){
-selector=_st(method)._selector();
-} else {
-selector=nil;
-};
-$2=self;
-_st($2)._selectedItem_(selector);
-$3=_st($2)._activateItem_(selector);
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{anAnnouncement:anAnnouncement,selector:selector,method:method},smalltalk.HLMethodsListWidget)})},
-messageSends: ["item", "ifTrue:ifFalse:", "isCompiledMethod", "selector", "selectedItem:", "activateItem:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodsFocusRequested",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodsFocusRequested",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolAdded:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(self._model())._selectedClass()).__eq(_st(anAnnouncement)._theClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedProtocol();
-self._refresh();
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolAdded:",{anAnnouncement:anAnnouncement},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:", "=", "selectedClass", "model", "theClass", "setItemsForSelectedProtocol", "refresh", "focus"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolRemoved:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(self._model())._selectedClass()).__eq(_st(anAnnouncement)._theClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedProtocol();
-self._refresh();
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolRemoved:",{anAnnouncement:anAnnouncement},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:", "=", "selectedClass", "model", "theClass", "setItemsForSelectedProtocol", "refresh", "focus"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolSelected:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectedItem_(nil);
-self._setItemsForSelectedProtocol();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLMethodsListWidget)})},
-messageSends: ["selectedItem:", "setItemsForSelectedProtocol", "refresh"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowInstanceToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._onProtocolSelected_(nil);
-return self}, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["onProtocolSelected:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "overrideSelectors",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$1=_st(self._selectorsCache())._at_ifAbsentPut_("override",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(self._model())._selectedClass())._allSuperclasses())._inject_into_(_st($Set())._new(),(function(acc,each){
-return smalltalk.withContext(function($ctx3) {
-$2=acc;
-_st($2)._addAll_(_st(each)._selectors());
-$3=_st($2)._yourself();
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({acc:acc,each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overrideSelectors",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["at:ifAbsentPut:", "selectorsCache", "inject:into:", "allSuperclasses", "selectedClass", "model", "new", "addAll:", "selectors", "yourself"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "overridenSelectors",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$1=_st(self._selectorsCache())._at_ifAbsentPut_("overriden",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(self._model())._selectedClass())._allSubclasses())._inject_into_(_st($Set())._new(),(function(acc,each){
-return smalltalk.withContext(function($ctx3) {
-$2=acc;
-_st($2)._addAll_(_st(each)._selectors());
-$3=_st($2)._yourself();
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({acc:acc,each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overridenSelectors",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["at:ifAbsentPut:", "selectorsCache", "inject:into:", "allSubclasses", "selectedClass", "model", "new", "addAll:", "selectors", "yourself"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._model())._showInstance();
-if(smalltalk.assert($1)){
-smalltalk.HLMethodsListWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-} else {
-$2=_st(html)._div();
-_st($2)._class_("class_side");
-$3=_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLMethodsListWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:ifTrue:", "showInstance", "model", "class:", "div", "with:", "renderContentOn:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (aSelector,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(aSelector);
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aSelector:aSelector,html:html},smalltalk.HLMethodsListWidget)})},
-messageSends: ["with:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aSelector;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=_st(self._model())._selectedMethod_(nil);
-return $2;
-} else {
-$1;
-};
-_st(self._model())._selectedMethod_(self._methodForSelector_(aSelector));
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aSelector:aSelector},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifNil:", "selectedMethod:", "model", "methodForSelector:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorsCache",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._selectorsCache();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorsCache",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["selectorsCache", "class"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorsInProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._methodsInProtocol_(aString))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._sorted();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorsInProtocol:",{aString:aString},smalltalk.HLMethodsListWidget)})},
-messageSends: ["sorted", "collect:", "methodsInProtocol:", "selector"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$4,$3,$1;
-$2=self;
-$4=aString;
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=[];
-} else {
-$3=self._selectorsInProtocol_(aString);
-};
-$1=_st($2)._items_($3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"setItemsForProtocol:",{aString:aString},smalltalk.HLMethodsListWidget)})},
-messageSends: ["items:", "ifNil:ifNotNil:", "selectorsInProtocol:"]}),
-smalltalk.HLMethodsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForSelectedProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._setItemsForProtocol_(_st(self._model())._selectedProtocol());
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForSelectedProtocol",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["setItemsForProtocol:", "selectedProtocol", "model"]}),
-smalltalk.HLMethodsListWidget);
-
-
-smalltalk.HLMethodsListWidget.klass.iVarNames = ['selectorsCache'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorsCache",
-fn: function (){
-var self=this;
-function $HLSelectorsCache(){return smalltalk.HLSelectorsCache||(typeof HLSelectorsCache=="undefined"?nil:HLSelectorsCache)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLSelectorsCache())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorsCache",{},smalltalk.HLMethodsListWidget.klass)})},
-messageSends: ["current"]}),
-smalltalk.HLMethodsListWidget.klass);
-
-
-smalltalk.addClass('HLPackagesListWidget', smalltalk.HLToolListWidget, [], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._commitPackage();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["commitPackage", "model"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClassForItem:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "package";
-}, function($ctx1) {$ctx1.fill(self,"cssClassForItem:",{anItem:anItem},smalltalk.HLPackagesListWidget)})},
-messageSends: []}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusClassesListWidget",
-fn: function (){
-var self=this;
-function $HLClassesListFocus(){return smalltalk.HLClassesListFocus||(typeof HLClassesListFocus=="undefined"?nil:HLClassesListFocus)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._announce_(_st($HLClassesListFocus())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"focusClassesListWidget",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["announce:", "announcer", "model", "new"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeItems",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@items"]=_st(_st(self._model())._packages())._sort_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._name()).__lt(_st(b)._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})}));
-$1=self["@items"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"initializeItems",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["sort:", "packages", "model", "<", "name"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "items",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@items"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._initializeItems();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"items",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["ifNil:", "initializeItems"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Packages";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLPackagesListWidget)})},
-messageSends: []}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLPackageSelected(){return smalltalk.HLPackageSelected||(typeof HLPackageSelected=="undefined"?nil:HLPackageSelected)}
-function $HLPackagesFocusRequested(){return smalltalk.HLPackagesFocusRequested||(typeof HLPackagesFocusRequested=="undefined"?nil:HLPackagesFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLPackageSelected(),"onPackageSelected:",self);
-$2=_st($1)._on_send_to_($HLPackagesFocusRequested(),"onPackagesFocusRequested",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._systemAnnouncer())._on_send_to_($ClassAdded(),"onClassAdded:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "model"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassAdded:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._items())._includes_(_st(_st(anAnnouncement)._theClass())._package());
-if(! smalltalk.assert($1)){
-$2=self;
-_st($2)._initializeItems();
-$3=_st($2)._refresh();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onClassAdded:",{anAnnouncement:anAnnouncement},smalltalk.HLPackagesListWidget)})},
-messageSends: ["ifFalse:", "includes:", "items", "package", "theClass", "initializeItems", "refresh"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onPackageSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var package_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-package_=_st(anAnnouncement)._item();
-self._selectedItem_(package_);
-$1=self._hasFocus();
-if(! smalltalk.assert($1)){
-$2=self;
-_st($2)._activateItem_(package_);
-$3=_st($2)._focus();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onPackageSelected:",{anAnnouncement:anAnnouncement,package_:package_},smalltalk.HLPackagesListWidget)})},
-messageSends: ["item", "selectedItem:", "ifFalse:", "hasFocus", "activateItem:", "focus"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onPackagesFocusRequested",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onPackagesFocusRequested",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (aPackage,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st(aPackage)._name());
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aPackage:aPackage,html:html},smalltalk.HLPackagesListWidget)})},
-messageSends: ["with:", "name"]}),
-smalltalk.HLPackagesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._selectedPackage_(aPackage);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aPackage:aPackage},smalltalk.HLPackagesListWidget)})},
-messageSends: ["selectedPackage:", "model"]}),
-smalltalk.HLPackagesListWidget);
-
-
-
-smalltalk.addClass('HLProtocolsListWidget', smalltalk.HLToolListWidget, [], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._allProtocol();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allProtocol",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["allProtocol", "model"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClassForItem:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st(anItem).__eq(self._allProtocol());
-if(smalltalk.assert($1)){
-return "";
-};
-$2=_st(anItem).__eq("private");
-if(smalltalk.assert($2)){
-return "private";
-};
-$3=_st(anItem).__eq("initialization");
-if(smalltalk.assert($3)){
-return "initialization";
-};
-$4=_st(anItem)._match_("^\x5c*");
-if(smalltalk.assert($4)){
-return "extension";
-};
-return "";
-}, function($ctx1) {$ctx1.fill(self,"cssClassForItem:",{anItem:anItem},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["ifTrue:", "=", "allProtocol", "match:"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocols";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: []}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-function $HLProtocolSelected(){return smalltalk.HLProtocolSelected||(typeof HLProtocolSelected=="undefined"?nil:HLProtocolSelected)}
-function $HLProtocolsFocusRequested(){return smalltalk.HLProtocolsFocusRequested||(typeof HLProtocolsFocusRequested=="undefined"?nil:HLProtocolsFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_send_to_($HLClassSelected(),"onClassSelected:",self);
-_st($1)._on_send_to_($HLShowInstanceToggled(),"onClassSelected:",self);
-_st($1)._on_send_to_($HLProtocolSelected(),"onProtocolSelected:",self);
-$2=_st($1)._on_send_to_($HLProtocolsFocusRequested(),"onProtocolsFocusRequested",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $ProtocolAdded(){return smalltalk.ProtocolAdded||(typeof ProtocolAdded=="undefined"?nil:ProtocolAdded)}
-function $ProtocolRemoved(){return smalltalk.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._systemAnnouncer();
-_st($1)._on_send_to_($ProtocolAdded(),"onProtocolAdded:",self);
-$2=_st($1)._on_send_to_($ProtocolRemoved(),"onProtocolRemoved:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "model"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassSelected:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectedItem_(nil);
-self._setItemsForSelectedClass();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["selectedItem:", "setItemsForSelectedClass", "refresh"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolAdded:",
-fn: function (anAnnouncement){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-class_=_st(anAnnouncement)._theClass();
-$1=_st(class_).__eq(_st(self._model())._selectedClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._setItemsForSelectedClass();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolAdded:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["theClass", "ifFalse:", "=", "selectedClass", "model", "setItemsForSelectedClass", "refresh"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolRemoved:",
-fn: function (anAnnouncement){
-var self=this;
-var class_,protocol;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-class_=_st(anAnnouncement)._theClass();
-protocol=_st(anAnnouncement)._protocol();
-$1=_st(class_).__eq(_st(self._model())._selectedClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(_st(self._model())._selectedProtocol()).__eq(protocol);
-if(smalltalk.assert($3)){
-$4=self;
-_st($4)._selectedItem_(nil);
-$5=_st($4)._selectItem_(nil);
-$5;
-};
-self._setItemsForSelectedClass();
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolRemoved:",{anAnnouncement:anAnnouncement,class_:class_,protocol:protocol},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["theClass", "protocol", "ifFalse:", "=", "selectedClass", "model", "ifTrue:", "selectedProtocol", "selectedItem:", "selectItem:", "setItemsForSelectedClass", "refresh"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var protocol;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-protocol=_st(anAnnouncement)._item();
-self._selectedItem_(protocol);
-$1=protocol;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-$3=self._hasFocus();
-if(! smalltalk.assert($3)){
-$4=self;
-_st($4)._activateItem_(protocol);
-$5=_st($4)._focus();
-$5;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{anAnnouncement:anAnnouncement,protocol:protocol},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["item", "selectedItem:", "ifNil:", "ifFalse:", "hasFocus", "activateItem:", "focus"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolsFocusRequested",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolsFocusRequested",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._model())._showInstance();
-if(smalltalk.assert($1)){
-smalltalk.HLProtocolsListWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-} else {
-$2=_st(html)._div();
-_st($2)._class_("class_side");
-$3=_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLProtocolsListWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["ifFalse:ifTrue:", "showInstance", "model", "class:", "div", "with:", "renderContentOn:"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._selectedProtocol_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aString:aString},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["selectedProtocol:", "model"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HLProtocolsListWidget.superclass.fn.prototype._selectedItem.apply(_st(self), []);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedItem",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["selectedItem"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForClass:",
-fn: function (aClass){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$2;
-$1=self;
-$3=aClass;
-if(($receiver = $3) == nil || $receiver == undefined){
-$2=_st($Array())._with_(self._allProtocol());
-} else {
-$4=_st($Array())._with_(self._allProtocol());
-_st($4)._addAll_(_st(aClass)._protocols());
-$5=_st($4)._yourself();
-$2=$5;
-};
-_st($1)._items_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForClass:",{aClass:aClass},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["items:", "ifNil:ifNotNil:", "with:", "allProtocol", "addAll:", "protocols", "yourself"]}),
-smalltalk.HLProtocolsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setItemsForSelectedClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._setItemsForClass_(_st(self._model())._selectedClass());
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForSelectedClass",{},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["setItemsForClass:", "selectedClass", "model"]}),
-smalltalk.HLProtocolsListWidget);
-
-
-
-smalltalk.addClass('HLSelectorsCache', smalltalk.Object, ['classesCache'], 'Helios-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cacheFor:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aClass;
-if(($receiver = $1) == nil || $receiver == undefined){
-return nil;
-} else {
-$1;
-};
-$2=_st(self._classesCache())._at_ifAbsentPut_(_st(aClass)._name(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._newCacheFor_(aClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"cacheFor:",{aClass:aClass},smalltalk.HLSelectorsCache)})},
-messageSends: ["ifNil:", "at:ifAbsentPut:", "classesCache", "name", "newCacheFor:"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classesCache",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@classesCache"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@classesCache"]=_st($HashedCollection())._new();
-$1=self["@classesCache"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classesCache",{},smalltalk.HLSelectorsCache)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLSelectorsCache.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._observeSystem();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLSelectorsCache)})},
-messageSends: ["initialize", "observeSystem"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "invalidateCacheFor:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._cacheFor_(_st(aMethod)._methodClass()))._invalidateSelector_(_st(aMethod)._selector());
-return self}, function($ctx1) {$ctx1.fill(self,"invalidateCacheFor:",{aMethod:aMethod},smalltalk.HLSelectorsCache)})},
-messageSends: ["invalidateSelector:", "cacheFor:", "methodClass", "selector"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._cacheFor_(_st(aMethod)._methodClass()))._isOverridden_(aMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverridden:",{aMethod:aMethod},smalltalk.HLSelectorsCache)})},
-messageSends: ["isOverridden:", "cacheFor:", "methodClass"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._cacheFor_(_st(aMethod)._methodClass()))._isOverride_(aMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverride:",{aMethod:aMethod},smalltalk.HLSelectorsCache)})},
-messageSends: ["isOverride:", "cacheFor:", "methodClass"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newCacheFor:",
-fn: function (aClass){
-var self=this;
-function $HLClassCache(){return smalltalk.HLClassCache||(typeof HLClassCache=="undefined"?nil:HLClassCache)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLClassCache())._on_selectorsCache_(aClass,self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newCacheFor:",{aClass:aClass},smalltalk.HLSelectorsCache)})},
-messageSends: ["on:selectorsCache:"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
-function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($SystemAnnouncer())._current();
-_st($1)._on_send_to_($MethodAdded(),"onMethodAdded:",self);
-$2=_st($1)._on_send_to_($MethodRemoved(),"onMethodRemoved:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLSelectorsCache)})},
-messageSends: ["on:send:to:", "current"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodAdded:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._invalidateCacheFor_(_st(anAnnouncement)._method());
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodAdded:",{anAnnouncement:anAnnouncement},smalltalk.HLSelectorsCache)})},
-messageSends: ["invalidateCacheFor:", "method"]}),
-smalltalk.HLSelectorsCache);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodRemoved:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._invalidateCacheFor_(_st(anAnnouncement)._method());
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodRemoved:",{anAnnouncement:anAnnouncement},smalltalk.HLSelectorsCache)})},
-messageSends: ["invalidateCacheFor:", "method"]}),
-smalltalk.HLSelectorsCache);
-
-
-smalltalk.HLSelectorsCache.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=smalltalk.HLSelectorsCache.klass.superclass.fn.prototype._new.apply(_st(self), []);
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.HLSelectorsCache.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLSelectorsCache.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "flush",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@current"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"flush",{},smalltalk.HLSelectorsCache.klass)})},
-messageSends: []}),
-smalltalk.HLSelectorsCache.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.HLSelectorsCache.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.HLSelectorsCache.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Browser.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Browser", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Core", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Browser');
+smalltalk.packages["Helios-Browser"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLBrowser', smalltalk.HLWidget, ['model', 'packagesListWidget', 'classesListWidget', 'protocolsListWidget', 'methodsListWidget', 'sourceWidget', 'bottomDiv'], 'Helios-Browser');
 smalltalk.HLBrowser.comment="I render a system browser with 4 panes (Packages, Classes, Protocols, Methods) and a source area.";
@@ -3894,4 +3895,4 @@ referencedClasses: []
 }),
 smalltalk.HLSelectorsCache.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 422
js/Helios-Commands-Browser.deploy.js

@@ -1,422 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Commands-Browser');
-
-smalltalk.addClass('HLBrowserCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Browser');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValidFor:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aModel)._isBrowserModel();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{aModel:aModel},smalltalk.HLBrowserCommand.klass)})},
-messageSends: ["isBrowserModel"]}),
-smalltalk.HLBrowserCommand.klass);
-
-
-smalltalk.addClass('HLBrowserGoToCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValidFor:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aModel)._isBrowserModel();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{aModel:aModel},smalltalk.HLBrowserGoToCommand.klass)})},
-messageSends: ["isBrowserModel"]}),
-smalltalk.HLBrowserGoToCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "g";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLBrowserGoToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLBrowserGoToCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Go to";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLBrowserGoToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLBrowserGoToCommand.klass);
-
-
-smalltalk.addClass('HLGoToClassesCommand', smalltalk.HLBrowserGoToCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._focusOnClasses();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLGoToClassesCommand)})},
-messageSends: ["focusOnClasses", "model"]}),
-smalltalk.HLGoToClassesCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLGoToClassesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToClassesCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLGoToClassesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToClassesCommand.klass);
-
-
-smalltalk.addClass('HLGoToMethodsCommand', smalltalk.HLBrowserGoToCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._focusOnMethods();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLGoToMethodsCommand)})},
-messageSends: ["focusOnMethods", "model"]}),
-smalltalk.HLGoToMethodsCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "m";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLGoToMethodsCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToMethodsCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Methods";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLGoToMethodsCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToMethodsCommand.klass);
-
-
-smalltalk.addClass('HLGoToPackagesCommand', smalltalk.HLBrowserGoToCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._focusOnPackages();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLGoToPackagesCommand)})},
-messageSends: ["focusOnPackages", "model"]}),
-smalltalk.HLGoToPackagesCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "p";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLGoToPackagesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToPackagesCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Packages";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLGoToPackagesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToPackagesCommand.klass);
-
-
-smalltalk.addClass('HLGoToProtocolsCommand', smalltalk.HLBrowserGoToCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._focusOnProtocols();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLGoToProtocolsCommand)})},
-messageSends: ["focusOnProtocols", "model"]}),
-smalltalk.HLGoToProtocolsCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "t";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLGoToProtocolsCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToProtocolsCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocols";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLGoToProtocolsCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToProtocolsCommand.klass);
-
-
-smalltalk.addClass('HLGoToSourceCodeCommand', smalltalk.HLBrowserGoToCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._focusOnSourceCode();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLGoToSourceCodeCommand)})},
-messageSends: ["focusOnSourceCode", "model"]}),
-smalltalk.HLGoToSourceCodeCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "s";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLGoToSourceCodeCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToSourceCodeCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Source code";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLGoToSourceCodeCommand.klass)})},
-messageSends: []}),
-smalltalk.HLGoToSourceCodeCommand.klass);
-
-
-smalltalk.addClass('HLEditCommentCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._editComment();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLEditCommentCommand)})},
-messageSends: ["editComment", "model"]}),
-smalltalk.HLEditCommentCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._showComment())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._model())._selectedClass())._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLEditCommentCommand)})},
-messageSends: ["and:", "showComment", "model", "notNil", "selectedClass"]}),
-smalltalk.HLEditCommentCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "d";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLEditCommentCommand.klass)})},
-messageSends: []}),
-smalltalk.HLEditCommentCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Edit documentation";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLEditCommentCommand.klass)})},
-messageSends: []}),
-smalltalk.HLEditCommentCommand.klass);
-
-
-smalltalk.addClass('HLToggleCommand', smalltalk.HLBrowserCommand, [], 'Helios-Commands-Browser');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "t";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLToggleCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Toggle";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLToggleCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleCommand.klass);
-
-
-smalltalk.addClass('HLToggleClassCommentCommand', smalltalk.HLToggleCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showComment_(_st(_st(self._model())._showComment())._not());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLToggleClassCommentCommand)})},
-messageSends: ["showComment:", "model", "not", "showComment"]}),
-smalltalk.HLToggleClassCommentCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "d";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLToggleClassCommentCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleClassCommentCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Documentation";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLToggleClassCommentCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleClassCommentCommand.klass);
-
-
-smalltalk.addClass('HLToggleClassSideCommand', smalltalk.HLToggleCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showInstance_(false);
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLToggleClassSideCommand)})},
-messageSends: ["showInstance:", "model"]}),
-smalltalk.HLToggleClassSideCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLToggleClassSideCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleClassSideCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class side";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLToggleClassSideCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleClassSideCommand.klass);
-
-
-smalltalk.addClass('HLToggleInstanceSideCommand', smalltalk.HLToggleCommand, [], 'Helios-Commands-Browser');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showInstance_(true);
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLToggleInstanceSideCommand)})},
-messageSends: ["showInstance:", "model"]}),
-smalltalk.HLToggleInstanceSideCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "i";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLToggleInstanceSideCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleInstanceSideCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Instance side";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLToggleInstanceSideCommand.klass)})},
-messageSends: []}),
-smalltalk.HLToggleInstanceSideCommand.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Commands-Browser.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Commands-Browser", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Commands-Tools"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Commands-Browser');
+smalltalk.packages["Helios-Commands-Browser"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLBrowserCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Browser');
 
@@ -589,4 +590,4 @@ referencedClasses: []
 }),
 smalltalk.HLToggleInstanceSideCommand.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 716
js/Helios-Commands-Core.deploy.js

@@ -1,716 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Commands-Core');
-
-smalltalk.addClass('HLCommand', smalltalk.Object, ['input'], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asActionBinding",
-fn: function (){
-var self=this;
-function $HLBindingAction(){return smalltalk.HLBindingAction||(typeof HLBindingAction=="undefined"?nil:HLBindingAction)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($HLBindingAction())._on_labelled_(self._keyCode(),self._label());
-_st($2)._command_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asActionBinding",{},smalltalk.HLCommand)})},
-messageSends: ["command:", "on:labelled:", "keyCode", "label", "yourself"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asBinding",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isBindingGroup();
-if(smalltalk.assert($2)){
-$1=self._asGroupBinding();
-} else {
-$1=self._asActionBinding();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asBinding",{},smalltalk.HLCommand)})},
-messageSends: ["ifTrue:ifFalse:", "isBindingGroup", "asGroupBinding", "asActionBinding"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asGroupBinding",
-fn: function (){
-var self=this;
-function $HLBindingGroup(){return smalltalk.HLBindingGroup||(typeof HLBindingGroup=="undefined"?nil:HLBindingGroup)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLBindingGroup())._on_labelled_(self._keyCode(),self._label());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asGroupBinding",{},smalltalk.HLCommand)})},
-messageSends: ["on:labelled:", "keyCode", "label"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commandError:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"commandError:",{aString:aString},smalltalk.HLCommand)})},
-messageSends: ["error:"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInput",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "documentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._documentation();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"documentation",{},smalltalk.HLCommand)})},
-messageSends: ["documentation", "class"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "input",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@input"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"input",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "input:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@input"]=aString;
-$1=self["@input"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"input:",{aString:aString},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLCommand)})},
-messageSends: ["label"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAction",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isBindingGroup())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isAction",{},smalltalk.HLCommand)})},
-messageSends: ["not", "isBindingGroup"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBindingGroup",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._class())._methodDictionary())._includesKey_("execute"))._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isBindingGroup",{},smalltalk.HLCommand)})},
-messageSends: ["not", "includesKey:", "methodDictionary", "class"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLCommand)})},
-messageSends: []}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._key();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCommand)})},
-messageSends: ["key", "class"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyCode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._key())._asUppercase())._charCodeAt_((1));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyCode",{},smalltalk.HLCommand)})},
-messageSends: ["charCodeAt:", "asUppercase", "key"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCommand)})},
-messageSends: ["label", "class"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._menuLabel();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLCommand)})},
-messageSends: ["menuLabel", "class"]}),
-smalltalk.HLCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerOn:",
-fn: function (aBinding){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aBinding)._add_(self._asBinding());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"registerOn:",{aBinding:aBinding},smalltalk.HLCommand)})},
-messageSends: ["add:", "asBinding"]}),
-smalltalk.HLCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "concreteClasses",
-fn: function (){
-var self=this;
-var classes;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-classes=_st($OrderedCollection())._new();
-$1=self._isConcrete();
-if(smalltalk.assert($1)){
-_st(classes)._add_(self);
-};
-_st(self._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(classes)._addAll_(_st(each)._concreteClasses());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$2=classes;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"concreteClasses",{classes:classes},smalltalk.HLCommand.klass)})},
-messageSends: ["new", "ifTrue:", "isConcrete", "add:", "do:", "subclasses", "addAll:", "concreteClasses"]}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "documentation",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"documentation",{},smalltalk.HLCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isConcrete",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._key())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isConcrete",{},smalltalk.HLCommand.klass)})},
-messageSends: ["notNil", "key"]}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValidFor:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{aModel:aModel},smalltalk.HLCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLCommand.klass)})},
-messageSends: ["label"]}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerConcreteClassesOn:",
-fn: function (aBinding){
-var self=this;
-var newBinding;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isConcrete();
-if(smalltalk.assert($1)){
-newBinding=self._registerOn_(aBinding);
-newBinding;
-} else {
-newBinding=aBinding;
-newBinding;
-};
-_st(self._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._registerConcreteClassesOn_(newBinding);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"registerConcreteClassesOn:",{aBinding:aBinding,newBinding:newBinding},smalltalk.HLCommand.klass)})},
-messageSends: ["ifTrue:ifFalse:", "isConcrete", "registerOn:", "do:", "subclasses", "registerConcreteClassesOn:"]}),
-smalltalk.HLCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerOn:",
-fn: function (aBinding){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._registerOn_(aBinding);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"registerOn:",{aBinding:aBinding},smalltalk.HLCommand.klass)})},
-messageSends: ["registerOn:", "new"]}),
-smalltalk.HLCommand.klass);
-
-
-smalltalk.addClass('HLCloseTabCommand', smalltalk.HLCommand, [], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($HLManager())._current())._removeActiveTab();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCloseTabCommand)})},
-messageSends: ["removeActiveTab", "current"]}),
-smalltalk.HLCloseTabCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "w";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCloseTabCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCloseTabCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Close tab";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCloseTabCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCloseTabCommand.klass);
-
-
-smalltalk.addClass('HLModelCommand', smalltalk.HLCommand, ['model'], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLModelCommand)})},
-messageSends: []}),
-smalltalk.HLModelCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLModelCommand)})},
-messageSends: []}),
-smalltalk.HLModelCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "for:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"for:",{aModel:aModel},smalltalk.HLModelCommand.klass)})},
-messageSends: ["new"]}),
-smalltalk.HLModelCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerConcreteClassesOn:for:",
-fn: function (aBinding,aModel){
-var self=this;
-var newBinding;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isConcrete())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._isValidFor_(aModel);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-newBinding=self._registerOn_for_(aBinding,aModel);
-newBinding;
-} else {
-newBinding=aBinding;
-newBinding;
-};
-_st(self._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._registerConcreteClassesOn_for_(newBinding,aModel);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"registerConcreteClassesOn:for:",{aBinding:aBinding,aModel:aModel,newBinding:newBinding},smalltalk.HLModelCommand.klass)})},
-messageSends: ["ifTrue:ifFalse:", "and:", "isConcrete", "isValidFor:", "registerOn:for:", "do:", "subclasses", "registerConcreteClassesOn:for:"]}),
-smalltalk.HLModelCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerOn:for:",
-fn: function (aBinding,aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._for_(aModel))._registerOn_(aBinding);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"registerOn:for:",{aBinding:aBinding,aModel:aModel},smalltalk.HLModelCommand.klass)})},
-messageSends: ["registerOn:", "for:"]}),
-smalltalk.HLModelCommand.klass);
-
-
-smalltalk.addClass('HLOpenCommand', smalltalk.HLCommand, [], 'Helios-Commands-Core');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "o";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLOpenCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Open";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLOpenCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenCommand.klass);
-
-
-smalltalk.addClass('HLOpenBrowserCommand', smalltalk.HLOpenCommand, [], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-function $HLBrowser(){return smalltalk.HLBrowser||(typeof HLBrowser=="undefined"?nil:HLBrowser)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLBrowser())._openAsTab();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLOpenBrowserCommand)})},
-messageSends: ["openAsTab"]}),
-smalltalk.HLOpenBrowserCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "b";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLOpenBrowserCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenBrowserCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Browser";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLOpenBrowserCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenBrowserCommand.klass);
-
-
-smalltalk.addClass('HLOpenWorkspaceCommand', smalltalk.HLOpenCommand, [], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-function $HLWorkspace(){return smalltalk.HLWorkspace||(typeof HLWorkspace=="undefined"?nil:HLWorkspace)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLWorkspace())._openAsTab();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLOpenWorkspaceCommand)})},
-messageSends: ["openAsTab"]}),
-smalltalk.HLOpenWorkspaceCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "w";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLOpenWorkspaceCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenWorkspaceCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Workspace";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLOpenWorkspaceCommand.klass)})},
-messageSends: []}),
-smalltalk.HLOpenWorkspaceCommand.klass);
-
-
-smalltalk.addClass('HLSwitchTabCommand', smalltalk.HLCommand, [], 'Helios-Commands-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-var activeTab;
-function $HLTabSelectionWidget(){return smalltalk.HLTabSelectionWidget||(typeof HLTabSelectionWidget=="undefined"?nil:HLTabSelectionWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-activeTab=self._selectedTab();
-$2=_st($HLTabSelectionWidget())._new();
-_st($2)._tabs_(self._tabs());
-_st($2)._selectedTab_(self._selectedTab());
-_st($2)._selectCallback_((function(tab){
-return smalltalk.withContext(function($ctx2) {
-return _st(tab)._activate();
-}, function($ctx2) {$ctx2.fillBlock({tab:tab},$ctx1,1)})}));
-_st($2)._confirmCallback_((function(tab){
-return smalltalk.withContext(function($ctx2) {
-return _st(tab)._focus();
-}, function($ctx2) {$ctx2.fillBlock({tab:tab},$ctx1,2)})}));
-_st($2)._cancelCallback_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(activeTab)._activate();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$3=_st($2)._show();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"execute",{activeTab:activeTab},smalltalk.HLSwitchTabCommand)})},
-messageSends: ["selectedTab", "tabs:", "new", "tabs", "selectedTab:", "selectCallback:", "activate", "confirmCallback:", "focus", "cancelCallback:", "show"]}),
-smalltalk.HLSwitchTabCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedTab",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($HLManager())._current())._activeTab();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedTab",{},smalltalk.HLSwitchTabCommand)})},
-messageSends: ["activeTab", "current"]}),
-smalltalk.HLSwitchTabCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabs",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($HLManager())._current())._tabs();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tabs",{},smalltalk.HLSwitchTabCommand)})},
-messageSends: ["tabs", "current"]}),
-smalltalk.HLSwitchTabCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "s";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLSwitchTabCommand.klass)})},
-messageSends: []}),
-smalltalk.HLSwitchTabCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Switch";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLSwitchTabCommand.klass)})},
-messageSends: []}),
-smalltalk.HLSwitchTabCommand.klass);
-
-
-smalltalk.addClass('HLViewCommand', smalltalk.HLCommand, [], 'Helios-Commands-Core');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "View";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLViewCommand.klass)})},
-messageSends: []}),
-smalltalk.HLViewCommand.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Commands-Core.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Commands-Core", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Commands-Core');
+smalltalk.packages["Helios-Commands-Core"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLCommand', smalltalk.Object, ['input'], 'Helios-Commands-Core');
 smalltalk.addMethod(
@@ -968,4 +969,4 @@ referencedClasses: []
 }),
 smalltalk.HLViewCommand.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1345
js/Helios-Commands-Tools.deploy.js

@@ -1,1345 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Commands-Tools');
-
-smalltalk.addClass('HLToolCommand', smalltalk.HLModelCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLToolCommand)})},
-messageSends: []}),
-smalltalk.HLToolCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "for:",
-fn: function (aToolModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._model_(aToolModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"for:",{aToolModel:aToolModel},smalltalk.HLToolCommand.klass)})},
-messageSends: ["model:", "new", "yourself"]}),
-smalltalk.HLToolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValidFor:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aModel)._isToolModel();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{aModel:aModel},smalltalk.HLToolCommand.klass)})},
-messageSends: ["isToolModel"]}),
-smalltalk.HLToolCommand.klass);
-
-
-smalltalk.addClass('HLCommitPackageCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Packages";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLCommitPackageCommand)})},
-messageSends: []}),
-smalltalk.HLCommitPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._commitPackage();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCommitPackageCommand)})},
-messageSends: ["commitPackage", "model"]}),
-smalltalk.HLCommitPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLCommitPackageCommand)})},
-messageSends: []}),
-smalltalk.HLCommitPackageCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "k";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCommitPackageCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommitPackageCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Commit";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCommitPackageCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCommitPackageCommand.klass);
-
-
-smalltalk.addClass('HLCopyCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCopyCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Copy";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCopyCommand.klass);
-
-
-smalltalk.addClass('HLCopyClassCommand', smalltalk.HLCopyCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLCopyClassCommand)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInput",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._name();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLCopyClassCommand)})},
-messageSends: ["name", "selectedClass", "model"]}),
-smalltalk.HLCopyClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "New class name:";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLCopyClassCommand)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._copyClassTo_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCopyClassCommand)})},
-messageSends: ["copyClassTo:", "model", "input"]}),
-smalltalk.HLCopyClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLCopyClassCommand)})},
-messageSends: ["notNil", "selectedClass", "model"]}),
-smalltalk.HLCopyClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLCopyClassCommand)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLCopyClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLCopyClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Copy class...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLCopyClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLCopyClassCommand.klass);
-
-
-smalltalk.addClass('HLFindCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "f";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLFindCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Find";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLFindCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindCommand.klass);
-
-
-smalltalk.addClass('HLFindClassCommand', smalltalk.HLFindCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "select a class";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLFindClassCommand)})},
-messageSends: []}),
-smalltalk.HLFindClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._openClassNamed_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLFindClassCommand)})},
-messageSends: ["openClassNamed:", "model", "input"]}),
-smalltalk.HLFindClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._availableClassNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLFindClassCommand)})},
-messageSends: ["availableClassNames", "model"]}),
-smalltalk.HLFindClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Find a class";
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLFindClassCommand)})},
-messageSends: []}),
-smalltalk.HLFindClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLFindClassCommand)})},
-messageSends: []}),
-smalltalk.HLFindClassCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isValidFor:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aModel)._isBrowserModel();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isValidFor:",{aModel:aModel},smalltalk.HLFindClassCommand.klass)})},
-messageSends: ["isBrowserModel"]}),
-smalltalk.HLFindClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLFindClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLFindClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindClassCommand.klass);
-
-
-smalltalk.addClass('HLFindReferencesCommand', smalltalk.HLFindCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInput",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(self._model())._selectedMethod();
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st(self._model())._selectedClass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$1="";
-} else {
-var class_;
-class_=$receiver;
-$1=_st(class_)._name();
-};
-} else {
-var method;
-method=$receiver;
-$1=_st(method)._selector();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: ["ifNil:ifNotNil:", "selectedMethod", "model", "selectedClass", "name", "selector"]}),
-smalltalk.HLFindReferencesCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "find references";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: []}),
-smalltalk.HLFindReferencesCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-function $HLReferences(){return smalltalk.HLReferences||(typeof HLReferences=="undefined"?nil:HLReferences)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLReferences())._new();
-_st($1)._openAsTab();
-$2=_st($1)._search_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: ["openAsTab", "new", "search:", "input"]}),
-smalltalk.HLFindReferencesCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._availableClassNames()).__comma(_st(self._model())._allSelectors());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: [",", "availableClassNames", "model", "allSelectors"]}),
-smalltalk.HLFindReferencesCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Find references of";
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: []}),
-smalltalk.HLFindReferencesCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLFindReferencesCommand)})},
-messageSends: []}),
-smalltalk.HLFindReferencesCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "r";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLFindReferencesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindReferencesCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "References";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLFindReferencesCommand.klass)})},
-messageSends: []}),
-smalltalk.HLFindReferencesCommand.klass);
-
-
-smalltalk.addClass('HLMoveToCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "m";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveToCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveToCommand.klass);
-
-
-smalltalk.addClass('HLMoveClassToCommand', smalltalk.HLMoveToCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLMoveClassToCommand)})},
-messageSends: ["notNil", "selectedClass", "model"]}),
-smalltalk.HLMoveClassToCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveClassToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveClassToCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveClassToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveClassToCommand.klass);
-
-
-smalltalk.addClass('HLMoveClassToPackageCommand', smalltalk.HLMoveClassToCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "select a package";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._moveClassToPackage_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: ["moveClassToPackage:", "model", "input"]}),
-smalltalk.HLMoveClassToPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._availablePackageNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: ["availablePackageNames", "model"]}),
-smalltalk.HLMoveClassToPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move class to package:";
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLMoveClassToPackageCommand)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "p";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveClassToPackageCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "to package";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveClassToPackageCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move to package...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLMoveClassToPackageCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveClassToPackageCommand.klass);
-
-
-smalltalk.addClass('HLMoveMethodToCommand', smalltalk.HLMoveToCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Methods";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLMoveMethodToCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedMethod())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLMoveMethodToCommand)})},
-messageSends: ["notNil", "selectedMethod", "model"]}),
-smalltalk.HLMoveMethodToCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "m";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveMethodToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Method";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveMethodToCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToCommand.klass);
-
-
-smalltalk.addClass('HLMoveMethodToClassCommand', smalltalk.HLMoveMethodToCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "select a class";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLMoveMethodToClassCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._moveMethodToClass_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveMethodToClassCommand)})},
-messageSends: ["moveMethodToClass:", "model", "input"]}),
-smalltalk.HLMoveMethodToClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._availableClassNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLMoveMethodToClassCommand)})},
-messageSends: ["availableClassNames", "model"]}),
-smalltalk.HLMoveMethodToClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move method to class:";
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLMoveMethodToClassCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLMoveMethodToClassCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveMethodToClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "to class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveMethodToClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move to class...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLMoveMethodToClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToClassCommand.klass);
-
-
-smalltalk.addClass('HLMoveMethodToProtocolCommand', smalltalk.HLMoveMethodToCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "select a protocol";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLMoveMethodToProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._moveMethodToProtocol_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveMethodToProtocolCommand)})},
-messageSends: ["moveMethodToProtocol:", "model", "input"]}),
-smalltalk.HLMoveMethodToProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._availableProtocols();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLMoveMethodToProtocolCommand)})},
-messageSends: ["availableProtocols", "model"]}),
-smalltalk.HLMoveMethodToProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move method to a protocol:";
-}, function($ctx1) {$ctx1.fill(self,"inputLabel",{},smalltalk.HLMoveMethodToProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLMoveMethodToProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "t";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLMoveMethodToProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "to protocol";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLMoveMethodToProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Move to protocol...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLMoveMethodToProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLMoveMethodToProtocolCommand.klass);
-
-
-smalltalk.addClass('HLRemoveCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "x";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRemoveCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Remove";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRemoveCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveCommand.klass);
-
-
-smalltalk.addClass('HLRemoveClassCommand', smalltalk.HLRemoveCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLRemoveClassCommand)})},
-messageSends: []}),
-smalltalk.HLRemoveClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._removeClass();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRemoveClassCommand)})},
-messageSends: ["removeClass", "model"]}),
-smalltalk.HLRemoveClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRemoveClassCommand)})},
-messageSends: ["notNil", "selectedClass", "model"]}),
-smalltalk.HLRemoveClassCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRemoveClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRemoveClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Remove class";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRemoveClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveClassCommand.klass);
-
-
-smalltalk.addClass('HLRemoveMethodCommand', smalltalk.HLRemoveCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Methods";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLRemoveMethodCommand)})},
-messageSends: []}),
-smalltalk.HLRemoveMethodCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._removeMethod();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRemoveMethodCommand)})},
-messageSends: ["removeMethod", "model"]}),
-smalltalk.HLRemoveMethodCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedMethod())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRemoveMethodCommand)})},
-messageSends: ["notNil", "selectedMethod", "model"]}),
-smalltalk.HLRemoveMethodCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "m";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRemoveMethodCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveMethodCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Method";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRemoveMethodCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveMethodCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Remove method";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRemoveMethodCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveMethodCommand.klass);
-
-
-smalltalk.addClass('HLRemoveProtocolCommand', smalltalk.HLRemoveCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocols";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLRemoveProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLRemoveProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._removeProtocol();
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRemoveProtocolCommand)})},
-messageSends: ["removeProtocol", "model"]}),
-smalltalk.HLRemoveProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedProtocol())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRemoveProtocolCommand)})},
-messageSends: ["notNil", "selectedProtocol", "model"]}),
-smalltalk.HLRemoveProtocolCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "t";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRemoveProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocol";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRemoveProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Remove protocol";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRemoveProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRemoveProtocolCommand.klass);
-
-
-smalltalk.addClass('HLRenameCommand', smalltalk.HLToolCommand, [], 'Helios-Commands-Tools');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "r";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Rename";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameCommand.klass);
-
-
-smalltalk.addClass('HLRenameClassCommand', smalltalk.HLRenameCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Classes";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLRenameClassCommand)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInput",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._name();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLRenameClassCommand)})},
-messageSends: ["name", "selectedClass", "model"]}),
-smalltalk.HLRenameClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Rename class to:";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLRenameClassCommand)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._renameClassTo_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameClassCommand)})},
-messageSends: ["renameClassTo:", "model", "input"]}),
-smalltalk.HLRenameClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedClass())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRenameClassCommand)})},
-messageSends: ["notNil", "selectedClass", "model"]}),
-smalltalk.HLRenameClassCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLRenameClassCommand)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "c";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Rename class...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRenameClassCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameClassCommand.klass);
-
-
-smalltalk.addClass('HLRenameProtocolCommand', smalltalk.HLRenameCommand, [], 'Helios-Commands-Tools');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocols";
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultInput",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._selectedProtocol();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: ["selectedProtocol", "model"]}),
-smalltalk.HLRenameProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Rename protocol to:";
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._renameProtocolTo_(self._input());
-return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: ["renameProtocolTo:", "model", "input"]}),
-smalltalk.HLRenameProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._selectedProtocol())._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: ["notNil", "selectedProtocol", "model"]}),
-smalltalk.HLRenameProtocolCommand);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isInputRequired",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isInputRequired",{},smalltalk.HLRenameProtocolCommand)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "t";
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLRenameProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Protocol";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRenameProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Rename protocol...";
-}, function($ctx1) {$ctx1.fill(self,"menuLabel",{},smalltalk.HLRenameProtocolCommand.klass)})},
-messageSends: []}),
-smalltalk.HLRenameProtocolCommand.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Commands-Tools.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Commands-Tools", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Commands-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Commands-Tools');
+smalltalk.packages["Helios-Commands-Tools"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLToolCommand', smalltalk.HLModelCommand, [], 'Helios-Commands-Tools');
 smalltalk.addMethod(
@@ -1897,4 +1898,4 @@ referencedClasses: []
 }),
 smalltalk.HLRenameProtocolCommand.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 4053
js/Helios-Core.deploy.js

@@ -1,4053 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Core');
-
-smalltalk.addClass('HLModel', smalltalk.Object, ['announcer', 'environment'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLModel)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self._manager())._environment();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLModel)})},
-messageSends: ["ifNil:", "environment", "manager"]}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLModel)})},
-messageSends: []}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBrowserModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBrowserModel",{},smalltalk.HLModel)})},
-messageSends: []}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReferencesModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isReferencesModel",{},smalltalk.HLModel)})},
-messageSends: []}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isToolModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isToolModel",{},smalltalk.HLModel)})},
-messageSends: []}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "manager",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLManager())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLModel)})},
-messageSends: ["current"]}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._systemAnnouncer();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.HLModel)})},
-messageSends: ["systemAnnouncer", "environment"]}),
-smalltalk.HLModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withChangesDo:",
-fn: function (aBlock){
-var self=this;
-function $HLAboutToChange(){return smalltalk.HLAboutToChange||(typeof HLAboutToChange=="undefined"?nil:HLAboutToChange)}
-function $HLChangeForbidden(){return smalltalk.HLChangeForbidden||(typeof HLChangeForbidden=="undefined"?nil:HLChangeForbidden)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._announcer())._announce_(_st(_st($HLAboutToChange())._new())._actionBlock_(aBlock));
-return _st(aBlock)._value();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($HLChangeForbidden(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withChangesDo:",{aBlock:aBlock},smalltalk.HLModel)})},
-messageSends: ["on:do:", "announce:", "announcer", "actionBlock:", "new", "value"]}),
-smalltalk.HLModel);
-
-
-
-smalltalk.addClass('HLToolModel', smalltalk.HLModel, ['selectedClass', 'selectedPackage', 'selectedProtocol', 'selectedSelector'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addInstVarNamed:",
-fn: function (aString){
-var self=this;
-function $HLInstVarAdded(){return smalltalk.HLInstVarAdded||(typeof HLInstVarAdded=="undefined"?nil:HLInstVarAdded)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._environment())._addInstVarNamed_to_(aString,self._selectedClass());
-$1=_st($HLInstVarAdded())._new();
-_st($1)._theClass_(self._selectedClass());
-_st($1)._variableName_(aString);
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["addInstVarNamed:to:", "environment", "selectedClass", "announce:", "announcer", "theClass:", "new", "variableName:", "yourself"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "-- all --";
-}, function($ctx1) {$ctx1.fill(self,"allProtocol",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._allSelectors();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLToolModel)})},
-messageSends: ["allSelectors", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._availableClassNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.HLToolModel)})},
-messageSends: ["availableClassNames", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._availablePackageNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.HLToolModel)})},
-messageSends: ["availablePackageNames", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackages",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._availablePackageNames();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availablePackages",{},smalltalk.HLToolModel)})},
-messageSends: ["availablePackageNames", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocols",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._availableProtocolsFor_(self._selectedClass());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availableProtocols",{},smalltalk.HLToolModel)})},
-messageSends: ["availableProtocolsFor:", "environment", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._commitPackage_(self._selectedPackage());
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage",{},smalltalk.HLToolModel)})},
-messageSends: ["commitPackage:", "environment", "selectedPackage"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compilationProtocol",
-fn: function (){
-var self=this;
-var currentProtocol;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-currentProtocol=self._selectedProtocol();
-$1=currentProtocol;
-if(($receiver = $1) == nil || $receiver == undefined){
-currentProtocol=self._unclassifiedProtocol();
-currentProtocol;
-} else {
-$1;
-};
-$2=self._selectedMethod();
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-currentProtocol=_st(self._selectedMethod())._protocol();
-currentProtocol;
-};
-$4=_st(currentProtocol).__eq(self._allProtocol());
-if(smalltalk.assert($4)){
-$3=self._unclassifiedProtocol();
-} else {
-$3=currentProtocol;
-};
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"compilationProtocol",{currentProtocol:currentProtocol},smalltalk.HLToolModel)})},
-messageSends: ["selectedProtocol", "ifNil:", "unclassifiedProtocol", "ifNotNil:", "selectedMethod", "protocol", "ifTrue:ifFalse:", "=", "allProtocol"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassComment:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._compileClassComment_for_(aString,self._selectedClass());
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassComment:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["compileClassComment:for:", "environment", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassDefinition:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._compileClassDefinition_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["compileClassDefinition:", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethod:",
-fn: function (aString){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-self._withCompileErrorHandling_((function(){
-return smalltalk.withContext(function($ctx2) {
-method=_st(self._environment())._compileMethod_for_protocol_(aString,self._selectedClass(),self._compilationProtocol());
-method;
-return self._selectedMethod_(method);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString,method:method},smalltalk.HLToolModel)})},
-messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "environment", "selectedClass", "compilationProtocol", "selectedMethod:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClassTo:",
-fn: function (aClassName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._copyClass_to_(_st(self._selectedClass())._theNonMetaClass(),aClassName);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"copyClassTo:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "copyClass:to:", "environment", "theNonMetaClass", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleCompileError:",
-fn: function (anError){
-var self=this;
-function $HLCompileErrorRaised(){return smalltalk.HLCompileErrorRaised||(typeof HLCompileErrorRaised=="undefined"?nil:HLCompileErrorRaised)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLCompileErrorRaised())._new();
-_st($1)._error_(anError);
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"handleCompileError:",{anError:anError},smalltalk.HLToolModel)})},
-messageSends: ["announce:", "announcer", "error:", "new", "yourself"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleParseError:",
-fn: function (anError){
-var self=this;
-var split,line,column,messageToInsert;
-function $HLParseErrorRaised(){return smalltalk.HLParseErrorRaised||(typeof HLParseErrorRaised=="undefined"?nil:HLParseErrorRaised)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-split=_st(_st(anError)._messageText())._tokenize_(" : ");
-messageToInsert=_st(split)._second();
-split=_st(_st(split)._first())._copyFrom_to_((21),_st(_st(split)._first())._size());
-split=_st(split)._tokenize_(" column ");
-line=_st(split)._first();
-column=_st(split)._second();
-$1=_st($HLParseErrorRaised())._new();
-_st($1)._line_(_st(line)._asNumber());
-_st($1)._column_(_st(column)._asNumber());
-_st($1)._message_(messageToInsert);
-_st($1)._error_(anError);
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"handleParseError:",{anError:anError,split:split,line:line,column:column,messageToInsert:messageToInsert},smalltalk.HLToolModel)})},
-messageSends: ["tokenize:", "messageText", "second", "copyFrom:to:", "first", "size", "announce:", "announcer", "line:", "new", "asNumber", "column:", "message:", "error:", "yourself"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleUnkownVariableError:",
-fn: function (anError){
-var self=this;
-function $HLUnknownVariableErrorRaised(){return smalltalk.HLUnknownVariableErrorRaised||(typeof HLUnknownVariableErrorRaised=="undefined"?nil:HLUnknownVariableErrorRaised)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLUnknownVariableErrorRaised())._new();
-_st($1)._error_(anError);
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"handleUnkownVariableError:",{anError:anError},smalltalk.HLToolModel)})},
-messageSends: ["announce:", "announcer", "error:", "new", "yourself"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isToolModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isToolModel",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClassToPackage:",
-fn: function (aPackageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._moveClass_toPackage_(_st(self._selectedClass())._theNonMetaClass(),aPackageName);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveClassToPackage:",{aPackageName:aPackageName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveClass:toPackage:", "environment", "theNonMetaClass", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethodToClass:",
-fn: function (aClassName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._moveMethod_toClass_(self._selectedMethod(),aClassName);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethodToClass:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveMethod:toClass:", "environment", "selectedMethod"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethodToProtocol:",
-fn: function (aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._moveMethod_toProtocol_(self._selectedMethod(),aProtocol);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethodToProtocol:",{aProtocol:aProtocol},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveMethod:toProtocol:", "environment", "selectedMethod"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "openClassNamed:",
-fn: function (aString){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-class_=_st(self._environment())._classNamed_(aString);
-class_;
-self._selectedPackage_(_st(class_)._package());
-return self._selectedClass_(class_);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"openClassNamed:",{aString:aString,class_:class_},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "classNamed:", "environment", "selectedPackage:", "package", "selectedClass:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._packages();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.HLToolModel)})},
-messageSends: ["packages", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._manager())._confirm_ifTrue_("Do you REALLY want to remove class ".__comma(_st(self._selectedClass())._name()),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._environment())._removeClass_(self._selectedClass());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", "manager", ",", "name", "selectedClass", "removeClass:", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._manager())._confirm_ifTrue_(_st(_st("Do you REALLY want to remove method ".__comma(_st(_st(self._selectedMethod())._methodClass())._name())).__comma(" >> #")).__comma(_st(self._selectedMethod())._selector()),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._environment())._removeMethod_(self._selectedMethod());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", "manager", ",", "name", "methodClass", "selectedMethod", "selector", "removeMethod:", "environment"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._manager())._confirm_ifTrue_("Do you REALLY want to remove protocol ".__comma(self._selectedProtocol()),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._environment())._removeProtocol_from_(self._selectedProtocol(),self._selectedClass());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeProtocol",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", "manager", ",", "selectedProtocol", "removeProtocol:from:", "environment", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameClassTo:",
-fn: function (aClassName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._renameClass_to_(_st(self._selectedClass())._theNonMetaClass(),aClassName);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renameClassTo:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "renameClass:to:", "environment", "theNonMetaClass", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameProtocolTo:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._renameProtocol_to_in_(self._selectedProtocol(),aString,self._selectedClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renameProtocolTo:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "renameProtocol:to:in:", "environment", "selectedProtocol", "selectedClass"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "save:",
-fn: function (aString){
-var self=this;
-function $HLSourceCodeSaved(){return smalltalk.HLSourceCodeSaved||(typeof HLSourceCodeSaved=="undefined"?nil:HLSourceCodeSaved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self._announcer())._announce_(_st($HLSourceCodeSaved())._new());
-$1=self._shouldCompileClassDefinition_(aString);
-if(smalltalk.assert($1)){
-self._compileClassDefinition_(aString);
-} else {
-self._compileMethod_(aString);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"save:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["announce:", "announcer", "new", "ifTrue:ifFalse:", "shouldCompileClassDefinition:", "compileClassDefinition:", "compileMethod:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "saveSourceCode",
-fn: function (){
-var self=this;
-function $HLSaveSourceCode(){return smalltalk.HLSaveSourceCode||(typeof HLSaveSourceCode=="undefined"?nil:HLSaveSourceCode)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLSaveSourceCode())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"saveSourceCode",{},smalltalk.HLToolModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedClass",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedClass:",
-fn: function (aClass){
-var self=this;
-function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(_st(self._selectedClass()).__eq(aClass))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aClass)._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(self["@selectedClass"]).__eq(aClass);
-if(smalltalk.assert($3)){
-self._selectedProtocol_(nil);
-};
-$4=aClass;
-if(($receiver = $4) == nil || $receiver == undefined){
-self["@selectedClass"]=nil;
-self["@selectedClass"];
-} else {
-self._selectedPackage_(_st(_st(aClass)._theNonMetaClass())._package());
-$5=self._showInstance();
-if(smalltalk.assert($5)){
-self["@selectedClass"]=_st(aClass)._theNonMetaClass();
-self["@selectedClass"];
-} else {
-self["@selectedClass"]=_st(aClass)._theMetaClass();
-self["@selectedClass"];
-};
-};
-self._selectedProtocol_(nil);
-return _st(self._announcer())._announce_(_st($HLClassSelected())._on_(self._selectedClass()));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedClass:",{aClass:aClass},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "and:", "=", "selectedClass", "isNil", "withChangesDo:", "selectedProtocol:", "ifNil:ifNotNil:", "selectedPackage:", "package", "theNonMetaClass", "ifTrue:ifFalse:", "showInstance", "theMetaClass", "announce:", "announcer", "on:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._selectedClass();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-$1=_st(_st(self._selectedClass())._methodDictionary())._at_ifAbsent_(self["@selectedSelector"],(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedMethod",{},smalltalk.HLToolModel)})},
-messageSends: ["ifNotNil:", "selectedClass", "at:ifAbsent:", "methodDictionary"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedMethod:",
-fn: function (aCompiledMethod){
-var self=this;
-function $HLMethodSelected(){return smalltalk.HLMethodSelected||(typeof HLMethodSelected=="undefined"?nil:HLMethodSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self["@selectedSelector"]).__eq(aCompiledMethod);
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=aCompiledMethod;
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@selectedSelector"]=nil;
-self["@selectedSelector"];
-} else {
-self["@selectedClass"]=_st(aCompiledMethod)._methodClass();
-self["@selectedClass"];
-self["@selectedPackage"]=_st(_st(self["@selectedClass"])._theNonMetaClass())._package();
-self["@selectedPackage"];
-self["@selectedSelector"]=_st(aCompiledMethod)._selector();
-self["@selectedSelector"];
-};
-return _st(self._announcer())._announce_(_st($HLMethodSelected())._on_(aCompiledMethod));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedMethod:",{aCompiledMethod:aCompiledMethod},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "ifNil:ifNotNil:", "methodClass", "package", "theNonMetaClass", "selector", "announce:", "announcer", "on:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedPackage"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedPackage",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedPackage:",
-fn: function (aPackage){
-var self=this;
-function $HLPackageSelected(){return smalltalk.HLPackageSelected||(typeof HLPackageSelected=="undefined"?nil:HLPackageSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self["@selectedPackage"]).__eq(aPackage);
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@selectedPackage"]=aPackage;
-self["@selectedPackage"];
-self._selectedClass_(nil);
-return _st(self._announcer())._announce_(_st($HLPackageSelected())._on_(aPackage));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedPackage:",{aPackage:aPackage},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "selectedClass:", "announce:", "announcer", "on:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedProtocol"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedProtocol",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedProtocol:",
-fn: function (aString){
-var self=this;
-function $HLProtocolSelected(){return smalltalk.HLProtocolSelected||(typeof HLProtocolSelected=="undefined"?nil:HLProtocolSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self["@selectedProtocol"]).__eq(aString);
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@selectedProtocol"]=aString;
-self["@selectedProtocol"];
-self._selectedMethod_(nil);
-return _st(self._announcer())._announce_(_st($HLProtocolSelected())._on_(aString));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedProtocol:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "selectedMethod:", "announce:", "announcer", "on:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldCompileClassDefinition:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._selectedClass())._isNil())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aString)._match_("^[A-Z]");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldCompileClassDefinition:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["or:", "isNil", "selectedClass", "match:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unclassifiedProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "as yet unclassified";
-}, function($ctx1) {$ctx1.fill(self,"unclassifiedProtocol",{},smalltalk.HLToolModel)})},
-messageSends: []}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withCompileErrorHandling:",
-fn: function (aBlock){
-var self=this;
-function $ParseError(){return smalltalk.ParseError||(typeof ParseError=="undefined"?nil:ParseError)}
-function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
-function $CompilerError(){return smalltalk.CompilerError||(typeof CompilerError=="undefined"?nil:CompilerError)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._evaluate_on_do_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._environment())._evaluate_on_do_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._environment())._evaluate_on_do_(aBlock,$ParseError(),(function(ex){
-return smalltalk.withContext(function($ctx4) {
-return self._handleParseError_(ex);
-}, function($ctx4) {$ctx4.fillBlock({ex:ex},$ctx3,3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}),$UnknownVariableError(),(function(ex){
-return smalltalk.withContext(function($ctx3) {
-return self._handleUnkownVariableError_(ex);
-}, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,4)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$CompilerError(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return self._handleCompileError_(ex);
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,5)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withCompileErrorHandling:",{aBlock:aBlock},smalltalk.HLToolModel)})},
-messageSends: ["evaluate:on:do:", "environment", "handleParseError:", "handleUnkownVariableError:", "handleCompileError:"]}),
-smalltalk.HLToolModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withHelperLabelled:do:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st("#helper"._asJQuery())._remove();
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._id_("helper");
-$2=_st($1)._with_(aString);
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_("body"._asJQuery());
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-return _st("#helper"._asJQuery())._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._valueWithTimeout_((10));
-return self}, function($ctx1) {$ctx1.fill(self,"withHelperLabelled:do:",{aString:aString,aBlock:aBlock},smalltalk.HLToolModel)})},
-messageSends: ["remove", "asJQuery", "appendToJQuery:", "id:", "div", "with:", "valueWithTimeout:", "value"]}),
-smalltalk.HLToolModel);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._environment_(anEnvironment);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anEnvironment:anEnvironment},smalltalk.HLToolModel.klass)})},
-messageSends: ["environment:", "new", "yourself"]}),
-smalltalk.HLToolModel.klass);
-
-
-smalltalk.addClass('HLProgressHandler', smalltalk.ProgressHandler, [], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:on:displaying:",
-fn: function (aBlock,aCollection,aString){
-var self=this;
-function $HLProgressWidget(){return smalltalk.HLProgressWidget||(typeof HLProgressWidget=="undefined"?nil:HLProgressWidget)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($HLProgressWidget())._default())._do_on_displaying_(aBlock,aCollection,aString);
-return self}, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString},smalltalk.HLProgressHandler)})},
-messageSends: ["do:on:displaying:", "default"]}),
-smalltalk.HLProgressHandler);
-
-
-
-smalltalk.addClass('HLTabWidget', smalltalk.Widget, ['widget', 'label', 'root'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activate",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._manager())._activate_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"activate",{},smalltalk.HLTabWidget)})},
-messageSends: ["activate:", "manager"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._manager())._addTab_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"add",{},smalltalk.HLTabWidget)})},
-messageSends: ["addTab:", "manager"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._widget())._tabClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLTabWidget)})},
-messageSends: ["tabClass", "widget"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st(self._label())._size()).__gt((20));
-if(smalltalk.assert($2)){
-$1=_st(_st(self._label())._first_((20))).__comma("...");
-} else {
-$1=self._label();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLTabWidget)})},
-messageSends: ["ifTrue:ifFalse:", ">", "size", "label", ",", "first:"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._widget())._canHaveFocus();
-if(smalltalk.assert($1)){
-_st(self._widget())._focus();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLTabWidget)})},
-messageSends: ["ifTrue:", "canHaveFocus", "widget", "focus"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hide",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@root"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(_st(self["@root"])._asJQuery())._css_put_("visibility","hidden");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"hide",{},smalltalk.HLTabWidget)})},
-messageSends: ["ifNotNil:", "css:put:", "asJQuery"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._manager())._activeTab()).__eq(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLTabWidget)})},
-messageSends: ["=", "activeTab", "manager"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@label"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLTabWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@label"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"label:",{aString:aString},smalltalk.HLTabWidget)})},
-messageSends: []}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "manager",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLManager())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLTabWidget)})},
-messageSends: ["current"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._widget())._registerBindings();
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindings",{},smalltalk.HLTabWidget)})},
-messageSends: ["registerBindings", "widget"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self._widget())._unregister();
-$1=self["@root"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(_st(self["@root"])._asJQuery())._remove();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.HLTabWidget)})},
-messageSends: ["unregister", "widget", "ifNotNil:", "remove", "asJQuery"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("tab");
-$2=_st($1)._yourself();
-self["@root"]=$2;
-self._renderTab();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLTabWidget)})},
-messageSends: ["class:", "div", "yourself", "renderTab"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self["@root"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._class_("amber_box");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._widget())._renderOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTab",{},smalltalk.HLTabWidget)})},
-messageSends: ["contents:", "class:", "div", "with:", "renderOn:", "widget"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@root"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._appendToJQuery_("body"._asJQuery());
-} else {
-_st(_st(self["@root"])._asJQuery())._css_put_("visibility","visible");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.HLTabWidget)})},
-messageSends: ["ifNil:ifNotNil:", "appendToJQuery:", "asJQuery", "css:put:"]}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "widget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@widget"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"widget",{},smalltalk.HLTabWidget)})},
-messageSends: []}),
-smalltalk.HLTabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "widget:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@widget"]=aWidget;
-return self}, function($ctx1) {$ctx1.fill(self,"widget:",{aWidget:aWidget},smalltalk.HLTabWidget)})},
-messageSends: []}),
-smalltalk.HLTabWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:labelled:",
-fn: function (aWidget,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._widget_(aWidget);
-_st($2)._label_(aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:labelled:",{aWidget:aWidget,aString:aString},smalltalk.HLTabWidget.klass)})},
-messageSends: ["widget:", "new", "label:", "yourself"]}),
-smalltalk.HLTabWidget.klass);
-
-
-smalltalk.addClass('HLWidget', smalltalk.Widget, ['wrapper'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindKeyDown:keyUp:",
-fn: function (keyDownBlock,keyUpBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._wrapper())._asJQuery();
-_st($1)._keydown_(keyDownBlock);
-$2=_st($1)._keyup_(keyUpBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"bindKeyDown:keyUp:",{keyDownBlock:keyDownBlock,keyUpBlock:keyUpBlock},smalltalk.HLWidget)})},
-messageSends: ["keydown:", "asJQuery", "wrapper", "keyup:"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLWidget)})},
-messageSends: []}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:ifTrue:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._manager())._confirm_ifTrue_(aString,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"confirm:ifTrue:",{aString:aString,aBlock:aBlock},smalltalk.HLWidget)})},
-messageSends: ["confirm:ifTrue:", "manager"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute:",
-fn: function (aCommand){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st($HLManager())._current())._keyBinder();
-_st($1)._activate();
-$2=_st($1)._applyBinding_(_st(aCommand)._asBinding());
-return self}, function($ctx1) {$ctx1.fill(self,"execute:",{aCommand:aCommand},smalltalk.HLWidget)})},
-messageSends: ["activate", "keyBinder", "current", "applyBinding:", "asBinding"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "manager",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLManager())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"manager",{},smalltalk.HLWidget)})},
-messageSends: ["current"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "openAsTab",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-function $HLTabWidget(){return smalltalk.HLTabWidget||(typeof HLTabWidget=="undefined"?nil:HLTabWidget)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($HLManager())._current())._addTab_(_st($HLTabWidget())._on_labelled_(self,_st(self._class())._tabLabel()));
-return self}, function($ctx1) {$ctx1.fill(self,"openAsTab",{},smalltalk.HLWidget)})},
-messageSends: ["addTab:", "current", "on:labelled:", "tabLabel", "class"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._wrapper();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-_st(_st(self._wrapper())._asJQuery())._empty();
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-return self._renderContentOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,2)})}))._appendToJQuery_(_st(self._wrapper())._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLWidget)})},
-messageSends: ["ifNil:", "wrapper", "empty", "asJQuery", "appendToJQuery:", "renderContentOn:"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._registerBindingsOn_(_st(_st(self._manager())._keyBinder())._bindings());
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindings",{},smalltalk.HLWidget)})},
-messageSends: ["registerBindingsOn:", "bindings", "keyBinder", "manager"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindingsOn:",
-fn: function (aBindingGroup){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindingsOn:",{aBindingGroup:aBindingGroup},smalltalk.HLWidget)})},
-messageSends: []}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLWidget)})},
-messageSends: []}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@wrapper"]=_st(html)._div();
-_st((function(renderer){
-return smalltalk.withContext(function($ctx2) {
-return self._renderContentOn_(renderer);
-}, function($ctx2) {$ctx2.fillBlock({renderer:renderer},$ctx1,1)})}))._appendToJQuery_(_st(self["@wrapper"])._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLWidget)})},
-messageSends: ["div", "appendToJQuery:", "renderContentOn:", "asJQuery"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "request:do:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._manager())._request_do_(aString,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"request:do:",{aString:aString,aBlock:aBlock},smalltalk.HLWidget)})},
-messageSends: ["request:do:", "manager"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "request:value:do:",
-fn: function (aString,valueString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._manager())._request_value_do_(aString,valueString,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"request:value:do:",{aString:aString,valueString:valueString,aBlock:aBlock},smalltalk.HLWidget)})},
-messageSends: ["request:value:do:", "manager"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._tabClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLWidget)})},
-messageSends: ["tabClass", "class"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unbindKeyDownKeyUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._wrapper())._asJQuery();
-_st($1)._unbind_("keydown");
-$2=_st($1)._unbind_("keyup");
-return self}, function($ctx1) {$ctx1.fill(self,"unbindKeyDownKeyUp",{},smalltalk.HLWidget)})},
-messageSends: ["unbind:", "asJQuery", "wrapper"]}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLWidget)})},
-messageSends: []}),
-smalltalk.HLWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "wrapper",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@wrapper"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"wrapper",{},smalltalk.HLWidget)})},
-messageSends: []}),
-smalltalk.HLWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLWidget.klass)})},
-messageSends: []}),
-smalltalk.HLWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "openAsTab",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-function $HLTabWidget(){return smalltalk.HLTabWidget||(typeof HLTabWidget=="undefined"?nil:HLTabWidget)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($HLManager())._current())._addTab_(_st($HLTabWidget())._on_labelled_(self._new(),self._tabLabel()));
-return self}, function($ctx1) {$ctx1.fill(self,"openAsTab",{},smalltalk.HLWidget.klass)})},
-messageSends: ["addTab:", "current", "on:labelled:", "new", "tabLabel"]}),
-smalltalk.HLWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLWidget.klass)})},
-messageSends: []}),
-smalltalk.HLWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Tab";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLWidget.klass)})},
-messageSends: []}),
-smalltalk.HLWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (500);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLWidget.klass)})},
-messageSends: []}),
-smalltalk.HLWidget.klass);
-
-
-smalltalk.addClass('HLFocusableWidget', smalltalk.HLWidget, [], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "blur",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._wrapper())._asJQuery())._blur();
-return self}, function($ctx1) {$ctx1.fill(self,"blur",{},smalltalk.HLFocusableWidget)})},
-messageSends: ["blur", "asJQuery", "wrapper"]}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLFocusableWidget)})},
-messageSends: []}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._wrapper())._asJQuery())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLFocusableWidget)})},
-messageSends: ["focus", "asJQuery", "wrapper"]}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focusClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "focused";
-}, function($ctx1) {$ctx1.fill(self,"focusClass",{},smalltalk.HLFocusableWidget)})},
-messageSends: []}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._wrapper())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._wrapper())._asJQuery())._hasClass_(self._focusClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasFocus",{},smalltalk.HLFocusableWidget)})},
-messageSends: ["and:", "notNil", "wrapper", "hasClass:", "asJQuery", "focusClass"]}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLFocusableWidget)})},
-messageSends: []}),
-smalltalk.HLFocusableWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st(html)._div();
-_st($1)._class_("hl_widget");
-$2=_st($1)._yourself();
-self["@wrapper"]=$2;
-_st(self["@wrapper"])._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._renderContentOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$3=self["@wrapper"];
-_st($3)._at_put_("tabindex","0");
-_st($3)._onBlur_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._wrapper())._asJQuery())._removeClass_(self._focusClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$4=_st($3)._onFocus_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._wrapper())._asJQuery())._addClass_(self._focusClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLFocusableWidget)})},
-messageSends: ["class:", "div", "yourself", "with:", "renderContentOn:", "at:put:", "onBlur:", "removeClass:", "asJQuery", "wrapper", "focusClass", "onFocus:", "addClass:"]}),
-smalltalk.HLFocusableWidget);
-
-
-
-smalltalk.addClass('HLListWidget', smalltalk.HLFocusableWidget, ['items', 'selectedItem', 'mapping'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateFirstListItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._activateListItem_(_st(_st(_st(self["@wrapper"])._asJQuery())._find_("li.inactive"))._eq_((0)));
-return self}, function($ctx1) {$ctx1.fill(self,"activateFirstListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "eq:", "find:", "asJQuery"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-self._activateListItem_(_st(_st(self["@mapping"])._at_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._asJQuery());
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"activateItem:",{anObject:anObject},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "asJQuery", "at:ifAbsent:"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateListItem:",
-fn: function (aListItem){
-var self=this;
-var item;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(aListItem)._get_((0));
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-_st(_st(_st(aListItem)._parent())._children())._removeClass_("active");
-_st(aListItem)._addClass_("active");
-self._ensureVisible_(aListItem);
-item=_st(self._items())._at_(_st(_st(aListItem)._attr_("list-data"))._asNumber());
-$3=_st(self._selectedItem()).__eq_eq(item);
-if(! smalltalk.assert($3)){
-self._selectItem_(item);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{aListItem:aListItem,item:item},smalltalk.HLListWidget)})},
-messageSends: ["ifNil:", "get:", "removeClass:", "children", "parent", "addClass:", "ensureVisible:", "at:", "items", "asNumber", "attr:", "ifFalse:", "==", "selectedItem", "selectItem:"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateNextListItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._activateListItem_(_st(_st(_st(self._wrapper())._asJQuery())._find_("li.active"))._next());
-_st(_st(_st(_st(self._wrapper())._asJQuery())._find_(" .active"))._get())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._activateFirstListItem();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "next", "find:", "asJQuery", "wrapper", "ifEmpty:", "get", "activateFirstListItem"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activatePreviousListItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._activateListItem_(_st(_st(_st(self._wrapper())._asJQuery())._find_("li.active"))._prev());
-return self}, function($ctx1) {$ctx1.fill(self,"activatePreviousListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "prev", "find:", "asJQuery", "wrapper"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClassForItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"cssClassForItem:",{anObject:anObject},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultItems",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultItems",{},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ensureVisible:",
-fn: function (aListItem){
-var self=this;
-var parent,position;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-position=self._positionOf_(aListItem);
-parent=_st(aListItem)._parent();
-$1=_st(_st(_st(aListItem)._position())._top()).__lt((0));
-if(smalltalk.assert($1)){
-_st(_st(parent)._get_((0)))._scrollTop_(_st(_st(_st(_st(parent)._get_((0)))._scrollTop()).__plus(_st(_st(aListItem)._position())._top())).__minus((10)));
-};
-$2=_st(_st(_st(_st(aListItem)._position())._top()).__plus(_st(aListItem)._height())).__gt(_st(parent)._height());
-if(smalltalk.assert($2)){
-_st(_st(parent)._get_((0)))._scrollTop_(_st(_st(_st(_st(_st(parent)._get_((0)))._scrollTop()).__plus(_st(aListItem)._height())).__minus(_st(_st(parent)._height()).__minus(_st(_st(aListItem)._position())._top()))).__plus((10)));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"ensureVisible:",{aListItem:aListItem,parent:parent,position:position},smalltalk.HLListWidget)})},
-messageSends: ["positionOf:", "parent", "ifTrue:", "<", "top", "position", "scrollTop:", "get:", "-", "+", "scrollTop", ">", "height"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.HLListWidget.superclass.fn.prototype._focus.apply(_st(self), []);
-$1=_st(self._items())._isEmpty();
-if(! smalltalk.assert($1)){
-$2=self._selectedItem();
-if(($receiver = $2) == nil || $receiver == undefined){
-self._activateFirstListItem();
-} else {
-$2;
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLListWidget)})},
-messageSends: ["focus", "ifFalse:", "isEmpty", "items", "ifNil:", "selectedItem", "activateFirstListItem"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLListWidget.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@mapping"]=_st($Dictionary())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLListWidget)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "items",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@items"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@items"]=self._defaultItems();
-$1=self["@items"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"items",{},smalltalk.HLListWidget)})},
-messageSends: ["ifNil:", "defaultItems"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "items:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@items"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"items:",{aCollection:aCollection},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "listCssClassForItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self._selectedItem()).__eq(anObject);
-if(smalltalk.assert($2)){
-$1="active";
-} else {
-$1="inactive";
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"listCssClassForItem:",{anObject:anObject},smalltalk.HLListWidget)})},
-messageSends: ["ifTrue:ifFalse:", "=", "selectedItem"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "positionOf:",
-fn: function (aListItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-    	return aListItem.parent().children().get().indexOf(aListItem.get(0)) + 1
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"positionOf:",{aListItem:aListItem},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-smalltalk.HLListWidget.superclass.fn.prototype._refresh.apply(_st(self), []);
-self._ensureVisible_(_st(_st(self["@mapping"])._at_ifAbsent_(self._selectedItem(),(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._asJQuery());
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLListWidget)})},
-messageSends: ["refresh", "ensureVisible:", "asJQuery", "at:ifAbsent:", "selectedItem"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerMappingFrom:to:",
-fn: function (anObject,aTag){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@mapping"])._at_put_(anObject,aTag);
-return self}, function($ctx1) {$ctx1.fill(self,"registerMappingFrom:to:",{anObject:anObject,aTag:aTag},smalltalk.HLListWidget)})},
-messageSends: ["at:put:"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st(html)._ul();
-_st($1)._class_("nav nav-pills nav-stacked");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._renderListOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$3=_st(html)._div();
-_st($3)._class_("pane_actions form-actions");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._renderButtonsOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._setupKeyBindings();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLListWidget)})},
-messageSends: ["class:", "ul", "with:", "renderListOn:", "div", "renderButtonsOn:", "setupKeyBindings"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItem:on:",
-fn: function (anObject,html){
-var self=this;
-var li;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-li=_st(html)._li();
-self._registerMappingFrom_to_(anObject,li);
-$1=li;
-_st($1)._at_put_("list-data",_st(_st(self._items())._indexOf_(anObject))._asString());
-_st($1)._class_(self._listCssClassForItem_(anObject));
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._a();
-_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._tag_("i"))._class_(self._cssClassForItem_(anObject));
-return self._renderItemLabel_on_(anObject,html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._activateListItem_(_st(li)._asJQuery());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItem:on:",{anObject:anObject,html:html,li:li},smalltalk.HLListWidget)})},
-messageSends: ["li", "registerMappingFrom:to:", "at:put:", "asString", "indexOf:", "items", "class:", "listCssClassForItem:", "with:", "a", "tag:", "cssClassForItem:", "renderItemLabel:on:", "onClick:", "activateListItem:", "asJQuery"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (anObject,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st(anObject)._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{anObject:anObject,html:html},smalltalk.HLListWidget)})},
-messageSends: ["with:", "asString"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderListOn:",
-fn: function (html){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self["@mapping"]=_st($Dictionary())._new();
-_st(self._items())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderItem_on_(each,html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderListOn:",{html:html},smalltalk.HLListWidget)})},
-messageSends: ["new", "do:", "items", "renderItem:on:"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectedItem_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{anObject:anObject},smalltalk.HLListWidget)})},
-messageSends: ["selectedItem:"]}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedItem"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedItem",{},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectedItem"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"selectedItem:",{anObject:anObject},smalltalk.HLListWidget)})},
-messageSends: []}),
-smalltalk.HLListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupKeyBindings",
-fn: function (){
-var self=this;
-function $HLRepeatedKeyDownHandler(){return smalltalk.HLRepeatedKeyDownHandler||(typeof HLRepeatedKeyDownHandler=="undefined"?nil:HLRepeatedKeyDownHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLRepeatedKeyDownHandler())._on_(self);
-_st($1)._whileKeyDown_do_((38),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._activatePreviousListItem();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st($1)._whileKeyDown_do_((40),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._activateNextListItem();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$2=_st($1)._rebindKeys();
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLListWidget)})},
-messageSends: ["whileKeyDown:do:", "on:", "activatePreviousListItem", "activateNextListItem", "rebindKeys"]}),
-smalltalk.HLListWidget);
-
-
-
-smalltalk.addClass('HLNavigationListWidget', smalltalk.HLListWidget, ['previous', 'next'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@next"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.HLNavigationListWidget)})},
-messageSends: []}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@next"]=aWidget;
-$1=_st(_st(aWidget)._previous()).__eq(self);
-if(! smalltalk.assert($1)){
-_st(aWidget)._previous_(self);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"next:",{aWidget:aWidget},smalltalk.HLNavigationListWidget)})},
-messageSends: ["ifFalse:", "=", "previous", "previous:"]}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._next();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self._next())._focus();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"nextFocus",{},smalltalk.HLNavigationListWidget)})},
-messageSends: ["ifNotNil:", "next", "focus"]}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@previous"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"previous",{},smalltalk.HLNavigationListWidget)})},
-messageSends: []}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@previous"]=aWidget;
-$1=_st(_st(aWidget)._next()).__eq(self);
-if(! smalltalk.assert($1)){
-_st(aWidget)._next_(self);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"previous:",{aWidget:aWidget},smalltalk.HLNavigationListWidget)})},
-messageSends: ["ifFalse:", "=", "next", "next:"]}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previousFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._previous();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self._previous())._focus();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"previousFocus",{},smalltalk.HLNavigationListWidget)})},
-messageSends: ["ifNotNil:", "previous", "focus"]}),
-smalltalk.HLNavigationListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupKeyBindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.HLNavigationListWidget.superclass.fn.prototype._setupKeyBindings.apply(_st(self), []);
-_st(_st(self._wrapper())._asJQuery())._keydown_((function(e){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(e)._which()).__eq((39));
-if(smalltalk.assert($1)){
-self._nextFocus();
-};
-$2=_st(_st(e)._which()).__eq((37));
-if(smalltalk.assert($2)){
-return self._previousFocus();
-};
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLNavigationListWidget)})},
-messageSends: ["setupKeyBindings", "keydown:", "asJQuery", "wrapper", "ifTrue:", "=", "which", "nextFocus", "previousFocus"]}),
-smalltalk.HLNavigationListWidget);
-
-
-
-smalltalk.addClass('HLToolListWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateListItem:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLToolListWidget.superclass.fn.prototype._activateListItem_.apply(_st(self), [anItem]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{anItem:anItem},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "model", "activateListItem:"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateNextListItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLToolListWidget.superclass.fn.prototype._activateNextListItem.apply(_st(self), []);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "model", "activateNextListItem"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activatePreviousListItem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLToolListWidget.superclass.fn.prototype._activatePreviousListItem.apply(_st(self), []);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activatePreviousListItem",{},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "model", "activatePreviousListItem"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commandCategory",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commandCategory",{},smalltalk.HLToolListWidget)})},
-messageSends: ["label"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "List";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLToolListWidget)})},
-messageSends: []}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "menuCommands",
-fn: function (){
-var self=this;
-function $HLToolCommand(){return smalltalk.HLToolCommand||(typeof HLToolCommand=="undefined"?nil:HLToolCommand)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st($HLToolCommand())._concreteClasses())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._isValidFor_(self._model());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._for_(self._model());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})})))._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(each)._category()).__eq(self._commandCategory()))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(each)._isAction())._and_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(each)._isActive();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"menuCommands",{},smalltalk.HLToolListWidget)})},
-messageSends: ["select:", "collect:", "concreteClasses", "isValidFor:", "model", "for:", "and:", "=", "category", "commandCategory", "isAction", "isActive"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLToolListWidget)})},
-messageSends: []}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aBrowserModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@model"]=aBrowserModel;
-$1=self;
-_st($1)._observeSystem();
-$2=_st($1)._observeModel();
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aBrowserModel:aBrowserModel},smalltalk.HLToolListWidget)})},
-messageSends: ["observeSystem", "observeModel"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLToolListWidget)})},
-messageSends: []}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLToolListWidget)})},
-messageSends: []}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._renderHeadOn_(html);
-smalltalk.HLToolListWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLToolListWidget)})},
-messageSends: ["renderHeadOn:", "renderContentOn:"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderHeadOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("list-label");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(html)._with_(self._label());
-return self._renderMenuOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderHeadOn:",{html:html},smalltalk.HLToolListWidget)})},
-messageSends: ["class:", "div", "with:", "label", "renderMenuOn:"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMenuOn:",
-fn: function (html){
-var self=this;
-var commands;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$5,$6,$7,$9,$10,$8,$4;
-commands=self._menuCommands();
-$1=_st(commands)._isEmpty();
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(html)._div();
-_st($3)._class_("btn-group cog");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$5=_st(html)._a();
-_st($5)._class_("btn dropdown-toggle");
-_st($5)._at_put_("data-toggle","dropdown");
-$6=_st($5)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(html)._tag_("i"))._class_("icon-cog");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$6;
-$7=_st(html)._ul();
-_st($7)._class_("dropdown-menu pull-right");
-$8=_st($7)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._menuCommands())._do_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(html)._li())._with_((function(){
-return smalltalk.withContext(function($ctx5) {
-$9=_st(html)._a();
-_st($9)._with_(_st(each)._menuLabel());
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx6) {
-return self._execute_(each);
-}, function($ctx6) {$ctx6.fillBlock({},$ctx5,7)})}));
-return $10;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4,6)})}));
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,5)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-return $8;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderMenuOn:",{html:html,commands:commands},smalltalk.HLToolListWidget)})},
-messageSends: ["menuCommands", "ifTrue:", "isEmpty", "class:", "div", "with:", "a", "at:put:", "tag:", "ul", "do:", "li", "menuLabel", "onClick:", "execute:"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedItem:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLToolListWidget.superclass.fn.prototype._selectedItem_.apply(_st(self), [anItem]);
-self._updateMenu();
-return self}, function($ctx1) {$ctx1.fill(self,"selectedItem:",{anItem:anItem},smalltalk.HLToolListWidget)})},
-messageSends: ["selectedItem:", "updateMenu"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLToolListWidget.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st(_st(self._model())._announcer())._unsubscribe_(self);
-_st(_st(self._model())._systemAnnouncer())._unsubscribe_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLToolListWidget)})},
-messageSends: ["unregister", "unsubscribe:", "announcer", "model", "systemAnnouncer"]}),
-smalltalk.HLToolListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateMenu",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(self._wrapper())._asJQuery())._find_(".cog"))._remove();
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-return self._renderMenuOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_(_st(_st(self._wrapper())._asJQuery())._find_(".list-label"));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMenu",{},smalltalk.HLToolListWidget)})},
-messageSends: ["remove", "find:", "asJQuery", "wrapper", "appendToJQuery:", "renderMenuOn:"]}),
-smalltalk.HLToolListWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._model_(aModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aModel:aModel},smalltalk.HLToolListWidget.klass)})},
-messageSends: ["model:", "new", "yourself"]}),
-smalltalk.HLToolListWidget.klass);
-
-
-smalltalk.addClass('HLTabListWidget', smalltalk.HLListWidget, ['callback'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "callback",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@callback"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"callback",{},smalltalk.HLTabListWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "callback:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@callback"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"callback:",{aBlock:aBlock},smalltalk.HLTabListWidget)})},
-messageSends: []}),
-smalltalk.HLTabListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (aTab,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st(aTab)._label());
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aTab:aTab,html:html},smalltalk.HLTabListWidget)})},
-messageSends: ["with:", "label"]}),
-smalltalk.HLTabListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTabListWidget.superclass.fn.prototype._selectItem_.apply(_st(self), [aTab]);
-_st(self._callback())._value_(aTab);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aTab:aTab},smalltalk.HLTabListWidget)})},
-messageSends: ["selectItem:", "value:", "callback"]}),
-smalltalk.HLTabListWidget);
-
-
-
-smalltalk.addClass('HLManager', smalltalk.HLWidget, ['tabs', 'activeTab', 'environment', 'history'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activate:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._keyBinder())._flushBindings();
-_st(aTab)._registerBindings();
-self["@activeTab"]=aTab;
-$1=self;
-_st($1)._refresh();
-_st($1)._addToHistory_(aTab);
-$2=_st($1)._show_(aTab);
-return self}, function($ctx1) {$ctx1.fill(self,"activate:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["flushBindings", "keyBinder", "registerBindings", "refresh", "addToHistory:", "show:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activeTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@activeTab"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"activeTab",{},smalltalk.HLManager)})},
-messageSends: []}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addTab:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._tabs())._add_(aTab);
-self._activate_(aTab);
-return self}, function($ctx1) {$ctx1.fill(self,"addTab:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["add:", "tabs", "activate:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addToHistory:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._removeFromHistory_(aTab);
-_st(self._history())._add_(aTab);
-return self}, function($ctx1) {$ctx1.fill(self,"addToHistory:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["removeFromHistory:", "add:", "history"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:ifFalse:",
-fn: function (aString,aBlock){
-var self=this;
-function $HLConfirmationWidget(){return smalltalk.HLConfirmationWidget||(typeof HLConfirmationWidget=="undefined"?nil:HLConfirmationWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLConfirmationWidget())._new();
-_st($1)._confirmationString_(aString);
-_st($1)._cancelBlock_(aBlock);
-$2=_st($1)._show();
-return self}, function($ctx1) {$ctx1.fill(self,"confirm:ifFalse:",{aString:aString,aBlock:aBlock},smalltalk.HLManager)})},
-messageSends: ["confirmationString:", "new", "cancelBlock:", "show"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:ifTrue:",
-fn: function (aString,aBlock){
-var self=this;
-function $HLConfirmationWidget(){return smalltalk.HLConfirmationWidget||(typeof HLConfirmationWidget=="undefined"?nil:HLConfirmationWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLConfirmationWidget())._new();
-_st($1)._confirmationString_(aString);
-_st($1)._actionBlock_(aBlock);
-$2=_st($1)._show();
-return self}, function($ctx1) {$ctx1.fill(self,"confirm:ifTrue:",{aString:aString,aBlock:aBlock},smalltalk.HLManager)})},
-messageSends: ["confirmationString:", "new", "actionBlock:", "show"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultEnvironment",
-fn: function (){
-var self=this;
-var parent;
-function $Environment(){return smalltalk.Environment||(typeof Environment=="undefined"?nil:Environment)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st(window)._opener();
-if(($receiver = $1) == nil || $receiver == undefined){
-parent=_st(window)._parent();
-} else {
-parent=$1;
-};
-$2=_st(_st(parent)._isNil())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(parent)._at_("smalltalk"))._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-if(smalltalk.assert($2)){
-$3=_st($Environment())._new();
-return $3;
-};
-$4=_st(_st(_st(parent)._at_("global_smalltalk"))._at_("Environment"))._new();
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"defaultEnvironment",{parent:parent},smalltalk.HLManager)})},
-messageSends: ["ifNil:", "opener", "parent", "ifTrue:", "or:", "isNil", "at:", "new"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@environment"]=self._defaultEnvironment();
-$1=self["@environment"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLManager)})},
-messageSends: ["ifNil:", "defaultEnvironment"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLManager)})},
-messageSends: []}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "history",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@history"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@history"]=_st($OrderedCollection())._new();
-$1=self["@history"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"history",{},smalltalk.HLManager)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "history:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@history"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"history:",{aCollection:aCollection},smalltalk.HLManager)})},
-messageSends: []}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $HLErrorHandler(){return smalltalk.HLErrorHandler||(typeof HLErrorHandler=="undefined"?nil:HLErrorHandler)}
-function $HLProgressHandler(){return smalltalk.HLProgressHandler||(typeof HLProgressHandler=="undefined"?nil:HLProgressHandler)}
-function $HLInspector(){return smalltalk.HLInspector||(typeof HLInspector=="undefined"?nil:HLInspector)}
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-function $ProgressHandler(){return smalltalk.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLManager.superclass.fn.prototype._initialize.apply(_st(self), []);
-_st($HLErrorHandler())._register();
-_st($HLProgressHandler())._register();
-self._registerInspector_($HLInspector());
-self._registerErrorHandler_(_st($ErrorHandler())._current());
-self._registerProgressHandler_(_st($ProgressHandler())._current());
-_st(self._keyBinder())._setupEvents();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLManager)})},
-messageSends: ["initialize", "register", "registerInspector:", "registerErrorHandler:", "current", "registerProgressHandler:", "setupEvents", "keyBinder"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyBinder",
-fn: function (){
-var self=this;
-function $HLKeyBinder(){return smalltalk.HLKeyBinder||(typeof HLKeyBinder=="undefined"?nil:HLKeyBinder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLKeyBinder())._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyBinder",{},smalltalk.HLManager)})},
-messageSends: ["current"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(".navbar"._asJQuery())._remove();
-self._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLManager)})},
-messageSends: ["remove", "asJQuery", "appendToJQuery:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerErrorHandler:",
-fn: function (anErrorHandler){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._registerErrorHandler_(anErrorHandler);
-return self}, function($ctx1) {$ctx1.fill(self,"registerErrorHandler:",{anErrorHandler:anErrorHandler},smalltalk.HLManager)})},
-messageSends: ["registerErrorHandler:", "environment"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerInspector:",
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._registerInspector_(anInspector);
-return self}, function($ctx1) {$ctx1.fill(self,"registerInspector:",{anInspector:anInspector},smalltalk.HLManager)})},
-messageSends: ["registerInspector:", "environment"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerProgressHandler:",
-fn: function (aProgressHandler){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._registerProgressHandler_(aProgressHandler);
-return self}, function($ctx1) {$ctx1.fill(self,"registerProgressHandler:",{aProgressHandler:aProgressHandler},smalltalk.HLManager)})},
-messageSends: ["registerProgressHandler:", "environment"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeActiveTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._removeTab_(self._activeTab());
-return self}, function($ctx1) {$ctx1.fill(self,"removeActiveTab",{},smalltalk.HLManager)})},
-messageSends: ["removeTab:", "activeTab"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeFromHistory:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._history_(_st(self._history())._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq_eq(aTab);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"removeFromHistory:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["history:", "reject:", "history", "=="]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeTab:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._tabs())._includes_(aTab);
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._removeFromHistory_(aTab);
-_st(self._tabs())._remove_(aTab);
-_st(self._keyBinder())._flushBindings();
-_st(aTab)._remove();
-self._refresh();
-_st(self._history())._ifNotEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._history())._last())._activate();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeTab:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["ifFalse:", "includes:", "tabs", "removeFromHistory:", "remove:", "flushBindings", "keyBinder", "remove", "refresh", "ifNotEmpty:", "history", "activate", "last"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderAddOn:",
-fn: function (html){
-var self=this;
-function $HLWidget(){return smalltalk.HLWidget||(typeof HLWidget=="undefined"?nil:HLWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$7,$8,$6,$2;
-$1=_st(html)._li();
-_st($1)._class_("dropdown");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._a();
-_st($3)._class_("dropdown-toggle");
-_st($3)._at_put_("data-toggle","dropdown");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(html)._with_("Open...");
-return _st(_st(html)._tag_("b"))._class_("caret");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4;
-$5=_st(html)._ul();
-_st($5)._class_("dropdown-menu");
-$6=_st($5)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(_st(_st($HLWidget())._withAllSubclasses())._select_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(each)._canBeOpenAsTab();
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,4)})})))._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(a)._tabPriority()).__lt(_st(b)._tabPriority());
-}, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(html)._li())._with_((function(){
-return smalltalk.withContext(function($ctx5) {
-$7=_st(html)._a();
-_st($7)._with_(_st(each)._tabLabel());
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx6) {
-return _st(each)._openAsTab();
-}, function($ctx6) {$ctx6.fillBlock({},$ctx5,8)})}));
-return $8;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4,7)})}));
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,6)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderAddOn:",{html:html},smalltalk.HLManager)})},
-messageSends: ["class:", "li", "with:", "a", "at:put:", "tag:", "ul", "do:", "sorted:", "select:", "withAllSubclasses", "canBeOpenAsTab", "<", "tabPriority", "tabLabel", "onClick:", "openAsTab"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-$1=_st(html)._div();
-_st($1)._class_("navbar navbar-fixed-top");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._div();
-_st($3)._class_("navbar-inner");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renderTabsOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLManager)})},
-messageSends: ["class:", "div", "with:", "renderTabsOn:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTabsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$6,$5,$8,$9,$10,$11,$7,$2;
-$1=_st(html)._ul();
-_st($1)._class_("nav");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._tabs())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-$3=_st(html)._li();
-$4=$3;
-$6=_st(each)._isActive();
-if(smalltalk.assert($6)){
-$5="active";
-} else {
-$5="inactive";
-};
-_st($4)._class_($5);
-$7=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx4) {
-$8=_st(html)._a();
-_st($8)._with_((function(){
-return smalltalk.withContext(function($ctx5) {
-_st(_st(_st(html)._tag_("i"))._class_("close"))._onClick_((function(){
-return smalltalk.withContext(function($ctx6) {
-return self._removeTab_(each);
-}, function($ctx6) {$ctx6.fillBlock({},$ctx5,7)})}));
-$9=_st(html)._span();
-_st($9)._class_(_st(each)._cssClass());
-$10=_st($9)._with_(_st(each)._displayLabel());
-return $10;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4,6)})}));
-$11=_st($8)._onClick_((function(){
-return smalltalk.withContext(function($ctx5) {
-return _st(each)._activate();
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4,8)})}));
-return $11;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-return $7;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-return self._renderAddOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabsOn:",{html:html},smalltalk.HLManager)})},
-messageSends: ["class:", "ul", "with:", "do:", "tabs", "li", "ifTrue:ifFalse:", "isActive", "a", "onClick:", "tag:", "removeTab:", "span", "cssClass", "displayLabel", "activate", "renderAddOn:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "request:do:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._request_value_do_(aString,"",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"request:do:",{aString:aString,aBlock:aBlock},smalltalk.HLManager)})},
-messageSends: ["request:value:do:"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "request:value:do:",
-fn: function (aString,valueString,aBlock){
-var self=this;
-function $HLRequestWidget(){return smalltalk.HLRequestWidget||(typeof HLRequestWidget=="undefined"?nil:HLRequestWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLRequestWidget())._new();
-_st($1)._confirmationString_(aString);
-_st($1)._actionBlock_(aBlock);
-_st($1)._value_(valueString);
-$2=_st($1)._show();
-return self}, function($ctx1) {$ctx1.fill(self,"request:value:do:",{aString:aString,valueString:valueString,aBlock:aBlock},smalltalk.HLManager)})},
-messageSends: ["confirmationString:", "new", "actionBlock:", "value:", "show"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._tabs())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._hide();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=aTab;
-_st($1)._show();
-$2=_st($1)._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["do:", "tabs", "hide", "show", "focus"]}),
-smalltalk.HLManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabs",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@tabs"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@tabs"]=_st($OrderedCollection())._new();
-$1=self["@tabs"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tabs",{},smalltalk.HLManager)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLManager);
-
-
-smalltalk.HLManager.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearKeydownEvent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st("body"._asJQuery())._keydown_((function(e){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(_st(e)._keyCode()).__gt_eq((37)))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(e)._keyCode()).__lt_eq((40));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-if(smalltalk.assert($1)){
-return false;
-};
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"clearKeydownEvent",{},smalltalk.HLManager.klass)})},
-messageSends: ["keydown:", "asJQuery", "ifTrue:", "and:", ">=", "keyCode", "<="]}),
-smalltalk.HLManager.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=_st(self._basicNew())._initialize();
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.HLManager.klass)})},
-messageSends: ["ifNil:", "initialize", "basicNew"]}),
-smalltalk.HLManager.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._current())._appendToJQuery_("body"._asJQuery());
-self._clearKeydownEvent();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLManager.klass)})},
-messageSends: ["appendToJQuery:", "current", "asJQuery", "clearKeydownEvent"]}),
-smalltalk.HLManager.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.HLManager.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.HLManager.klass);
-
-
-smalltalk.addClass('HLModalWidget', smalltalk.HLWidget, [], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._remove();
-return self}, function($ctx1) {$ctx1.fill(self,"cancel",{},smalltalk.HLModalWidget)})},
-messageSends: ["remove"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._remove();
-return self}, function($ctx1) {$ctx1.fill(self,"confirm",{},smalltalk.HLModalWidget)})},
-messageSends: ["remove"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLModalWidget)})},
-messageSends: []}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"hasButtons",{},smalltalk.HLModalWidget)})},
-messageSends: []}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(".dialog"._asJQuery())._removeClass_("active");
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st("#overlay"._asJQuery())._remove();
-return _st(".dialog"._asJQuery())._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithTimeout_((300));
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.HLModalWidget)})},
-messageSends: ["removeClass:", "asJQuery", "valueWithTimeout:", "remove"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-var confirmButton;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$2;
-$1=_st(html)._div();
-_st($1)._class_("buttons");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._button();
-_st($3)._class_("button");
-_st($3)._with_("Cancel");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._cancel();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4;
-$5=_st(html)._button();
-_st($5)._class_("button default");
-_st($5)._with_("Confirm");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._confirm();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-confirmButton=$6;
-return confirmButton;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(_st(confirmButton)._asJQuery())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html,confirmButton:confirmButton},smalltalk.HLModalWidget)})},
-messageSends: ["class:", "div", "with:", "button", "onClick:", "cancel", "confirm", "focus", "asJQuery"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-var confirmButton;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2;
-_st(_st(html)._div())._id_("overlay");
-$1=_st(html)._div();
-_st($1)._class_("dialog ".__comma(self._cssClass()));
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._renderMainOn_(html);
-$3=self._hasButtons();
-if(smalltalk.assert($3)){
-return self._renderButtonsOn_(html);
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(".dialog"._asJQuery())._addClass_("active");
-self._setupKeyBindings();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html,confirmButton:confirmButton},smalltalk.HLModalWidget)})},
-messageSends: ["id:", "div", "class:", ",", "cssClass", "with:", "renderMainOn:", "ifTrue:", "hasButtons", "renderButtonsOn:", "addClass:", "asJQuery", "setupKeyBindings"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMainOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLModalWidget)})},
-messageSends: []}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupKeyBindings",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(".dialog"._asJQuery())._keyup_((function(e){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(e)._keyCode()).__eq(_st(_st($String())._esc())._asciiValue());
-if(smalltalk.assert($1)){
-return self._cancel();
-};
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLModalWidget)})},
-messageSends: ["keyup:", "asJQuery", "ifTrue:", "=", "keyCode", "asciiValue", "esc", "cancel"]}),
-smalltalk.HLModalWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.HLModalWidget)})},
-messageSends: ["appendToJQuery:", "asJQuery"]}),
-smalltalk.HLModalWidget);
-
-
-
-smalltalk.addClass('HLConfirmationWidget', smalltalk.HLModalWidget, ['confirmationString', 'actionBlock', 'cancelBlock'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "actionBlock",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@actionBlock"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"actionBlock",{},smalltalk.HLConfirmationWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "actionBlock:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@actionBlock"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"actionBlock:",{aBlock:aBlock},smalltalk.HLConfirmationWidget)})},
-messageSends: []}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._cancelBlock())._value();
-smalltalk.HLConfirmationWidget.superclass.fn.prototype._cancel.apply(_st(self), []);
-return self}, function($ctx1) {$ctx1.fill(self,"cancel",{},smalltalk.HLConfirmationWidget)})},
-messageSends: ["value", "cancelBlock", "cancel"]}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancelBlock",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@cancelBlock"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cancelBlock",{},smalltalk.HLConfirmationWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancelBlock:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@cancelBlock"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"cancelBlock:",{aBlock:aBlock},smalltalk.HLConfirmationWidget)})},
-messageSends: []}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLConfirmationWidget.superclass.fn.prototype._confirm.apply(_st(self), []);
-_st(self._actionBlock())._value();
-return self}, function($ctx1) {$ctx1.fill(self,"confirm",{},smalltalk.HLConfirmationWidget)})},
-messageSends: ["confirm", "value", "actionBlock"]}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirmationString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@confirmationString"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="Confirm";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"confirmationString",{},smalltalk.HLConfirmationWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirmationString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@confirmationString"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"confirmationString:",{aString:aString},smalltalk.HLConfirmationWidget)})},
-messageSends: []}),
-smalltalk.HLConfirmationWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMainOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(html)._span())._with_(self._confirmationString());
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLConfirmationWidget)})},
-messageSends: ["with:", "span", "confirmationString"]}),
-smalltalk.HLConfirmationWidget);
-
-
-
-smalltalk.addClass('HLRequestWidget', smalltalk.HLConfirmationWidget, ['input', 'value'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLRequestWidget.superclass.fn.prototype._confirm.apply(_st(self), []);
-_st(self._actionBlock())._value_(_st(_st(self["@input"])._asJQuery())._val());
-return self}, function($ctx1) {$ctx1.fill(self,"confirm",{},smalltalk.HLRequestWidget)})},
-messageSends: ["confirm", "value:", "actionBlock", "val", "asJQuery"]}),
-smalltalk.HLRequestWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "large";
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLRequestWidget)})},
-messageSends: []}),
-smalltalk.HLRequestWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMainOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLRequestWidget.superclass.fn.prototype._renderMainOn_.apply(_st(self), [html]);
-self["@input"]=_st(html)._textarea();
-_st(_st(self["@input"])._asJQuery())._val_(self._value());
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLRequestWidget)})},
-messageSends: ["renderMainOn:", "textarea", "val:", "asJQuery", "value"]}),
-smalltalk.HLRequestWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@value"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.HLRequestWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLRequestWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@value"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{aString:aString},smalltalk.HLRequestWidget)})},
-messageSends: []}),
-smalltalk.HLRequestWidget);
-
-
-
-smalltalk.addClass('HLProgressWidget', smalltalk.HLModalWidget, ['progressBars', 'visible'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addProgressBar:",
-fn: function (aProgressBar){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._show();
-_st(self._progressBars())._add_(aProgressBar);
-_st(aProgressBar)._appendToJQuery_(_st(_st(self._wrapper())._asJQuery())._find_(".dialog"));
-return self}, function($ctx1) {$ctx1.fill(self,"addProgressBar:",{aProgressBar:aProgressBar},smalltalk.HLProgressWidget)})},
-messageSends: ["show", "add:", "progressBars", "appendToJQuery:", "find:", "asJQuery", "wrapper"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:on:displaying:",
-fn: function (aBlock,aCollection,aString){
-var self=this;
-var progressBar;
-function $HLProgressBarWidget(){return smalltalk.HLProgressBarWidget||(typeof HLProgressBarWidget=="undefined"?nil:HLProgressBarWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLProgressBarWidget())._new();
-_st($1)._parent_(self);
-_st($1)._label_(aString);
-_st($1)._workBlock_(aBlock);
-_st($1)._collection_(aCollection);
-$2=_st($1)._yourself();
-progressBar=$2;
-self._addProgressBar_(progressBar);
-_st(progressBar)._start();
-return self}, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString,progressBar:progressBar},smalltalk.HLProgressWidget)})},
-messageSends: ["parent:", "new", "label:", "workBlock:", "collection:", "yourself", "addProgressBar:", "start"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "flush",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._progressBars())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._removeProgressBar_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"flush",{},smalltalk.HLProgressWidget)})},
-messageSends: ["do:", "progressBars", "removeProgressBar:"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"hasButtons",{},smalltalk.HLProgressWidget)})},
-messageSends: []}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isVisible",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@visible"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isVisible",{},smalltalk.HLProgressWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "progressBars",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@progressBars"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@progressBars"]=_st($OrderedCollection())._new();
-$1=self["@progressBars"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"progressBars",{},smalltalk.HLProgressWidget)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isVisible();
-if(smalltalk.assert($1)){
-self["@visible"]=false;
-self["@visible"];
-smalltalk.HLProgressWidget.superclass.fn.prototype._remove.apply(_st(self), []);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.HLProgressWidget)})},
-messageSends: ["ifTrue:", "isVisible", "remove"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeProgressBar:",
-fn: function (aProgressBar){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._progressBars())._remove_ifAbsent_(aProgressBar,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(_st(_st(aProgressBar)._wrapper())._asJQuery())._remove();
-_st(self._progressBars())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeProgressBar:",{aProgressBar:aProgressBar},smalltalk.HLProgressWidget)})},
-messageSends: ["remove:ifAbsent:", "progressBars", "remove", "asJQuery", "wrapper", "ifEmpty:"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMainOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._progressBars())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(html)._with_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLProgressWidget)})},
-messageSends: ["do:", "progressBars", "with:"]}),
-smalltalk.HLProgressWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isVisible();
-if(! smalltalk.assert($1)){
-self["@visible"]=true;
-self["@visible"];
-smalltalk.HLProgressWidget.superclass.fn.prototype._show.apply(_st(self), []);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.HLProgressWidget)})},
-messageSends: ["ifFalse:", "isVisible", "show"]}),
-smalltalk.HLProgressWidget);
-
-
-smalltalk.HLProgressWidget.klass.iVarNames = ['default'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "default",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@default"]=self._new();
-$1=self["@default"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"default",{},smalltalk.HLProgressWidget.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLProgressWidget.klass);
-
-
-smalltalk.addClass('HLTabSelectionWidget', smalltalk.HLModalWidget, ['tabs', 'tabList', 'selectedTab', 'selectCallback', 'cancelCallback', 'confirmCallback'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTabSelectionWidget.superclass.fn.prototype._cancel.apply(_st(self), []);
-_st(self._cancelCallback())._value();
-return self}, function($ctx1) {$ctx1.fill(self,"cancel",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["cancel", "value", "cancelCallback"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancelCallback",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@cancelCallback"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cancelCallback",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancelCallback:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@cancelCallback"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"cancelCallback:",{aBlock:aBlock},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTabSelectionWidget.superclass.fn.prototype._confirm.apply(_st(self), []);
-_st(self._confirmCallback())._value_(self._selectedTab());
-return self}, function($ctx1) {$ctx1.fill(self,"confirm",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["confirm", "value:", "confirmCallback", "selectedTab"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirmCallback",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@confirmCallback"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"confirmCallback",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirmCallback:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@confirmCallback"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"confirmCallback:",{aBlock:aBlock},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTabSelectionWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-_st(self._tabList())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["renderContentOn:", "focus", "tabList"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMainOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("title");
-$2=_st($1)._with_("Tab selection");
-_st(html)._with_(self._tabList());
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["class:", "div", "with:", "tabList"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTab:on:",
-fn: function (aTab,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._span();
-_st($1)._class_(_st(aTab)._cssClass());
-$2=_st($1)._with_(_st(aTab)._label());
-return self}, function($ctx1) {$ctx1.fill(self,"renderTab:on:",{aTab:aTab,html:html},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["class:", "span", "cssClass", "with:", "label"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTabsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._tabs())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(html)._li())._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(html)._a();
-_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._renderTab_on_(each,html);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectTab_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-return $2;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabsOn:",{html:html},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["do:", "tabs", "with:", "li", "a", "renderTab:on:", "onClick:", "selectTab:"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectCallback",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectCallback"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})});
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectCallback",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectCallback:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectCallback"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"selectCallback:",{aBlock:aBlock},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectTab:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectedTab_(aTab);
-_st(self._selectCallback())._value_(aTab);
-return self}, function($ctx1) {$ctx1.fill(self,"selectTab:",{aTab:aTab},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["selectedTab:", "value:", "selectCallback"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedTab"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedTab",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedTab:",
-fn: function (aTab){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectedTab"]=aTab;
-return self}, function($ctx1) {$ctx1.fill(self,"selectedTab:",{aTab:aTab},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupKeyBindings",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.HLTabSelectionWidget.superclass.fn.prototype._setupKeyBindings.apply(_st(self), []);
-_st(".dialog"._asJQuery())._keyup_((function(e){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(e)._keyCode()).__eq(_st(_st($String())._cr())._asciiValue());
-if(smalltalk.assert($1)){
-return self._confirm();
-};
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["setupKeyBindings", "keyup:", "asJQuery", "ifTrue:", "=", "keyCode", "asciiValue", "cr", "confirm"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabList",
-fn: function (){
-var self=this;
-function $HLTabListWidget(){return smalltalk.HLTabListWidget||(typeof HLTabListWidget=="undefined"?nil:HLTabListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self["@tabList"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@tabList"]=_st($HLTabListWidget())._new();
-self["@tabList"];
-$2=self["@tabList"];
-_st($2)._callback_((function(tab){
-return smalltalk.withContext(function($ctx2) {
-self._selectTab_(tab);
-return _st(self["@tabList"])._focus();
-}, function($ctx2) {$ctx2.fillBlock({tab:tab},$ctx1,2)})}));
-_st($2)._selectedItem_(self._selectedTab());
-$3=_st($2)._items_(self._tabs());
-$3;
-} else {
-$1;
-};
-$4=self["@tabList"];
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"tabList",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["ifNil:", "new", "callback:", "selectTab:", "focus", "selectedItem:", "selectedTab", "items:", "tabs"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@tabs"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=[];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tabs",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLTabSelectionWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabs:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@tabs"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"tabs:",{aCollection:aCollection},smalltalk.HLTabSelectionWidget)})},
-messageSends: []}),
-smalltalk.HLTabSelectionWidget);
-
-
-
-smalltalk.addClass('HLProgressBarWidget', smalltalk.HLWidget, ['label', 'parent', 'workBlock', 'collection', 'bar'], 'Helios-Core');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@collection"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@collection"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"collection:",{aCollection:aCollection},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "evaluateAt:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._updateProgress_(_st(_st(anInteger).__slash(_st(self._collection())._size())).__star((100)));
-$1=_st(anInteger).__lt_eq(_st(self._collection())._size());
-if(smalltalk.assert($1)){
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._workBlock())._value_(_st(self._collection())._at_(anInteger));
-return self._evaluateAt_(_st(anInteger).__plus((1)));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._valueWithTimeout_((10));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._valueWithTimeout_((500));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"evaluateAt:",{anInteger:anInteger},smalltalk.HLProgressBarWidget)})},
-messageSends: ["updateProgress:", "*", "/", "size", "collection", "ifTrue:ifFalse:", "<=", "valueWithTimeout:", "value:", "workBlock", "at:", "evaluateAt:", "+", "remove"]}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@label"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@label"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"label:",{aString:aString},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@parent"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parent",{},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parent:",
-fn: function (aProgress){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@parent"]=aProgress;
-return self}, function($ctx1) {$ctx1.fill(self,"parent:",{aProgress:aProgress},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._parent())._removeProgressBar_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.HLProgressBarWidget)})},
-messageSends: ["removeProgressBar:", "parent"]}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-_st(_st(html)._span())._with_(self._label());
-$1=_st(html)._div();
-_st($1)._class_("progress");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._div();
-_st($3)._class_("bar");
-$4=_st($3)._style_("width: 0%");
-self["@bar"]=$4;
-return self["@bar"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLProgressBarWidget)})},
-messageSends: ["with:", "span", "label", "class:", "div", "style:"]}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "start",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._evaluateAt_((1));
-return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.HLProgressBarWidget)})},
-messageSends: ["evaluateAt:"]}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateProgress:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@bar"])._asJQuery())._css_put_("width",_st(_st(anInteger)._asString()).__comma("%"));
-return self}, function($ctx1) {$ctx1.fill(self,"updateProgress:",{anInteger:anInteger},smalltalk.HLProgressBarWidget)})},
-messageSends: ["css:put:", "asJQuery", ",", "asString"]}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "workBlock",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@workBlock"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"workBlock",{},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "workBlock:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@workBlock"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"workBlock:",{aBlock:aBlock},smalltalk.HLProgressBarWidget)})},
-messageSends: []}),
-smalltalk.HLProgressBarWidget);
-
-
-smalltalk.HLProgressBarWidget.klass.iVarNames = ['default'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "default",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@default"]=self._new();
-$1=self["@default"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"default",{},smalltalk.HLProgressBarWidget.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLProgressBarWidget.klass);
-
-
-smalltalk.addClass('HLSUnit', smalltalk.HLWidget, [], 'Helios-Core');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLSUnit.klass)})},
-messageSends: []}),
-smalltalk.HLSUnit.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "sunit";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLSUnit.klass)})},
-messageSends: []}),
-smalltalk.HLSUnit.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "SUnit";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLSUnit.klass)})},
-messageSends: []}),
-smalltalk.HLSUnit.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (1000);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLSUnit.klass)})},
-messageSends: []}),
-smalltalk.HLSUnit.klass);
-
-})(global_smalltalk,global_nil,global__st);

File diff suppressed because it is too large
+ 162 - 159
js/Helios-Core.js


+ 0 - 776
js/Helios-Debugger.deploy.js

@@ -1,776 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Debugger');
-
-smalltalk.addClass('HLContextInspectorDecorator', smalltalk.Object, ['context'], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@context"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.HLContextInspectorDecorator)})},
-messageSends: []}),
-smalltalk.HLContextInspectorDecorator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromContext:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aContext;
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromContext:",{aContext:aContext},smalltalk.HLContextInspectorDecorator)})},
-messageSends: []}),
-smalltalk.HLContextInspectorDecorator);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables,inspectedContext;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-variables=_st($Dictionary())._new();
-inspectedContext=self._context();
-_st(variables)._addAll_(_st(inspectedContext)._locals());
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(inspectedContext)._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(inspectedContext)._isBlockContext();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-inspectedContext=_st(inspectedContext)._outerContext();
-inspectedContext;
-$1=inspectedContext;
-if(($receiver = $1) == nil || $receiver == undefined){
-return $1;
-} else {
-return _st(variables)._addAll_(_st(inspectedContext)._locals());
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$2=anInspector;
-_st($2)._setLabel_("Context");
-$3=_st($2)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables,inspectedContext:inspectedContext},smalltalk.HLContextInspectorDecorator)})},
-messageSends: ["new", "context", "addAll:", "locals", "whileTrue:", "and:", "notNil", "isBlockContext", "outerContext", "ifNotNil:", "setLabel:", "setVariables:"]}),
-smalltalk.HLContextInspectorDecorator);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromContext_(aContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aContext:aContext},smalltalk.HLContextInspectorDecorator.klass)})},
-messageSends: ["initializeFromContext:", "new", "yourself"]}),
-smalltalk.HLContextInspectorDecorator.klass);
-
-
-smalltalk.addClass('HLDebugger', smalltalk.HLFocusableWidget, ['model', 'stackListWidget', 'codeWidget', 'inspectorWidget'], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeWidget",
-fn: function (){
-var self=this;
-function $HLDebuggerCodeWidget(){return smalltalk.HLDebuggerCodeWidget||(typeof HLDebuggerCodeWidget=="undefined"?nil:HLDebuggerCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLDebuggerCodeWidget())._new();
-_st($3)._browserModel_(self._model());
-$4=_st($3)._yourself();
-self["@codeWidget"]=$4;
-$1=self["@codeWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLDebugger)})},
-messageSends: ["ifNil:", "browserModel:", "new", "model", "yourself"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._stackListWidget())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLDebugger)})},
-messageSends: ["focus", "stackListWidget"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromMethodContext:",
-fn: function (aMethodContext){
-var self=this;
-function $HLDebuggerModel(){return smalltalk.HLDebuggerModel||(typeof HLDebuggerModel=="undefined"?nil:HLDebuggerModel)}
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=_st($HLDebuggerModel())._on_(aMethodContext);
-self._observeModel();
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},smalltalk.HLDebugger)})},
-messageSends: ["on:", "observeModel"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectorWidget",
-fn: function (){
-var self=this;
-function $HLInspectorWidget(){return smalltalk.HLInspectorWidget||(typeof HLInspectorWidget=="undefined"?nil:HLInspectorWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@inspectorWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@inspectorWidget"]=_st($HLInspectorWidget())._new();
-$1=self["@inspectorWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspectorWidget",{},smalltalk.HLDebugger)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-function $HLDebuggerModel(){return smalltalk.HLDebuggerModel||(typeof HLDebuggerModel=="undefined"?nil:HLDebuggerModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@model"]=_st($HLDebuggerModel())._new();
-$1=self["@model"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLDebugger)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLDebuggerContextSelected(){return smalltalk.HLDebuggerContextSelected||(typeof HLDebuggerContextSelected=="undefined"?nil:HLDebuggerContextSelected)}
-function $HLDebuggerStepped(){return smalltalk.HLDebuggerStepped||(typeof HLDebuggerStepped=="undefined"?nil:HLDebuggerStepped)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._on_send_to_($HLDebuggerContextSelected(),"onContextSelected:",self);
-_st(_st(self._model())._announcer())._on_send_to_($HLDebuggerStepped(),"onContextSelected:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLDebugger)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onContextSelected:",
-fn: function (anAnnouncement){
-var self=this;
-function $HLContextInspectorDecorator(){return smalltalk.HLContextInspectorDecorator||(typeof HLContextInspectorDecorator=="undefined"?nil:HLContextInspectorDecorator)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._inspectorWidget())._inspect_(_st($HLContextInspectorDecorator())._on_(_st(anAnnouncement)._context()));
-return self}, function($ctx1) {$ctx1.fill(self,"onContextSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLDebugger)})},
-messageSends: ["inspect:", "inspectorWidget", "on:", "context"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindingsOn:",
-fn: function (aBindingGroup){
-var self=this;
-function $HLToolCommand(){return smalltalk.HLToolCommand||(typeof HLToolCommand=="undefined"?nil:HLToolCommand)}
-return smalltalk.withContext(function($ctx1) { 
-_st($HLToolCommand())._registerConcreteClassesOn_for_(aBindingGroup,self._model());
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindingsOn:",{aBindingGroup:aBindingGroup},smalltalk.HLDebugger)})},
-messageSends: ["registerConcreteClassesOn:for:", "model"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(self._stackListWidget(),_st($HLVerticalSplitter())._with_with_(self._codeWidget(),self._inspectorWidget()))));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLDebugger)})},
-messageSends: ["with:", "with:with:", "stackListWidget", "codeWidget", "inspectorWidget"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stackListWidget",
-fn: function (){
-var self=this;
-function $HLStackListWidget(){return smalltalk.HLStackListWidget||(typeof HLStackListWidget=="undefined"?nil:HLStackListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@stackListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLStackListWidget())._on_(self._model());
-_st($3)._next_(self._codeWidget());
-$4=_st($3)._yourself();
-self["@stackListWidget"]=$4;
-$1=self["@stackListWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"stackListWidget",{},smalltalk.HLDebugger)})},
-messageSends: ["ifNil:", "next:", "on:", "model", "codeWidget", "yourself"]}),
-smalltalk.HLDebugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLDebugger.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st(self._inspectorWidget())._unregister();
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLDebugger)})},
-messageSends: ["unregister", "inspectorWidget"]}),
-smalltalk.HLDebugger);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromMethodContext_(aMethodContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aMethodContext:aMethodContext},smalltalk.HLDebugger.klass)})},
-messageSends: ["initializeFromMethodContext:", "new", "yourself"]}),
-smalltalk.HLDebugger.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "debugger";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLDebugger.klass)})},
-messageSends: []}),
-smalltalk.HLDebugger.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Debugger";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLDebugger.klass)})},
-messageSends: []}),
-smalltalk.HLDebugger.klass);
-
-
-smalltalk.addClass('HLDebuggerCodeWidget', smalltalk.HLBrowserCodeWidget, [], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addStopAt:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@editor"])._setGutterMarker_gutter_value_(anInteger,"stops",_st(_st("<div class=\x22stop\x22></stop>"._asJQuery())._toArray())._first());
-return self}, function($ctx1) {$ctx1.fill(self,"addStopAt:",{anInteger:anInteger},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["setGutterMarker:gutter:value:", "first", "toArray", "asJQuery"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearHighlight",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._editor())._clearGutter_("stops");
-return self}, function($ctx1) {$ctx1.fill(self,"clearHighlight",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["clearGutter:", "editor"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._clearHighlight();
-smalltalk.HLDebuggerCodeWidget.superclass.fn.prototype._contents_.apply(_st(self), [aString]);
-return self}, function($ctx1) {$ctx1.fill(self,"contents:",{aString:aString},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["clearHighlight", "contents:"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editorOptions",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=smalltalk.HLDebuggerCodeWidget.superclass.fn.prototype._editorOptions.apply(_st(self), []);
-_st($2)._at_put_("gutters",["CodeMirror-linenumbers", "stops"]);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"editorOptions",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["at:put:", "editorOptions", "yourself"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlight",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._highlightNode_(_st(self._browserModel())._nextNode());
-return self}, function($ctx1) {$ctx1.fill(self,"highlight",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["highlightNode:", "nextNode", "browserModel"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightNode:",
-fn: function (aNode){
-var self=this;
-var token;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=aNode;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-token=_st(self._editor())._getTokenAt_(smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(aNode)._position())._x()).__minus((1))),"ch".__minus_gt(_st(_st(aNode)._position())._y())]));
-token;
-$2=self;
-_st($2)._clearHighlight();
-$3=_st($2)._addStopAt_(_st(_st(_st(aNode)._position())._x()).__minus((1)));
-$3;
-_st(self._editor())._setSelection_to_(smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(aNode)._position())._x()).__minus((1))),"ch".__minus_gt(_st(token)._start())]),smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(aNode)._position())._x()).__minus((1))),"ch".__minus_gt(_st(token)._end())]));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"highlightNode:",{aNode:aNode,token:token},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["ifNotNil:", "getTokenAt:", "editor", "->", "-", "x", "position", "y", "clearHighlight", "addStopAt:", "setSelection:to:", "start", "end"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeBrowserModel",
-fn: function (){
-var self=this;
-function $HLDebuggerContextSelected(){return smalltalk.HLDebuggerContextSelected||(typeof HLDebuggerContextSelected=="undefined"?nil:HLDebuggerContextSelected)}
-function $HLDebuggerStepped(){return smalltalk.HLDebuggerStepped||(typeof HLDebuggerStepped=="undefined"?nil:HLDebuggerStepped)}
-function $HLDebuggerWhere(){return smalltalk.HLDebuggerWhere||(typeof HLDebuggerWhere=="undefined"?nil:HLDebuggerWhere)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLDebuggerCodeWidget.superclass.fn.prototype._observeBrowserModel.apply(_st(self), []);
-_st(_st(self._browserModel())._announcer())._on_send_to_($HLDebuggerContextSelected(),"onContextSelected",self);
-_st(_st(self._browserModel())._announcer())._on_send_to_($HLDebuggerStepped(),"onContextSelected",self);
-_st(_st(self._browserModel())._announcer())._on_send_to_($HLDebuggerWhere(),"onContextSelected",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeBrowserModel",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["observeBrowserModel", "on:send:to:", "announcer", "browserModel"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onContextSelected",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._highlight();
-return self}, function($ctx1) {$ctx1.fill(self,"onContextSelected",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["highlight"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-
-
-smalltalk.addClass('HLDebuggerModel', smalltalk.HLToolModel, ['rootContext', 'currentContext', 'contexts'], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contexts",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@contexts"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contexts",{},smalltalk.HLDebuggerModel)})},
-messageSends: []}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@currentContext"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._currentContext_(self._rootContext());
-} else {
-$1;
-};
-$2=self["@currentContext"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"currentContext",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["ifNil:", "currentContext:", "rootContext"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentContext:",
-fn: function (aContext){
-var self=this;
-function $HLDebuggerContextSelected(){return smalltalk.HLDebuggerContextSelected||(typeof HLDebuggerContextSelected=="undefined"?nil:HLDebuggerContextSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._selectedMethod_(_st(aContext)._method());
-self["@currentContext"]=aContext;
-self["@currentContext"];
-$1=_st($HLDebuggerContextSelected())._new();
-_st($1)._context_(aContext);
-$2=_st($1)._yourself();
-return _st(self._announcer())._announce_($2);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"currentContext:",{aContext:aContext},smalltalk.HLDebuggerModel)})},
-messageSends: ["withChangesDo:", "selectedMethod:", "method", "announce:", "announcer", "context:", "new", "yourself"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeContexts",
-fn: function (){
-var self=this;
-var context;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self["@contexts"]=_st($OrderedCollection())._new();
-context=self._rootContext();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(context)._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self["@contexts"])._add_(context);
-context=_st(context)._outerContext();
-return context;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initializeContexts",{context:context},smalltalk.HLDebuggerModel)})},
-messageSends: ["new", "rootContext", "whileTrue:", "notNil", "add:", "outerContext"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromContext:",
-fn: function (aMethodContext){
-var self=this;
-function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
-return smalltalk.withContext(function($ctx1) { 
-self["@rootContext"]=_st($AIContext())._fromMethodContext_(aMethodContext);
-self._initializeContexts();
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromContext:",{aMethodContext:aMethodContext},smalltalk.HLDebuggerModel)})},
-messageSends: ["fromMethodContext:", "initializeContexts"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._currentContext())._interpreter();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["interpreter", "currentContext"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._interpreter())._node();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["node", "interpreter"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "restart",
-fn: function (){
-var self=this;
-function $HLDebuggerStepped(){return smalltalk.HLDebuggerStepped||(typeof HLDebuggerStepped=="undefined"?nil:HLDebuggerStepped)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._interpreter())._restart();
-$1=_st($HLDebuggerStepped())._new();
-_st($1)._context_(self._currentContext());
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["restart", "interpreter", "announce:", "announcer", "context:", "new", "currentContext", "yourself"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rootContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@rootContext"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"rootContext",{},smalltalk.HLDebuggerModel)})},
-messageSends: []}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stepOver",
-fn: function (){
-var self=this;
-function $HLDebuggerStepped(){return smalltalk.HLDebuggerStepped||(typeof HLDebuggerStepped=="undefined"?nil:HLDebuggerStepped)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._interpreter())._stepOver();
-$1=_st($HLDebuggerStepped())._new();
-_st($1)._context_(self._currentContext());
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["stepOver", "interpreter", "announce:", "announcer", "context:", "new", "currentContext", "yourself"]}),
-smalltalk.HLDebuggerModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "where",
-fn: function (){
-var self=this;
-function $HLDebuggerWhere(){return smalltalk.HLDebuggerWhere||(typeof HLDebuggerWhere=="undefined"?nil:HLDebuggerWhere)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._announcer())._announce_(_st($HLDebuggerWhere())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"where",{},smalltalk.HLDebuggerModel)})},
-messageSends: ["announce:", "announcer", "new"]}),
-smalltalk.HLDebuggerModel);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromContext_(aMethodContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aMethodContext:aMethodContext},smalltalk.HLDebuggerModel.klass)})},
-messageSends: ["initializeFromContext:", "new", "yourself"]}),
-smalltalk.HLDebuggerModel.klass);
-
-
-smalltalk.addClass('HLErrorHandler', smalltalk.ErrorHandler, [], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleError:",
-fn: function (anError){
-var self=this;
-function $HLDebugger(){return smalltalk.HLDebugger||(typeof HLDebugger=="undefined"?nil:HLDebugger)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-self._onErrorHandled();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($HLDebugger())._on_(_st(anError)._context()))._openAsTab();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(error){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($ErrorHandler())._new())._handleError_(error);
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.HLErrorHandler)})},
-messageSends: ["onErrorHandled", "on:do:", "openAsTab", "on:", "context", "handleError:", "new"]}),
-smalltalk.HLErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onErrorHandled",
-fn: function (){
-var self=this;
-function $HLProgressWidget(){return smalltalk.HLProgressWidget||(typeof HLProgressWidget=="undefined"?nil:HLProgressWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLProgressWidget())._default();
-_st($1)._flush();
-$2=_st($1)._remove();
-return self}, function($ctx1) {$ctx1.fill(self,"onErrorHandled",{},smalltalk.HLErrorHandler)})},
-messageSends: ["flush", "default", "remove"]}),
-smalltalk.HLErrorHandler);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleError:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._handleError_(anError);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.HLErrorHandler.klass)})},
-messageSends: ["handleError:", "new"]}),
-smalltalk.HLErrorHandler.klass);
-
-
-smalltalk.addClass('HLStackListWidget', smalltalk.HLToolListWidget, [], 'Helios-Debugger');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "items",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@items"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@items"]=_st(self._model())._contexts();
-$1=self["@items"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"items",{},smalltalk.HLStackListWidget)})},
-messageSends: ["ifNil:", "contexts", "model"]}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Call stack";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLStackListWidget)})},
-messageSends: []}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$7,$8,$2;
-$1=_st(html)._div();
-_st($1)._class_("debugger_bar");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._button();
-_st($3)._class_("btn restart");
-_st($3)._with_("Restart");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._restart();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4;
-$5=_st(html)._button();
-_st($5)._class_("btn where");
-_st($5)._with_("Where");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._where();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$6;
-$7=_st(html)._button();
-_st($7)._class_("btn stepOver");
-_st($7)._with_("Step over");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._stepOver();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-return $8;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLStackListWidget)})},
-messageSends: ["class:", "div", "with:", "button", "onClick:", "restart", "where", "stepOver"]}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "restart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._restart();
-return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.HLStackListWidget)})},
-messageSends: ["restart", "model"]}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._currentContext_(aContext);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aContext:aContext},smalltalk.HLStackListWidget)})},
-messageSends: ["currentContext:", "model"]}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stepOver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._stepOver();
-return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.HLStackListWidget)})},
-messageSends: ["stepOver", "model"]}),
-smalltalk.HLStackListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "where",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._where();
-return self}, function($ctx1) {$ctx1.fill(self,"where",{},smalltalk.HLStackListWidget)})},
-messageSends: ["where", "model"]}),
-smalltalk.HLStackListWidget);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Debugger.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Debugger", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Helios-Core", "amber_core/Helios-Workspace", "amber_core/Kernel-Exceptions"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Debugger');
+smalltalk.packages["Helios-Debugger"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLContextInspectorDecorator', smalltalk.Object, ['context'], 'Helios-Debugger');
 smalltalk.addMethod(
@@ -1015,4 +1016,4 @@ referencedClasses: []
 smalltalk.HLStackListWidget);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 9
js/Helios-Exceptions.deploy.js

@@ -1,9 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Exceptions');
-
-smalltalk.addClass('HLError', smalltalk.Error, [], 'Helios-Exceptions');
-
-
-smalltalk.addClass('HLChangeForbidden', smalltalk.HLError, [], 'Helios-Exceptions');
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Exceptions.js

@@ -1,9 +1,10 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Exceptions", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Exceptions"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Exceptions');
+smalltalk.packages["Helios-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLError', smalltalk.Error, [], 'Helios-Exceptions');
 
 
 smalltalk.addClass('HLChangeForbidden', smalltalk.HLError, [], 'Helios-Exceptions');
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1062
js/Helios-Inspector.deploy.js

@@ -1,1062 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Inspector');
-
-smalltalk.addClass('HLInspectorDisplayWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLInspectorDisplayWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorDisplayWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLInspectorDisplayWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorDisplayWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(html)._div())._with_(self._selectionDisplayString());
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspectorDisplayWidget)})},
-messageSends: ["with:", "div", "selectionDisplayString"]}),
-smalltalk.HLInspectorDisplayWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectionDisplayString",
-fn: function (){
-var self=this;
-var selection;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-selection=_st(self["@model"])._selection();
-$2=_st(_st(_st(self["@model"])._variables())._keys())._includes_(selection);
-if(smalltalk.assert($2)){
-$1=_st(_st(self["@model"])._instVarObjectAt_(selection))._printString();
-} else {
-$1="";
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectionDisplayString",{selection:selection},smalltalk.HLInspectorDisplayWidget)})},
-messageSends: ["selection", "ifTrue:ifFalse:", "includes:", "keys", "variables", "printString", "instVarObjectAt:"]}),
-smalltalk.HLInspectorDisplayWidget);
-
-
-
-smalltalk.addClass('HLInspectorModel', smalltalk.Object, ['announcer', 'environment', 'inspectee', 'code', 'variables', 'label', 'selection'], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "code",
-fn: function (){
-var self=this;
-function $HLCodeModel(){return smalltalk.HLCodeModel||(typeof HLCodeModel=="undefined"?nil:HLCodeModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@code"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@code"]=_st($HLCodeModel())._on_(self._environment());
-$1=self["@code"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"code",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:", "on:", "environment"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(_st($HLManager())._current())._environment();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:", "environment", "current"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:on:",
-fn: function (anObject,anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@inspectee"]=anObject;
-self["@variables"]=[];
-_st(self["@inspectee"])._inspectOn_(anInspector);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:on:",{anObject:anObject,anInspector:anInspector},smalltalk.HLInspectorModel)})},
-messageSends: ["inspectOn:"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectee",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@inspectee"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspectee",{},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectee:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@inspectee"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"inspectee:",{anObject:anObject},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instVarObjectAt:",
-fn: function (anInstVarName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._variables())._at_(anInstVarName);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"instVarObjectAt:",{anInstVarName:anInstVarName},smalltalk.HLInspectorModel)})},
-messageSends: ["at:", "variables"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@label"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(self._inspectee())._printString();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:", "printString", "inspectee"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@label"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"label:",{aString:aString},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyDown:",
-fn: function (anEvent){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-if(anEvent.ctrlKey) {
-		if(anEvent.keyCode === 80) { //ctrl+p
-			self._printIt();
-			anEvent.preventDefault();
-			return false;
-		}
-		if(anEvent.keyCode === 68) { //ctrl+d
-			self._doIt();
-			anEvent.preventDefault();
-			return false;
-		}
-		if(anEvent.keyCode === 73) { //ctrl+i
-			self._inspectIt();
-			anEvent.preventDefault();
-			return false;
-		}
-	};
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedInstVar:",
-fn: function (anInstVarName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selection_(anInstVarName);
-return self}, function($ctx1) {$ctx1.fill(self,"selectedInstVar:",{anInstVarName:anInstVarName},smalltalk.HLInspectorModel)})},
-messageSends: ["selection:"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedInstVarObject",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._instVarObjectAt_(self._selection());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedInstVarObject",{},smalltalk.HLInspectorModel)})},
-messageSends: ["instVarObjectAt:", "selection"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selection"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selection",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selection:",
-fn: function (anObject){
-var self=this;
-function $HLInstanceVariableSelected(){return smalltalk.HLInstanceVariableSelected||(typeof HLInstanceVariableSelected=="undefined"?nil:HLInstanceVariableSelected)}
-return smalltalk.withContext(function($ctx1) { 
-self["@selection"]=anObject;
-_st(self._announcer())._announce_(_st($HLInstanceVariableSelected())._on_(self["@selection"]));
-return self}, function($ctx1) {$ctx1.fill(self,"selection:",{anObject:anObject},smalltalk.HLInspectorModel)})},
-messageSends: ["announce:", "announcer", "on:"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subscribe:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aWidget)._subscribeTo_(self._announcer());
-return self}, function($ctx1) {$ctx1.fill(self,"subscribe:",{aWidget:aWidget},smalltalk.HLInspectorModel)})},
-messageSends: ["subscribeTo:", "announcer"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variables",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@variables"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st($Dictionary())._new();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variables",{},smalltalk.HLInspectorModel)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLInspectorModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variables:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variables"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"variables:",{aCollection:aCollection},smalltalk.HLInspectorModel)})},
-messageSends: []}),
-smalltalk.HLInspectorModel);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._environment_(anEnvironment);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anEnvironment:anEnvironment},smalltalk.HLInspectorModel.klass)})},
-messageSends: ["environment:", "new", "yourself"]}),
-smalltalk.HLInspectorModel.klass);
-
-
-smalltalk.addClass('HLInspectorVariablesWidget', smalltalk.HLNavigationListWidget, ['announcer', 'model', 'list', 'diveButton'], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultItems",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._variables();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultItems",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["variables"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["label", "model"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@model"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._variables()).__eq(self._items());
-if(! smalltalk.assert($1)){
-self._resetItems();
-smalltalk.HLInspectorVariablesWidget.superclass.fn.prototype._refresh.apply(_st(self), []);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["ifFalse:", "=", "variables", "items", "resetItems", "refresh"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-function $HLDiveRequested(){return smalltalk.HLDiveRequested||(typeof HLDiveRequested=="undefined"?nil:HLDiveRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._button();
-_st($1)._class_("btn");
-_st($1)._with_("Dive");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._announcer())._announce_(_st($HLDiveRequested())._new());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self["@diveButton"]=$2;
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["class:", "button", "with:", "onClick:", "announce:", "announcer", "new"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._renderHeadOn_(html);
-smalltalk.HLInspectorVariablesWidget.superclass.fn.prototype._renderContentOn_.apply(_st(self), [html]);
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["renderHeadOn:", "renderContentOn:"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderHeadOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("list-label");
-$2=_st($1)._with_(self._label());
-return self}, function($ctx1) {$ctx1.fill(self,"renderHeadOn:",{html:html},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["class:", "div", "with:", "label"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetItems",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@items"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"resetItems",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLInspectorVariablesWidget.superclass.fn.prototype._selectItem_.apply(_st(self), [anObject]);
-_st(self._model())._selectedInstVar_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{anObject:anObject},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["selectItem:", "selectedInstVar:", "model"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@model"])._selection();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selection",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["selection"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variables",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._variables())._keys();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variables",{},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["keys", "variables", "model"]}),
-smalltalk.HLInspectorVariablesWidget);
-
-
-
-smalltalk.addClass('HLInspectorWidget', smalltalk.HLWidget, ['model', 'variablesWidget', 'displayWidget', 'codeWidget'], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeWidget",
-fn: function (){
-var self=this;
-function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="undefined"?nil:HLCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLCodeWidget())._new();
-_st($3)._model_(_st(self["@model"])._code());
-_st($3)._receiver_(_st(self["@model"])._inspectee());
-$4=_st($3)._yourself();
-self["@codeWidget"]=$4;
-$1=self["@codeWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["ifNil:", "model:", "new", "code", "receiver:", "inspectee", "yourself"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayWidget",
-fn: function (){
-var self=this;
-function $HLInspectorDisplayWidget(){return smalltalk.HLInspectorDisplayWidget||(typeof HLInspectorDisplayWidget=="undefined"?nil:HLInspectorDisplayWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@displayWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLInspectorDisplayWidget())._new();
-_st($3)._model_(self._model());
-$4=_st($3)._yourself();
-self["@displayWidget"]=$4;
-$1=self["@displayWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"displayWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["ifNil:", "model:", "new", "model", "yourself"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLInspectorWidget.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._register();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["initialize", "register"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._model())._inspect_on_(anObject,self);
-$1=self;
-_st($1)._refreshVariablesWidget();
-$2=_st($1)._refreshDisplayWidget();
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.HLInspectorWidget)})},
-messageSends: ["inspect:on:", "model", "refreshVariablesWidget", "refreshDisplayWidget"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectee",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._inspectee();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspectee",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["inspectee", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectee:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._inspectee_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectee:",{anObject:anObject},smalltalk.HLInspectorWidget)})},
-messageSends: ["inspectee:", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["label", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-function $HLInspectorModel(){return smalltalk.HLInspectorModel||(typeof HLInspectorModel=="undefined"?nil:HLInspectorModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self._model_(_st($HLInspectorModel())._new());
-$1=self["@model"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["ifNil:", "model:", "new"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@model"]=aModel;
-_st(self._codeWidget())._model_(_st(aModel)._code());
-$1=self;
-_st($1)._observeCodeWidget();
-_st($1)._observeVariablesWidget();
-$2=_st($1)._observeModel();
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLInspectorWidget)})},
-messageSends: ["model:", "codeWidget", "code", "observeCodeWidget", "observeVariablesWidget", "observeModel"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeCodeWidget",
-fn: function (){
-var self=this;
-function $HLDoItExecuted(){return smalltalk.HLDoItExecuted||(typeof HLDoItExecuted=="undefined"?nil:HLDoItExecuted)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._codeWidget())._announcer())._on_do_($HLDoItExecuted(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._onDoneIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeCodeWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["on:do:", "announcer", "codeWidget", "onDoneIt"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLInstanceVariableSelected(){return smalltalk.HLInstanceVariableSelected||(typeof HLInstanceVariableSelected=="undefined"?nil:HLInstanceVariableSelected)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._on_send_to_($HLInstanceVariableSelected(),"onInstanceVariableSelected",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["on:send:to:", "announcer", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeVariablesWidget",
-fn: function (){
-var self=this;
-function $HLDiveRequested(){return smalltalk.HLDiveRequested||(typeof HLDiveRequested=="undefined"?nil:HLDiveRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._variablesWidget())._announcer())._on_do_($HLDiveRequested(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._onDive();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeVariablesWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["on:do:", "announcer", "variablesWidget", "onDive"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDive",
-fn: function (){
-var self=this;
-function $HLInspector(){return smalltalk.HLInspector||(typeof HLInspector=="undefined"?nil:HLInspector)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLInspector())._new();
-_st($1)._inspect_(_st(self._model())._selectedInstVarObject());
-$2=_st($1)._openAsTab();
-return self}, function($ctx1) {$ctx1.fill(self,"onDive",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["inspect:", "new", "selectedInstVarObject", "model", "openAsTab"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDoneIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onDoneIt",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["refresh"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onInspectIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"onInspectIt",{},smalltalk.HLInspectorWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onInstanceVariableSelected",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._codeWidget())._receiver_(_st(self._model())._selectedInstVarObject());
-self._refreshDisplayWidget();
-return self}, function($ctx1) {$ctx1.fill(self,"onInstanceVariableSelected",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["receiver:", "codeWidget", "selectedInstVarObject", "model", "refreshDisplayWidget"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onPrintIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"onPrintIt",{},smalltalk.HLInspectorWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._inspect_(self._inspectee());
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["inspect:", "inspectee"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refreshDisplayWidget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._displayWidget())._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"refreshDisplayWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["refresh", "displayWidget"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refreshVariablesWidget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._variablesWidget())._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"refreshVariablesWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["refresh", "variablesWidget"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register",
-fn: function (){
-var self=this;
-function $HLInspector(){return smalltalk.HLInspector||(typeof HLInspector=="undefined"?nil:HLInspector)}
-return smalltalk.withContext(function($ctx1) { 
-_st($HLInspector())._register_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["register:"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(self._variablesWidget(),self._displayWidget()),self._codeWidget()));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspectorWidget)})},
-messageSends: ["with:", "with:with:", "variablesWidget", "displayWidget", "codeWidget"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setLabel:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._label_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"setLabel:",{aString:aString},smalltalk.HLInspectorWidget)})},
-messageSends: ["label:", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setVariables:",
-fn: function (aDictionary){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._variables_(aDictionary);
-return self}, function($ctx1) {$ctx1.fill(self,"setVariables:",{aDictionary:aDictionary},smalltalk.HLInspectorWidget)})},
-messageSends: ["variables:", "model"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Inspector";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLInspectorWidget)})},
-messageSends: []}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-function $HLInspector(){return smalltalk.HLInspector||(typeof HLInspector=="undefined"?nil:HLInspector)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLInspectorWidget.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st($HLInspector())._unregister_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["unregister", "unregister:"]}),
-smalltalk.HLInspectorWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variablesWidget",
-fn: function (){
-var self=this;
-function $HLInspectorVariablesWidget(){return smalltalk.HLInspectorVariablesWidget||(typeof HLInspectorVariablesWidget=="undefined"?nil:HLInspectorVariablesWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@variablesWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLInspectorVariablesWidget())._new();
-_st($3)._model_(self._model());
-$4=_st($3)._yourself();
-self["@variablesWidget"]=$4;
-$1=self["@variablesWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variablesWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["ifNil:", "model:", "new", "model", "yourself"]}),
-smalltalk.HLInspectorWidget);
-
-
-
-smalltalk.addClass('HLInspector', smalltalk.HLInspectorWidget, [], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(self._variablesWidget(),self._displayWidget()),self._codeWidget())));
-_st(self._variablesWidget())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspector)})},
-messageSends: ["with:", "with:with:", "variablesWidget", "displayWidget", "codeWidget", "focus"]}),
-smalltalk.HLInspector);
-
-
-smalltalk.HLInspector.klass.iVarNames = ['inspectors'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLInspector.klass)})},
-messageSends: []}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLInspector.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._watchChanges();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLInspector.klass)})},
-messageSends: ["initialize", "watchChanges"]}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._new();
-_st($1)._inspect_(anObject);
-$2=_st($1)._openAsTab();
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.HLInspector.klass)})},
-messageSends: ["inspect:", "new", "openAsTab"]}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectors",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@inspectors"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@inspectors"]=_st($OrderedCollection())._new();
-$1=self["@inspectors"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspectors",{},smalltalk.HLInspector.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register:",
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._inspectors())._add_(anInspector);
-return self}, function($ctx1) {$ctx1.fill(self,"register:",{anInspector:anInspector},smalltalk.HLInspector.klass)})},
-messageSends: ["add:", "inspectors"]}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "inspector";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLInspector.klass)})},
-messageSends: []}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Inspector";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLInspector.klass)})},
-messageSends: []}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (10);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLInspector.klass)})},
-messageSends: []}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister:",
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._inspectors())._remove_(anInspector);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister:",{anInspector:anInspector},smalltalk.HLInspector.klass)})},
-messageSends: ["remove:", "inspectors"]}),
-smalltalk.HLInspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "watchChanges",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._inspectors())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each)._refresh();
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithInterval_((500));
-return self}, function($ctx1) {$ctx1.fill(self,"watchChanges",{},smalltalk.HLInspector.klass)})},
-messageSends: ["valueWithInterval:", "do:", "inspectors", "refresh"]}),
-smalltalk.HLInspector.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Inspector.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Inspector", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Core", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Inspector');
+smalltalk.packages["Helios-Inspector"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLInspectorDisplayWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-Inspector');
 smalltalk.addMethod(
@@ -1429,4 +1430,4 @@ referencedClasses: []
 }),
 smalltalk.HLInspector.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1728
js/Helios-KeyBindings.deploy.js

@@ -1,1728 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-KeyBindings');
-
-smalltalk.addClass('HLBinding', smalltalk.Object, ['key', 'label'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "apply",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"apply",{},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atKey:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"atKey:",{aKey:aKey},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._label();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLBinding)})},
-messageSends: ["label"]}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLBinding)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@key"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@key"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"key:",{anInteger:anInteger},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@label"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@label"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"label:",{aString:aString},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "release",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:html:",
-fn: function (aBindingHelper,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:html:",{aBindingHelper:aBindingHelper,html:html},smalltalk.HLBinding)})},
-messageSends: []}),
-smalltalk.HLBinding);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shortcut",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($String())._fromCharCode_(self._key());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shortcut",{},smalltalk.HLBinding)})},
-messageSends: ["fromCharCode:", "key"]}),
-smalltalk.HLBinding);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:labelled:",
-fn: function (anInteger,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._key_(anInteger);
-_st($2)._label_(aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:labelled:",{anInteger:anInteger,aString:aString},smalltalk.HLBinding.klass)})},
-messageSends: ["key:", "new", "label:", "yourself"]}),
-smalltalk.HLBinding.klass);
-
-
-smalltalk.addClass('HLBindingAction', smalltalk.HLBinding, ['command'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "apply",
-fn: function (){
-var self=this;
-function $HLKeyBinder(){return smalltalk.HLKeyBinder||(typeof HLKeyBinder=="undefined"?nil:HLKeyBinder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._command())._isInputRequired();
-if(smalltalk.assert($1)){
-_st(_st(_st($HLKeyBinder())._current())._helper())._showWidget_(self._inputWidget());
-} else {
-self._executeCommand();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"apply",{},smalltalk.HLBindingAction)})},
-messageSends: ["ifTrue:ifFalse:", "isInputRequired", "command", "showWidget:", "helper", "current", "inputWidget", "executeCommand"]}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "command",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@command"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"command",{},smalltalk.HLBindingAction)})},
-messageSends: []}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "command:",
-fn: function (aCommand){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@command"]=aCommand;
-return self}, function($ctx1) {$ctx1.fill(self,"command:",{aCommand:aCommand},smalltalk.HLBindingAction)})},
-messageSends: []}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "executeCommand",
-fn: function (){
-var self=this;
-function $HLKeyBinder(){return smalltalk.HLKeyBinder||(typeof HLKeyBinder=="undefined"?nil:HLKeyBinder)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._command())._execute();
-_st(_st($HLKeyBinder())._current())._deactivate();
-return self}, function($ctx1) {$ctx1.fill(self,"executeCommand",{},smalltalk.HLBindingAction)})},
-messageSends: ["execute", "command", "deactivate", "current"]}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "input:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._command())._input_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"input:",{aString:aString},smalltalk.HLBindingAction)})},
-messageSends: ["input:", "command"]}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputBinding",
-fn: function (){
-var self=this;
-function $HLBindingInput(){return smalltalk.HLBindingInput||(typeof HLBindingInput=="undefined"?nil:HLBindingInput)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$2=_st($HLBindingInput())._new();
-_st($2)._label_(_st(self._command())._inputLabel());
-_st($2)._ghostText_(_st(self._command())._displayLabel());
-_st($2)._defaultValue_(_st(self._command())._defaultInput());
-_st($2)._inputCompletion_(_st(self._command())._inputCompletion());
-_st($2)._callback_((function(val){
-return smalltalk.withContext(function($ctx2) {
-$3=self._command();
-_st($3)._input_(val);
-$4=_st($3)._execute();
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({val:val},$ctx1,1)})}));
-$5=_st($2)._yourself();
-$1=$5;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputBinding",{},smalltalk.HLBindingAction)})},
-messageSends: ["label:", "new", "inputLabel", "command", "ghostText:", "displayLabel", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "execute", "yourself"]}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputWidget",
-fn: function (){
-var self=this;
-function $HLBindingActionInputWidget(){return smalltalk.HLBindingActionInputWidget||(typeof HLBindingActionInputWidget=="undefined"?nil:HLBindingActionInputWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$2=_st($HLBindingActionInputWidget())._new();
-_st($2)._ghostText_(_st(self._command())._displayLabel());
-_st($2)._defaultValue_(_st(self._command())._defaultInput());
-_st($2)._inputCompletion_(_st(self._command())._inputCompletion());
-_st($2)._callback_((function(value){
-return smalltalk.withContext(function($ctx2) {
-$3=self;
-_st($3)._input_(value);
-$4=_st($3)._executeCommand();
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
-$5=_st($2)._yourself();
-$1=$5;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputWidget",{},smalltalk.HLBindingAction)})},
-messageSends: ["ghostText:", "new", "displayLabel", "command", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "executeCommand", "yourself"]}),
-smalltalk.HLBindingAction);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._command())._isActive();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLBindingAction)})},
-messageSends: ["isActive", "command"]}),
-smalltalk.HLBindingAction);
-
-
-
-smalltalk.addClass('HLBindingGroup', smalltalk.HLBinding, ['bindings'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activeBindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._bindings())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._isActive();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"activeBindings",{},smalltalk.HLBindingGroup)})},
-messageSends: ["select:", "bindings", "isActive"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (aBinding){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._bindings())._add_(aBinding);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"add:",{aBinding:aBinding},smalltalk.HLBindingGroup)})},
-messageSends: ["add:", "bindings"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addActionKey:labelled:callback:",
-fn: function (anInteger,aString,aBlock){
-var self=this;
-function $HLBindingAction(){return smalltalk.HLBindingAction||(typeof HLBindingAction=="undefined"?nil:HLBindingAction)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($HLBindingAction())._on_labelled_(anInteger,aString);
-_st($1)._callback_(aBlock);
-$2=_st($1)._yourself();
-self._add_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"addActionKey:labelled:callback:",{anInteger:anInteger,aString:aString,aBlock:aBlock},smalltalk.HLBindingGroup)})},
-messageSends: ["add:", "callback:", "on:labelled:", "yourself"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addGroupKey:labelled:",
-fn: function (anInteger,aString){
-var self=this;
-function $HLBindingGroup(){return smalltalk.HLBindingGroup||(typeof HLBindingGroup=="undefined"?nil:HLBindingGroup)}
-return smalltalk.withContext(function($ctx1) { 
-self._add_(_st($HLBindingGroup())._on_labelled_(anInteger,aString));
-return self}, function($ctx1) {$ctx1.fill(self,"addGroupKey:labelled:",{anInteger:anInteger,aString:aString},smalltalk.HLBindingGroup)})},
-messageSends: ["add:", "on:labelled:"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._bindings())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._label()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.HLBindingGroup)})},
-messageSends: ["detect:ifNone:", "bindings", "=", "label"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:add:",
-fn: function (aString,aBinding){
-var self=this;
-var binding;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-binding=self._at_(aString);
-$1=binding;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-_st(binding)._add_(aBinding);
-return self}, function($ctx1) {$ctx1.fill(self,"at:add:",{aString:aString,aBinding:aBinding,binding:binding},smalltalk.HLBindingGroup)})},
-messageSends: ["at:", "ifNil:", "add:"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atKey:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._bindings())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._key()).__eq(anInteger);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atKey:",{anInteger:anInteger},smalltalk.HLBindingGroup)})},
-messageSends: ["detect:ifNone:", "bindings", "=", "key"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindings",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@bindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@bindings"]=_st($OrderedCollection())._new();
-$1=self["@bindings"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindings",{},smalltalk.HLBindingGroup)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "displayLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.HLBindingGroup.superclass.fn.prototype._displayLabel.apply(_st(self), [])).__comma("...");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"displayLabel",{},smalltalk.HLBindingGroup)})},
-messageSends: [",", "displayLabel"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._activeBindings())._notEmpty();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLBindingGroup)})},
-messageSends: ["notEmpty", "activeBindings"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "release",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._bindings())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._release();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.HLBindingGroup)})},
-messageSends: ["do:", "bindings", "release"]}),
-smalltalk.HLBindingGroup);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:html:",
-fn: function (aBindingHelper,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isActive();
-if(smalltalk.assert($1)){
-_st(aBindingHelper)._renderBindingGroup_on_(self,html);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:html:",{aBindingHelper:aBindingHelper,html:html},smalltalk.HLBindingGroup)})},
-messageSends: ["ifTrue:", "isActive", "renderBindingGroup:on:"]}),
-smalltalk.HLBindingGroup);
-
-
-
-smalltalk.addClass('HLBindingActionInputWidget', smalltalk.HLWidget, ['input', 'callback', 'status', 'wrapper', 'ghostText', 'message', 'inputCompletion', 'defaultValue', 'messageTag'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "callback",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@callback"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@callback"]=(function(value){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,2)})});
-$1=self["@callback"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"callback",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "callback:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@callback"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"callback:",{aBlock:aBlock},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearStatus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._status_("info");
-self._message_("");
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"clearStatus",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["status:", "message:", "refresh"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultValue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@defaultValue"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultValue",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultValue:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@defaultValue"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"defaultValue:",{aString:aString},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorStatus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._status_("error");
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"errorStatus",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["status:", "refresh"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "evaluate:",
-fn: function (aString){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._callback())._value_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-_st(_st(self._input())._asJQuery())._one_do_("keydown",(function(){
-return smalltalk.withContext(function($ctx3) {
-return self._clearStatus();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-self._message_(_st(ex)._messageText());
-return self._errorStatus();
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"evaluate:",{aString:aString},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["on:do:", "value:", "callback", "one:do:", "asJQuery", "input", "clearStatus", "message:", "messageText", "errorStatus"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ghostText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@ghostText"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ghostText",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ghostText:",
-fn: function (aText){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@ghostText"]=aText;
-return self}, function($ctx1) {$ctx1.fill(self,"ghostText:",{aText:aText},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "input",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@input"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"input",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@inputCompletion"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=[];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inputCompletion:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@inputCompletion"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"inputCompletion:",{aCollection:aCollection},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@message"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@message"]="";
-$1=self["@message"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@message"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"message:",{aString:aString},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@wrapper"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-_st(self["@wrapper"])._class_(self._status());
-_st(self["@messageTag"])._contents_(self._message());
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:", "class:", "status", "contents:", "message"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$6,$5,$7,$8,$3;
-$1=self["@wrapper"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@wrapper"]=_st(html)._span();
-self["@wrapper"];
-} else {
-$1;
-};
-$2=self["@wrapper"];
-_st($2)._class_(self._status());
-$3=_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$4=_st(html)._input();
-_st($4)._placeholder_(self._ghostText());
-_st($4)._value_(self._defaultValue());
-$5=_st($4)._onKeyDown_(_st((function(event){
-return smalltalk.withContext(function($ctx3) {
-$6=_st(_st(event)._which()).__eq((13));
-if(smalltalk.assert($6)){
-return self._evaluate_(_st(_st(self["@input"])._asJQuery())._val());
-};
-}, function($ctx3) {$ctx3.fillBlock({event:event},$ctx2,3)})}))._yourself());
-self["@input"]=$5;
-self["@input"];
-_st(_st(self["@input"])._asJQuery())._typeahead_(smalltalk.HashedCollection._from_(["source".__minus_gt(self._inputCompletion())]));
-$7=_st(html)._span();
-_st($7)._class_("help-inline");
-_st($7)._with_(self._message());
-$8=_st($7)._yourself();
-self["@messageTag"]=$8;
-return self["@messageTag"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self["@input"])._asJQuery())._focus();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}))._valueWithTimeout_((10));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "input", "ghostText", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "=", "which", "evaluate:", "val", "asJQuery", "typeahead:", "->", "inputCompletion", "message", "valueWithTimeout:", "focus"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "status",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@status"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@status"]="info";
-$1=self["@status"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"status",{},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLBindingActionInputWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "status:",
-fn: function (aStatus){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@status"]=aStatus;
-return self}, function($ctx1) {$ctx1.fill(self,"status:",{aStatus:aStatus},smalltalk.HLBindingActionInputWidget)})},
-messageSends: []}),
-smalltalk.HLBindingActionInputWidget);
-
-
-
-smalltalk.addClass('HLKeyBinder', smalltalk.Object, ['modifierKey', 'helper', 'bindings', 'selectedBinding'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activate",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._helper())._show();
-return self}, function($ctx1) {$ctx1.fill(self,"activate",{},smalltalk.HLKeyBinder)})},
-messageSends: ["show", "helper"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activationKey",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (32);
-}, function($ctx1) {$ctx1.fill(self,"activationKey",{},smalltalk.HLKeyBinder)})},
-messageSends: []}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activationKeyLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "ctrl + space";
-}, function($ctx1) {$ctx1.fill(self,"activationKeyLabel",{},smalltalk.HLKeyBinder)})},
-messageSends: []}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "applyBinding:",
-fn: function (aBinding){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(aBinding)._isActive();
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self._selectBinding_(aBinding);
-_st(aBinding)._apply();
-return self}, function($ctx1) {$ctx1.fill(self,"applyBinding:",{aBinding:aBinding},smalltalk.HLKeyBinder)})},
-messageSends: ["ifFalse:", "isActive", "selectBinding:", "apply"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@bindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@bindings"]=self._defaultBindings();
-$1=self["@bindings"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindings",{},smalltalk.HLKeyBinder)})},
-messageSends: ["ifNil:", "defaultBindings"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deactivate",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedBinding"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self["@selectedBinding"])._release();
-};
-self["@selectedBinding"]=nil;
-_st(self._helper())._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"deactivate",{},smalltalk.HLKeyBinder)})},
-messageSends: ["ifNotNil:", "release", "hide", "helper"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultBindings",
-fn: function (){
-var self=this;
-var group;
-function $HLBindingGroup(){return smalltalk.HLBindingGroup||(typeof HLBindingGroup=="undefined"?nil:HLBindingGroup)}
-function $HLCloseTabCommand(){return smalltalk.HLCloseTabCommand||(typeof HLCloseTabCommand=="undefined"?nil:HLCloseTabCommand)}
-function $HLSwitchTabCommand(){return smalltalk.HLSwitchTabCommand||(typeof HLSwitchTabCommand=="undefined"?nil:HLSwitchTabCommand)}
-function $HLOpenCommand(){return smalltalk.HLOpenCommand||(typeof HLOpenCommand=="undefined"?nil:HLOpenCommand)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st($HLBindingGroup())._new();
-_st($1)._add_(_st(_st($HLCloseTabCommand())._new())._asBinding());
-_st($1)._add_(_st(_st($HLSwitchTabCommand())._new())._asBinding());
-$2=_st($1)._yourself();
-group=$2;
-_st($HLOpenCommand())._registerConcreteClassesOn_(group);
-$3=group;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"defaultBindings",{group:group},smalltalk.HLKeyBinder)})},
-messageSends: ["add:", "new", "asBinding", "yourself", "registerConcreteClassesOn:"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "escapeKey",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (27);
-}, function($ctx1) {$ctx1.fill(self,"escapeKey",{},smalltalk.HLKeyBinder)})},
-messageSends: []}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "flushBindings",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@bindings"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"flushBindings",{},smalltalk.HLKeyBinder)})},
-messageSends: []}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleActiveKeyDown:",
-fn: function (event){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(_st(event)._which()).__eq(self._escapeKey()))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(event)._which()).__eq((71)))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(event)._ctrlKey();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-self._deactivate();
-_st(event)._preventDefault();
-return false;
-};
-$2=self._handleBindingFor_(event);
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"handleActiveKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
-messageSends: ["ifTrue:", "or:", "=", "which", "escapeKey", "and:", "ctrlKey", "deactivate", "preventDefault", "handleBindingFor:"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleBindingFor:",
-fn: function (anEvent){
-var self=this;
-var binding;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-binding=_st(self._selectedBinding())._atKey_(_st(anEvent)._which());
-$1=binding;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._applyBinding_(binding);
-_st(anEvent)._preventDefault();
-return false;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"handleBindingFor:",{anEvent:anEvent,binding:binding},smalltalk.HLKeyBinder)})},
-messageSends: ["atKey:", "selectedBinding", "which", "ifNotNil:", "applyBinding:", "preventDefault"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleInactiveKeyDown:",
-fn: function (event){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(event)._which()).__eq(self._activationKey());
-if(smalltalk.assert($1)){
-$2=_st(event)._ctrlKey();
-if(smalltalk.assert($2)){
-self._activate();
-_st(event)._preventDefault();
-return false;
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"handleInactiveKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
-messageSends: ["ifTrue:", "=", "which", "activationKey", "ctrlKey", "activate", "preventDefault"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleKeyDown:",
-fn: function (event){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isActive();
-if(smalltalk.assert($2)){
-$1=self._handleActiveKeyDown_(event);
-} else {
-$1=self._handleInactiveKeyDown_(event);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
-messageSends: ["ifTrue:ifFalse:", "isActive", "handleActiveKeyDown:", "handleInactiveKeyDown:"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "helper",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@helper"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"helper",{},smalltalk.HLKeyBinder)})},
-messageSends: []}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $HLKeyBinderHelperWidget(){return smalltalk.HLKeyBinderHelperWidget||(typeof HLKeyBinderHelperWidget=="undefined"?nil:HLKeyBinderHelperWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.HLKeyBinder.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@helper"]=_st($HLKeyBinderHelperWidget())._on_(self);
-$1=self["@helper"];
-_st($1)._renderStart();
-$2=_st($1)._renderCog();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLKeyBinder)})},
-messageSends: ["initialize", "on:", "renderStart", "renderCog"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isActive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(".".__comma(_st(self._helper())._cssClass()))._asJQuery())._is_(":visible");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLKeyBinder)})},
-messageSends: ["is:", "asJQuery", ",", "cssClass", "helper"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectBinding:",
-fn: function (aBinding){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(aBinding).__eq(self["@selectedBinding"]);
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-self["@selectedBinding"]=aBinding;
-_st(self._helper())._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"selectBinding:",{aBinding:aBinding},smalltalk.HLKeyBinder)})},
-messageSends: ["ifTrue:", "=", "refresh", "helper"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedBinding",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectedBinding"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._bindings();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedBinding",{},smalltalk.HLKeyBinder)})},
-messageSends: ["ifNil:", "bindings"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupEvents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st("body"._asJQuery())._keydown_((function(event){
-return smalltalk.withContext(function($ctx2) {
-return self._handleKeyDown_(event);
-}, function($ctx2) {$ctx2.fillBlock({event:event},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupEvents",{},smalltalk.HLKeyBinder)})},
-messageSends: ["keydown:", "asJQuery", "handleKeyDown:"]}),
-smalltalk.HLKeyBinder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemIsMac",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(navigator)._platform())._match_("Mac");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemIsMac",{},smalltalk.HLKeyBinder)})},
-messageSends: ["match:", "platform"]}),
-smalltalk.HLKeyBinder);
-
-
-smalltalk.HLKeyBinder.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=smalltalk.HLKeyBinder.klass.superclass.fn.prototype._new.apply(_st(self), []);
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.HLKeyBinder.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLKeyBinder.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.HLKeyBinder.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.HLKeyBinder.klass);
-
-
-smalltalk.addClass('HLKeyBinderHelperWidget', smalltalk.HLWidget, ['keyBinder'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "key_helper";
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: []}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hide",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(".".__comma(self._cssClass()))._asJQuery())._remove();
-self._showCog();
-return self}, function($ctx1) {$ctx1.fill(self,"hide",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["remove", "asJQuery", ",", "cssClass", "showCog"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hideCog",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st("#cog-helper"._asJQuery())._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"hideCog",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["hide", "asJQuery"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyBinder",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@keyBinder"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyBinder",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: []}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyBinder:",
-fn: function (aKeyBinder){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@keyBinder"]=aKeyBinder;
-return self}, function($ctx1) {$ctx1.fill(self,"keyBinder:",{aKeyBinder:aKeyBinder},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: []}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "mainId",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "binding-helper-main";
-}, function($ctx1) {$ctx1.fill(self,"mainId",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: []}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBindingActionFor:on:",
-fn: function (aBinding,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$2;
-$1=_st(html)._span();
-_st($1)._class_("command");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._span();
-_st($3)._class_("label");
-$4=_st($3)._with_(_st(_st(aBinding)._shortcut())._asLowercase());
-$4;
-$5=_st(html)._a();
-_st($5)._class_("action");
-_st($5)._with_(_st(aBinding)._displayLabel());
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._keyBinder())._applyBinding_(aBinding);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBindingActionFor:on:",{aBinding:aBinding,html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["class:", "span", "with:", "asLowercase", "shortcut", "a", "displayLabel", "onClick:", "applyBinding:", "keyBinder"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBindingGroup:on:",
-fn: function (aBindingGroup,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(aBindingGroup)._activeBindings())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._key()).__lt(_st(b)._key());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderBindingActionFor_on_(each,html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBindingGroup:on:",{aBindingGroup:aBindingGroup,html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["do:", "sorted:", "activeBindings", "<", "key", "renderBindingActionFor:on:"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderCloseOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._a();
-_st($1)._class_("close");
-_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(html)._tag_("i"))._class_("icon-remove");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._keyBinder())._deactivate();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderCloseOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["class:", "a", "with:", "tag:", "onClick:", "deactivate", "keyBinder"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderCog",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._id_("cog-helper");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$3=_st(html)._a();
-_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(html)._tag_("i"))._class_("icon-cog");
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(self._keyBinder())._activate();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"renderCog",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["appendToJQuery:", "id:", "div", "with:", "a", "class:", "tag:", "onClick:", "activate", "keyBinder", "asJQuery"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-$1=_st(html)._div();
-_st($1)._class_(self._cssClass());
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._renderLabelOn_(html);
-$3=_st(html)._div();
-_st($3)._id_(self._mainId());
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renderSelectedBindingOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4;
-return self._renderCloseOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["class:", "div", "cssClass", "with:", "renderLabelOn:", "id:", "mainId", "renderSelectedBindingOn:", "renderCloseOn:"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderLabelOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$5,$4,$2;
-$1=_st(html)._span();
-_st($1)._class_("selected");
-$3=$1;
-$5=_st(self._selectedBinding())._label();
-if(($receiver = $5) == nil || $receiver == undefined){
-$4="Action";
-} else {
-$4=$5;
-};
-$2=_st($3)._with_($4);
-return self}, function($ctx1) {$ctx1.fill(self,"renderLabelOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["class:", "span", "with:", "ifNil:", "label", "selectedBinding"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderSelectedBindingOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._selectedBinding())._renderOn_html_(self,html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderSelectedBindingOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["renderOn:html:", "selectedBinding"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderStart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st("#helper"._asJQuery())._remove();
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._id_("helper");
-$2=_st($1)._with_(_st("Press ".__comma(_st(self._keyBinder())._activationKeyLabel())).__comma(" to start"));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_("body"._asJQuery());
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st("#helper"._asJQuery())._fadeOut_((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._valueWithTimeout_((2000));
-return self}, function($ctx1) {$ctx1.fill(self,"renderStart",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["remove", "asJQuery", "appendToJQuery:", "id:", "div", "with:", ",", "activationKeyLabel", "keyBinder", "valueWithTimeout:", "fadeOut:"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedBinding",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._keyBinder())._selectedBinding();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedBinding",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["selectedBinding", "keyBinder"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._hideCog();
-self._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["hideCog", "appendToJQuery:", "asJQuery"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showCog",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st("#cog-helper"._asJQuery())._show();
-return self}, function($ctx1) {$ctx1.fill(self,"showCog",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["show", "asJQuery"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showWidget:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st("#".__comma(self._mainId()))._asJQuery())._empty();
-_st(aWidget)._appendToJQuery_(_st("#".__comma(self._mainId()))._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"showWidget:",{aWidget:aWidget},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["empty", "asJQuery", ",", "mainId", "appendToJQuery:"]}),
-smalltalk.HLKeyBinderHelperWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aKeyBinder){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._keyBinder_(aKeyBinder);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aKeyBinder:aKeyBinder},smalltalk.HLKeyBinderHelperWidget.klass)})},
-messageSends: ["keyBinder:", "new", "yourself"]}),
-smalltalk.HLKeyBinderHelperWidget.klass);
-
-
-smalltalk.addClass('HLRepeatedKeyDownHandler', smalltalk.Object, ['repeatInterval', 'delay', 'interval', 'keyBindings', 'widget', 'keyDown'], 'Helios-KeyBindings');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "bindKeys",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._widget())._bindKeyDown_keyUp_((function(e){
-return smalltalk.withContext(function($ctx2) {
-return self._handleKeyDown_(e);
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)})}),(function(e){
-return smalltalk.withContext(function($ctx2) {
-return self._handleKeyUp();
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"bindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["bindKeyDown:keyUp:", "widget", "handleKeyDown:", "handleKeyUp"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultRepeatInterval",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (70);
-}, function($ctx1) {$ctx1.fill(self,"defaultRepeatInterval",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: []}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleEvent:forKey:action:",
-fn: function (anEvent,anInteger,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(anEvent)._which()).__eq(anInteger))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._isKeyDown())._not();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-self._whileKeyDownDo_(aBlock);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"handleEvent:forKey:action:",{anEvent:anEvent,anInteger:anInteger,aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["ifTrue:", "and:", "=", "which", "not", "isKeyDown", "whileKeyDownDo:"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleKeyDown:",
-fn: function (anEvent){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._keyBindings())._keysAndValuesDo_((function(key,action){
-return smalltalk.withContext(function($ctx2) {
-return self._handleEvent_forKey_action_(anEvent,key,action);
-}, function($ctx2) {$ctx2.fillBlock({key:key,action:action},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{anEvent:anEvent},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["keysAndValuesDo:", "keyBindings", "handleEvent:forKey:action:"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleKeyUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._isKeyDown();
-if(smalltalk.assert($1)){
-self["@keyDown"]=false;
-self["@keyDown"];
-$2=self["@interval"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-_st(self["@interval"])._clearInterval();
-};
-$3=self["@delay"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(self["@delay"])._clearTimeout();
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"handleKeyUp",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["ifTrue:", "isKeyDown", "ifNotNil:", "clearInterval", "clearTimeout"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isKeyDown",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@keyDown"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=false;
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isKeyDown",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyBindings",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@keyBindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@keyBindings"]=_st($Dictionary())._new();
-$1=self["@keyBindings"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyBindings",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rebindKeys",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._unbindKeys();
-$2=_st($1)._bindKeys();
-return self}, function($ctx1) {$ctx1.fill(self,"rebindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["unbindKeys", "bindKeys"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "repeatInterval",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@repeatInterval"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._defaultRepeatInterval();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"repeatInterval",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["ifNil:", "defaultRepeatInterval"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "repeatInterval:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@repeatInterval"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"repeatInterval:",{anInteger:anInteger},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: []}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "startRepeatingAction:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$1=_st((function(){
-return smalltalk.withContext(function($ctx2) {
-$2=_st(self._widget())._hasFocus();
-if(smalltalk.assert($2)){
-return _st(aBlock)._value();
-} else {
-return self._handleKeyUp();
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithInterval_(self._repeatInterval());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"startRepeatingAction:",{aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["valueWithInterval:", "ifTrue:ifFalse:", "hasFocus", "widget", "value", "handleKeyUp", "repeatInterval"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unbindKeys",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._widget())._unbindKeyDownKeyUp();
-return self}, function($ctx1) {$ctx1.fill(self,"unbindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["unbindKeyDownKeyUp", "widget"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileKeyDown:do:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._keyBindings())._at_put_(aKey,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"whileKeyDown:do:",{aKey:aKey,aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["at:put:", "keyBindings"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileKeyDownDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@keyDown"]=true;
-_st(aBlock)._value();
-self["@delay"]=_st((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@interval"]=self._startRepeatingAction_(aBlock);
-return self["@interval"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithTimeout_((300));
-return self}, function($ctx1) {$ctx1.fill(self,"whileKeyDownDo:",{aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["value", "valueWithTimeout:", "startRepeatingAction:"]}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "widget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@widget"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"widget",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: []}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "widget:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@widget"]=aWidget;
-return self}, function($ctx1) {$ctx1.fill(self,"widget:",{aWidget:aWidget},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: []}),
-smalltalk.HLRepeatedKeyDownHandler);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._widget_(aWidget);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aWidget:aWidget},smalltalk.HLRepeatedKeyDownHandler.klass)})},
-messageSends: ["widget:", "new", "yourself"]}),
-smalltalk.HLRepeatedKeyDownHandler.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-KeyBindings.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-KeyBindings", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Helios-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-KeyBindings');
+smalltalk.packages["Helios-KeyBindings"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLBinding', smalltalk.Object, ['key', 'label'], 'Helios-KeyBindings');
 smalltalk.HLBinding.comment="I am the abstract representation of a keybinding in Helios. My instances hold a key (integer value) and a label. \x0a\x0aBindings are built into a tree of keys, so pressing a key may result in more key choices (for example, to open a workspace, 'o' is pressed first then 'w' is pressed).\x0a\x0aBinding action handling and selection is handled by the `current` instance of `HLKeyBinder`.\x0a\x0aSubclasses implement specific behavior like evaluating actions or (sub-)grouping other bindings.";
@@ -2272,4 +2273,4 @@ referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 395
js/Helios-Layout.deploy.js

@@ -1,395 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Layout');
-
-smalltalk.addClass('HLContainer', smalltalk.HLWidget, ['splitter'], 'Helios-Layout');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("tool_container");
-$2=_st($1)._with_(self._splitter());
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLContainer)})},
-messageSends: ["class:", "div", "with:", "splitter"]}),
-smalltalk.HLContainer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "splitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@splitter"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"splitter",{},smalltalk.HLContainer)})},
-messageSends: []}),
-smalltalk.HLContainer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "splitter:",
-fn: function (aSplitter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@splitter"]=aSplitter;
-return self}, function($ctx1) {$ctx1.fill(self,"splitter:",{aSplitter:aSplitter},smalltalk.HLContainer)})},
-messageSends: []}),
-smalltalk.HLContainer);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (aSplitter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._splitter_(aSplitter);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:",{aSplitter:aSplitter},smalltalk.HLContainer.klass)})},
-messageSends: ["splitter:", "new", "yourself"]}),
-smalltalk.HLContainer.klass);
-
-
-smalltalk.addClass('HLSplitter', smalltalk.Widget, ['firstWidget', 'secondWidget', 'firstPane', 'secondPane', 'splitter'], 'Helios-Layout');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "splitter";
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "firstWidget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@firstWidget"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"firstWidget",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "firstWidget:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@firstWidget"]=aWidget;
-return self}, function($ctx1) {$ctx1.fill(self,"firstWidget:",{aWidget:aWidget},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isHeliosSplitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isHeliosSplitter",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "panesCssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "panes";
-}, function($ctx1) {$ctx1.fill(self,"panesCssClass",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$2;
-$1=_st(html)._div();
-_st($1)._class_(self._panesCssClass());
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._div();
-_st($3)._class_("pane");
-$4=_st($3)._with_(self._firstWidget());
-self["@firstPane"]=$4;
-self["@firstPane"];
-self["@splitter"]=_st(_st(html)._div())._class_(self._cssClass());
-self["@splitter"];
-$5=_st(html)._div();
-_st($5)._class_("pane");
-$6=_st($5)._with_(self._secondWidget());
-self["@secondPane"]=$6;
-return self["@secondPane"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self._setupSplitter();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLSplitter)})},
-messageSends: ["class:", "div", "panesCssClass", "with:", "firstWidget", "cssClass", "secondWidget", "setupSplitter"]}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"resize",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "secondWidget",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@secondWidget"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"secondWidget",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "secondWidget:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@secondWidget"]=aWidget;
-return self}, function($ctx1) {$ctx1.fill(self,"secondWidget:",{aWidget:aWidget},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupSplitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLSplitter)})},
-messageSends: []}),
-smalltalk.HLSplitter);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:with:",
-fn: function (aWidget,anotherWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._firstWidget_(aWidget);
-_st($2)._secondWidget_(anotherWidget);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:with:",{aWidget:aWidget,anotherWidget:anotherWidget},smalltalk.HLSplitter.klass)})},
-messageSends: ["firstWidget:", "new", "secondWidget:", "yourself"]}),
-smalltalk.HLSplitter.klass);
-
-
-smalltalk.addClass('HLHorizontalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.HLHorizontalSplitter.superclass.fn.prototype._cssClass.apply(_st(self), [])).__comma(" horizontal");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLHorizontalSplitter)})},
-messageSends: [",", "cssClass"]}),
-smalltalk.HLHorizontalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "panesCssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.HLHorizontalSplitter.superclass.fn.prototype._panesCssClass.apply(_st(self), [])).__comma(" horizontal");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"panesCssClass",{},smalltalk.HLHorizontalSplitter)})},
-messageSends: [",", "panesCssClass"]}),
-smalltalk.HLHorizontalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._resize_(_st(_st(self["@splitter"])._asJQuery())._css_("top"));
-return self}, function($ctx1) {$ctx1.fill(self,"resize",{},smalltalk.HLHorizontalSplitter)})},
-messageSends: ["resize:", "css:", "asJQuery"]}),
-smalltalk.HLHorizontalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resize:",
-fn: function (anInteger){
-var self=this;
-var container,size,offset,percentage;
-return smalltalk.withContext(function($ctx1) { 
-container=_st(_st(self["@firstPane"])._asJQuery())._parent();
-offset=_st(_st(_st(self["@firstPane"])._asJQuery())._offset())._top();
-size=_st(container)._height();
-percentage=_st(_st(_st(size).__minus(_st(anInteger).__minus(offset))).__slash(size)).__star((100));
-percentage=(80)._min_(_st(percentage)._max_((20)));
-_st(_st(self["@firstPane"])._asJQuery())._css_put_("bottom",_st(_st(percentage)._asString()).__comma("%"));
-_st(_st(self["@splitter"])._asJQuery())._css_put_("top",_st(_st((100).__minus(percentage))._asString()).__comma("%"));
-_st(_st(self["@secondPane"])._asJQuery())._css_put_("top",_st(_st((100).__minus(percentage))._asString()).__comma("%"));
-return self}, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage},smalltalk.HLHorizontalSplitter)})},
-messageSends: ["parent", "asJQuery", "top", "offset", "height", "*", "/", "-", "min:", "max:", "css:put:", ",", "asString"]}),
-smalltalk.HLHorizontalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupSplitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@splitter"])._asJQuery())._draggable_(smalltalk.HashedCollection._from_(["axis".__minus_gt("y"),"containment".__minus_gt(_st(_st(self["@splitter"])._asJQuery())._parent()),"helper".__minus_gt("clone"),"start".__minus_gt((function(e,ui){
-return smalltalk.withContext(function($ctx2) {
-return self._startResizing_(_st(ui)._helper());
-}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)})})),"drag".__minus_gt((function(e,ui){
-return smalltalk.withContext(function($ctx2) {
-return self._resize_(_st(_st(ui)._offset())._top());
-}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLHorizontalSplitter)})},
-messageSends: ["draggable:", "asJQuery", "->", "parent", "startResizing:", "helper", "resize:", "top", "offset"]}),
-smalltalk.HLHorizontalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "startResizing:",
-fn: function (aSplitter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aSplitter)._width_(_st(_st(self["@splitter"])._asJQuery())._width());
-return self}, function($ctx1) {$ctx1.fill(self,"startResizing:",{aSplitter:aSplitter},smalltalk.HLHorizontalSplitter)})},
-messageSends: ["width:", "width", "asJQuery"]}),
-smalltalk.HLHorizontalSplitter);
-
-
-
-smalltalk.addClass('HLVerticalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.HLVerticalSplitter.superclass.fn.prototype._cssClass.apply(_st(self), [])).__comma(" vertical");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cssClass",{},smalltalk.HLVerticalSplitter)})},
-messageSends: [",", "cssClass"]}),
-smalltalk.HLVerticalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "panesCssClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.HLVerticalSplitter.superclass.fn.prototype._panesCssClass.apply(_st(self), [])).__comma(" vertical");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"panesCssClass",{},smalltalk.HLVerticalSplitter)})},
-messageSends: [",", "panesCssClass"]}),
-smalltalk.HLVerticalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._resize_(_st(_st(self["@splitter"])._asJQuery())._css_("left"));
-return self}, function($ctx1) {$ctx1.fill(self,"resize",{},smalltalk.HLVerticalSplitter)})},
-messageSends: ["resize:", "css:", "asJQuery"]}),
-smalltalk.HLVerticalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resize:",
-fn: function (anInteger){
-var self=this;
-var container,size,offset,percentage;
-return smalltalk.withContext(function($ctx1) { 
-container=_st(_st(self["@firstPane"])._asJQuery())._parent();
-offset=_st(_st(_st(self["@firstPane"])._asJQuery())._offset())._left();
-size=_st(container)._width();
-percentage=_st(_st(_st(size).__minus(_st(anInteger).__minus(offset))).__slash(size)).__star((100));
-percentage=(80)._min_(_st(percentage)._max_((20)));
-_st(_st(self["@firstPane"])._asJQuery())._css_put_("right",_st(_st(percentage)._asString()).__comma("%"));
-_st(_st(self["@splitter"])._asJQuery())._css_put_("left",_st(_st((100).__minus(percentage))._asString()).__comma("%"));
-_st(_st(self["@secondPane"])._asJQuery())._css_put_("left",_st(_st((100).__minus(percentage))._asString()).__comma("%"));
-return self}, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage},smalltalk.HLVerticalSplitter)})},
-messageSends: ["parent", "asJQuery", "left", "offset", "width", "*", "/", "-", "min:", "max:", "css:put:", ",", "asString"]}),
-smalltalk.HLVerticalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupSplitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@splitter"])._asJQuery())._draggable_(smalltalk.HashedCollection._from_(["axis".__minus_gt("x"),"containment".__minus_gt(_st(_st(self["@splitter"])._asJQuery())._parent()),"helper".__minus_gt("clone"),"start".__minus_gt((function(e,ui){
-return smalltalk.withContext(function($ctx2) {
-return self._startResizing_(_st(ui)._helper());
-}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)})})),"drag".__minus_gt((function(e,ui){
-return smalltalk.withContext(function($ctx2) {
-return self._resize_(_st(_st(ui)._offset())._left());
-}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLVerticalSplitter)})},
-messageSends: ["draggable:", "asJQuery", "->", "parent", "startResizing:", "helper", "resize:", "left", "offset"]}),
-smalltalk.HLVerticalSplitter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "startResizing:",
-fn: function (aSplitter){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aSplitter)._height_(_st(_st(self["@splitter"])._asJQuery())._height());
-return self}, function($ctx1) {$ctx1.fill(self,"startResizing:",{aSplitter:aSplitter},smalltalk.HLVerticalSplitter)})},
-messageSends: ["height:", "height", "asJQuery"]}),
-smalltalk.HLVerticalSplitter);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isHeliosSplitter",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isHeliosSplitter",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Layout.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Layout", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Core", "amber_core/Canvas", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Layout');
+smalltalk.packages["Helios-Layout"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLContainer', smalltalk.HLWidget, ['splitter'], 'Helios-Layout');
 smalltalk.addMethod(
@@ -532,4 +533,4 @@ referencedClasses: []
 }),
 smalltalk.Object);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 844
js/Helios-References.deploy.js

@@ -1,844 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-References');
-
-smalltalk.addClass('HLMethodReference', smalltalk.Object, ['selector', 'methodClass'], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromMethod:",
-fn: function (aCompiledMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._selector_(_st(aCompiledMethod)._selector());
-$2=_st($1)._methodClass_(_st(aCompiledMethod)._methodClass());
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethod:",{aCompiledMethod:aCompiledMethod},smalltalk.HLMethodReference)})},
-messageSends: ["selector:", "selector", "methodClass:", "methodClass"]}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodClass())._methodAt_(self._selector());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.HLMethodReference)})},
-messageSends: ["methodAt:", "methodClass", "selector"]}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@methodClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.HLMethodReference)})},
-messageSends: []}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@methodClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"methodClass:",{aClass:aClass},smalltalk.HLMethodReference)})},
-messageSends: []}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.HLMethodReference)})},
-messageSends: []}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.HLMethodReference)})},
-messageSends: []}),
-smalltalk.HLMethodReference);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._method())._source();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.HLMethodReference)})},
-messageSends: ["source", "method"]}),
-smalltalk.HLMethodReference);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aCompiledMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._initializeFromMethod_(aCompiledMethod);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aCompiledMethod:aCompiledMethod},smalltalk.HLMethodReference.klass)})},
-messageSends: ["initializeFromMethod:", "new", "yourself"]}),
-smalltalk.HLMethodReference.klass);
-
-
-smalltalk.addClass('HLReferences', smalltalk.HLWidget, ['model', 'sendersListWidget', 'implementorsListWidget', 'classReferencesListWidget', 'regexpListWidget', 'sourceCodeWidget'], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferencesListWidget",
-fn: function (){
-var self=this;
-function $HLClassReferencesListWidget(){return smalltalk.HLClassReferencesListWidget||(typeof HLClassReferencesListWidget=="undefined"?nil:HLClassReferencesListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@classReferencesListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@classReferencesListWidget"]=_st($HLClassReferencesListWidget())._on_(self._model());
-self["@classReferencesListWidget"];
-$1=_st(self["@classReferencesListWidget"])._next_(self._regexpListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classReferencesListWidget",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "regexpListWidget"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "implementorsListWidget",
-fn: function (){
-var self=this;
-function $HLImplementorsListWidget(){return smalltalk.HLImplementorsListWidget||(typeof HLImplementorsListWidget=="undefined"?nil:HLImplementorsListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@implementorsListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@implementorsListWidget"]=_st($HLImplementorsListWidget())._on_(self._model());
-self["@implementorsListWidget"];
-$1=_st(self["@implementorsListWidget"])._next_(self._classReferencesListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"implementorsListWidget",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "classReferencesListWidget"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-function $HLReferencesModel(){return smalltalk.HLReferencesModel||(typeof HLReferencesModel=="undefined"?nil:HLReferencesModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLReferencesModel())._new();
-_st($3)._environment_(_st(self._manager())._environment());
-$4=_st($3)._yourself();
-self["@model"]=$4;
-$1=self["@model"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "environment:", "new", "environment", "manager", "yourself"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLReferences)})},
-messageSends: []}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "regexpListWidget",
-fn: function (){
-var self=this;
-function $HLRegexpListWidget(){return smalltalk.HLRegexpListWidget||(typeof HLRegexpListWidget=="undefined"?nil:HLRegexpListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@regexpListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@regexpListWidget"]=_st($HLRegexpListWidget())._on_(self._model());
-self["@regexpListWidget"];
-$1=_st(self["@regexpListWidget"])._next_(self._sourceCodeWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"regexpListWidget",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "sourceCodeWidget"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerBindingsOn:",
-fn: function (aBindingGroup){
-var self=this;
-function $HLToolCommand(){return smalltalk.HLToolCommand||(typeof HLToolCommand=="undefined"?nil:HLToolCommand)}
-return smalltalk.withContext(function($ctx1) { 
-_st($HLToolCommand())._registerConcreteClassesOn_for_(aBindingGroup,self._model());
-return self}, function($ctx1) {$ctx1.fill(self,"registerBindingsOn:",{aBindingGroup:aBindingGroup},smalltalk.HLReferences)})},
-messageSends: ["registerConcreteClassesOn:for:", "model"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(_st($HLVerticalSplitter())._with_with_(self._sendersListWidget(),self._implementorsListWidget()),_st($HLVerticalSplitter())._with_with_(self._classReferencesListWidget(),self._regexpListWidget())),self._sourceCodeWidget())));
-_st(self._sendersListWidget())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferences)})},
-messageSends: ["with:", "with:with:", "sendersListWidget", "implementorsListWidget", "classReferencesListWidget", "regexpListWidget", "sourceCodeWidget", "focus"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._search_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferences)})},
-messageSends: ["search:", "model"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendersListWidget",
-fn: function (){
-var self=this;
-function $HLSendersListWidget(){return smalltalk.HLSendersListWidget||(typeof HLSendersListWidget=="undefined"?nil:HLSendersListWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@sendersListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@sendersListWidget"]=_st($HLSendersListWidget())._on_(self._model());
-self["@sendersListWidget"];
-$1=_st(self["@sendersListWidget"])._next_(self._implementorsListWidget());
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendersListWidget",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "on:", "model", "next:", "implementorsListWidget"]}),
-smalltalk.HLReferences);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sourceCodeWidget",
-fn: function (){
-var self=this;
-function $HLBrowserCodeWidget(){return smalltalk.HLBrowserCodeWidget||(typeof HLBrowserCodeWidget=="undefined"?nil:HLBrowserCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$1;
-$2=self["@sourceCodeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($HLBrowserCodeWidget())._new();
-_st($3)._browserModel_(self._model());
-$4=_st($3)._yourself();
-self["@sourceCodeWidget"]=$4;
-$1=self["@sourceCodeWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sourceCodeWidget",{},smalltalk.HLReferences)})},
-messageSends: ["ifNil:", "browserModel:", "new", "model", "yourself"]}),
-smalltalk.HLReferences);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLReferences.klass)})},
-messageSends: []}),
-smalltalk.HLReferences.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "references";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLReferences.klass)})},
-messageSends: []}),
-smalltalk.HLReferences.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "References";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLReferences.klass)})},
-messageSends: []}),
-smalltalk.HLReferences.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (100);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLReferences.klass)})},
-messageSends: []}),
-smalltalk.HLReferences.klass);
-
-
-smalltalk.addClass('HLReferencesListWidget', smalltalk.HLToolListWidget, [], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "activateListItem:",
-fn: function (anItem){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._withChangesDo_((function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.HLReferencesListWidget.superclass.fn.prototype._activateListItem_.apply(_st(self), [anItem]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{anItem:anItem},smalltalk.HLReferencesListWidget)})},
-messageSends: ["withChangesDo:", "model", "activateListItem:"]}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commandCategory",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Methods";
-}, function($ctx1) {$ctx1.fill(self,"commandCategory",{},smalltalk.HLReferencesListWidget)})},
-messageSends: []}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "List";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLReferencesListWidget)})},
-messageSends: []}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeModel",
-fn: function (){
-var self=this;
-function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
-function $HLMethodSelected(){return smalltalk.HLMethodSelected||(typeof HLMethodSelected=="undefined"?nil:HLMethodSelected)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._model())._announcer();
-_st($1)._on_do_($HLSearchReferences(),(function(ann){
-return smalltalk.withContext(function($ctx2) {
-return self._onSearchReferences_(_st(ann)._searchString());
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)})}));
-$2=_st($1)._on_do_($HLMethodSelected(),(function(ann){
-return smalltalk.withContext(function($ctx2) {
-return self._onMethodSelected_(_st(ann)._item());
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLReferencesListWidget)})},
-messageSends: ["on:do:", "announcer", "model", "onSearchReferences:", "searchString", "onMethodSelected:", "item"]}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodSelected:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-var $early={};
-try {
-$1=aMethod;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
-} else {
-$1;
-};
-_st(self._items())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(aMethod)._selector());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-$3=self;
-throw $early=[$3];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$4=self;
-_st($4)._selectedItem_(_st(aMethod)._selector());
-$5=_st($4)._activateItem_(_st(aMethod)._selector());
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{aMethod:aMethod},smalltalk.HLReferencesListWidget)})},
-messageSends: ["ifNil:", "detect:ifNone:", "items", "=", "selector", "selectedItem:", "activateItem:"]}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSearchReferences:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLReferencesListWidget)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderItemLabel:on:",
-fn: function (aMethod,html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st(_st(_st(_st(aMethod)._methodClass())._name()).__comma(" >> #")).__comma(_st(aMethod)._selector()));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aMethod:aMethod,html:html},smalltalk.HLReferencesListWidget)})},
-messageSends: ["with:", ",", "name", "methodClass", "selector"]}),
-smalltalk.HLReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectItem:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._selectedMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{aMethod:aMethod},smalltalk.HLReferencesListWidget)})},
-messageSends: ["selectedMethod:", "model"]}),
-smalltalk.HLReferencesListWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._model_(aModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aModel:aModel},smalltalk.HLReferencesListWidget.klass)})},
-messageSends: ["model:", "new", "yourself"]}),
-smalltalk.HLReferencesListWidget.klass);
-
-
-smalltalk.addClass('HLClassReferencesListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Class references";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLClassReferencesListWidget)})},
-messageSends: []}),
-smalltalk.HLClassReferencesListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSearchReferences:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectItem_(nil);
-self._items_(_st(self._model())._classReferencesOf_(aString));
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLClassReferencesListWidget)})},
-messageSends: ["selectItem:", "items:", "classReferencesOf:", "model", "refresh"]}),
-smalltalk.HLClassReferencesListWidget);
-
-
-
-smalltalk.addClass('HLImplementorsListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Implementors";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLImplementorsListWidget)})},
-messageSends: []}),
-smalltalk.HLImplementorsListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSearchReferences:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectItem_(nil);
-self._items_(_st(self._model())._implementorsOf_(aString));
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLImplementorsListWidget)})},
-messageSends: ["selectItem:", "items:", "implementorsOf:", "model", "refresh"]}),
-smalltalk.HLImplementorsListWidget);
-
-
-
-smalltalk.addClass('HLRegexpListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Source search";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLRegexpListWidget)})},
-messageSends: []}),
-smalltalk.HLRegexpListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSearchReferences:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectItem_(nil);
-self._items_(_st(self._model())._regexpReferencesOf_(aString));
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLRegexpListWidget)})},
-messageSends: ["selectItem:", "items:", "regexpReferencesOf:", "model", "refresh"]}),
-smalltalk.HLRegexpListWidget);
-
-
-
-smalltalk.addClass('HLSendersListWidget', smalltalk.HLReferencesListWidget, [], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Senders";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.HLSendersListWidget)})},
-messageSends: []}),
-smalltalk.HLSendersListWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSearchReferences:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._selectItem_(nil);
-self._items_(_st(self._model())._sendersOf_(aString));
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onSearchReferences:",{aString:aString},smalltalk.HLSendersListWidget)})},
-messageSends: ["selectItem:", "items:", "sendersOf:", "model", "refresh"]}),
-smalltalk.HLSendersListWidget);
-
-
-
-smalltalk.addClass('HLReferencesModel', smalltalk.HLToolModel, ['methodsCache', 'classesAndMetaclassesCache'], 'Helios-References');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allMethods",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._methodsCache();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allMethods",{},smalltalk.HLReferencesModel)})},
-messageSends: ["methodsCache"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._allMethods())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLReferencesModel)})},
-messageSends: ["asSet", "collect:", "allMethods", "selector"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classReferencesOf:",
-fn: function (aString){
-var self=this;
-var references;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-references=_st($OrderedCollection())._new();
-_st(self._classesAndMetaclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(each)._methodDictionary())._values())._do_((function(method){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(_st(method)._referencedClasses())._includes_(aString);
-if(smalltalk.assert($1)){
-return _st(references)._add_(method);
-};
-}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=references;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"classReferencesOf:",{aString:aString,references:references},smalltalk.HLReferencesModel)})},
-messageSends: ["new", "do:", "classesAndMetaclasses", "values", "methodDictionary", "ifTrue:", "includes:", "referencedClasses", "add:"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classesAndMetaclasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._classesAndMetaclassesCache();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclasses",{},smalltalk.HLReferencesModel)})},
-messageSends: ["classesAndMetaclassesCache"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classesAndMetaclassesCache",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@classesAndMetaclassesCache"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._updateClassesAndMetaclassesCache();
-} else {
-$1;
-};
-$2=self["@classesAndMetaclassesCache"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclassesCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["ifNil:", "updateClassesAndMetaclassesCache"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "implementorsOf:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._allMethods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._selector()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"implementorsOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "select:", "allMethods", "=", "selector", "methodReferenceOn:"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isReferencesModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isReferencesModel",{},smalltalk.HLReferencesModel)})},
-messageSends: []}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodReferenceOn:",
-fn: function (aCompiledMethod){
-var self=this;
-function $HLMethodReference(){return smalltalk.HLMethodReference||(typeof HLMethodReference=="undefined"?nil:HLMethodReference)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HLMethodReference())._on_(aCompiledMethod);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodReferenceOn:",{aCompiledMethod:aCompiledMethod},smalltalk.HLReferencesModel)})},
-messageSends: ["on:"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsCache",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@methodsCache"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._updateMethodsCache();
-} else {
-$1;
-};
-$2=self["@methodsCache"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"methodsCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["ifNil:", "updateMethodsCache"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "regexpReferencesOf:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._allMethods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._source())._match_(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"regexpReferencesOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "select:", "allMethods", "match:", "source", "methodReferenceOn:"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-function $HLSearchReferences(){return smalltalk.HLSearchReferences||(typeof HLSearchReferences=="undefined"?nil:HLSearchReferences)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._updateCaches();
-$1=_st($HLSearchReferences())._new();
-_st($1)._searchString_(aString);
-$2=_st($1)._yourself();
-_st(self._announcer())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["updateCaches", "announce:", "announcer", "searchString:", "new", "yourself"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendersOf:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._allMethods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._messageSends())._includes_(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendersOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "select:", "allMethods", "includes:", "messageSends", "methodReferenceOn:"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateCaches",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._updateClassesAndMetaclassesCache();
-$2=_st($1)._updateMethodsCache();
-return self}, function($ctx1) {$ctx1.fill(self,"updateCaches",{},smalltalk.HLReferencesModel)})},
-messageSends: ["updateClassesAndMetaclassesCache", "updateMethodsCache"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateClassesAndMetaclassesCache",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@classesAndMetaclassesCache"]=_st(_st(self._environment())._classes())._inject_into_(_st($OrderedCollection())._new(),(function(acc,each){
-return smalltalk.withContext(function($ctx2) {
-$1=acc;
-_st($1)._add_(each);
-_st($1)._add_(_st(each)._class());
-$2=_st($1)._yourself();
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateClassesAndMetaclassesCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["inject:into:", "classes", "environment", "new", "add:", "class", "yourself"]}),
-smalltalk.HLReferencesModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateMethodsCache",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self["@methodsCache"]=_st(self._classesAndMetaclasses())._inject_into_(_st($OrderedCollection())._new(),(function(acc,each){
-return smalltalk.withContext(function($ctx2) {
-return _st(acc).__comma(_st(each)._methods());
-}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["inject:into:", "classesAndMetaclasses", "new", ",", "methods"]}),
-smalltalk.HLReferencesModel);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-References.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-References", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Helios-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-References');
+smalltalk.packages["Helios-References"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLMethodReference', smalltalk.Object, ['selector', 'methodClass'], 'Helios-References');
 smalltalk.addMethod(
@@ -1111,4 +1112,4 @@ referencedClasses: ["OrderedCollection"]
 smalltalk.HLReferencesModel);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 175
js/Helios-Transcript.deploy.js

@@ -1,175 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Transcript');
-
-smalltalk.addClass('HLTranscript', smalltalk.HLWidget, ['textarea'], 'Helios-Transcript');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@textarea"])._asJQuery())._text_("");
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.HLTranscript)})},
-messageSends: ["text:", "asJQuery"]}),
-smalltalk.HLTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTranscript.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._register();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLTranscript)})},
-messageSends: ["initialize", "register"]}),
-smalltalk.HLTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register",
-fn: function (){
-var self=this;
-function $HLTranscriptHandler(){return smalltalk.HLTranscriptHandler||(typeof HLTranscriptHandler=="undefined"?nil:HLTranscriptHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($HLTranscriptHandler())._register_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.HLTranscript)})},
-messageSends: ["register:"]}),
-smalltalk.HLTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("transcript");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@textarea"]=_st(html)._textarea();
-return self["@textarea"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLTranscript)})},
-messageSends: ["class:", "div", "with:", "textarea"]}),
-smalltalk.HLTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@textarea"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(_st(self["@textarea"])._asJQuery())._append_(_st(aString)._asString());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{aString:aString},smalltalk.HLTranscript)})},
-messageSends: ["ifNotNil:", "append:", "asJQuery", "asString"]}),
-smalltalk.HLTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-function $HLTranscriptHandler(){return smalltalk.HLTranscriptHandler||(typeof HLTranscriptHandler=="undefined"?nil:HLTranscriptHandler)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLTranscript.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st($HLTranscriptHandler())._unregister_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLTranscript)})},
-messageSends: ["unregister", "unregister:"]}),
-smalltalk.HLTranscript);
-
-
-
-smalltalk.addClass('HLTranscriptHandler', smalltalk.Object, [], 'Helios-Transcript');
-
-smalltalk.HLTranscriptHandler.klass.iVarNames = ['transcripts'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._transcripts())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._clear();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["do:", "transcripts", "clear"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
-return smalltalk.withContext(function($ctx1) { 
-_st($Transcript())._register_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["register:"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register:",
-fn: function (aTranscript){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._transcripts())._add_(aTranscript);
-return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["add:", "transcripts"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._transcripts())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._show_(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{aString:aString},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["do:", "transcripts", "show:"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "transcripts",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@transcripts"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@transcripts"]=_st($OrderedCollection())._new();
-$1=self["@transcripts"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"transcripts",{},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister:",
-fn: function (aTranscript){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._transcripts())._remove_(aTranscript);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister:",{aTranscript:aTranscript},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["remove:", "transcripts"]}),
-smalltalk.HLTranscriptHandler.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Transcript.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Transcript", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Helios-Core", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Transcript');
+smalltalk.packages["Helios-Transcript"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLTranscript', smalltalk.HLWidget, ['textarea'], 'Helios-Transcript');
 smalltalk.HLTranscript.comment="I am a widget responsible for displaying transcript contents.\x0a\x0a## Transcript API\x0a\x0a    Transcript \x0a        show: 'hello world';\x0a        cr;\x0a        show: anObject.\x0a\x0a    Transcript clear.\x0a\x0aSee the `Transcript` class.";
@@ -234,4 +235,4 @@ referencedClasses: []
 }),
 smalltalk.HLTranscriptHandler.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 20
js/Helios-Workspace-Tests.deploy.js

@@ -1,20 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Workspace-Tests');
-
-smalltalk.addClass('HLCodeWidgetTest', smalltalk.TestCase, [], 'Helios-Workspace-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testKeyMap",
-fn: function (){
-var self=this;
-function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="undefined"?nil:HLCodeWidget)}
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st($HLCodeWidget())._pcKeyMap())._isKindOf_($HashedCollection()));
-self._assert_(_st(_st($HLCodeWidget())._macKeyMap())._isKindOf_($HashedCollection()));
-return self}, function($ctx1) {$ctx1.fill(self,"testKeyMap",{},smalltalk.HLCodeWidgetTest)})},
-messageSends: ["assert:", "isKindOf:", "pcKeyMap", "macKeyMap"]}),
-smalltalk.HLCodeWidgetTest);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Workspace-Tests.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Workspace-Tests", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/SUnit"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Workspace-Tests');
+smalltalk.packages["Helios-Workspace-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLCodeWidgetTest', smalltalk.TestCase, [], 'Helios-Workspace-Tests');
 smalltalk.addMethod(
@@ -22,4 +23,4 @@ referencedClasses: ["HLCodeWidget", "HashedCollection"]
 smalltalk.HLCodeWidgetTest);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1579
js/Helios-Workspace.deploy.js

@@ -1,1579 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Helios-Workspace');
-
-smalltalk.addClass('HLCodeModel', smalltalk.Object, ['announcer', 'environment', 'receiver'], 'Helios-Workspace');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@announcer"]=_st($Announcer())._new();
-$1=self["@announcer"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLCodeModel)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultReceiver",
-fn: function (){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($DoIt())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultReceiver",{},smalltalk.HLCodeModel)})},
-messageSends: ["new"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doIt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._environment())._eval_on_(aString,self._receiver());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"doIt:",{aString:aString},smalltalk.HLCodeModel)})},
-messageSends: ["eval:on:", "environment", "receiver"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st(_st($HLManager())._current())._environment();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"environment",{},smalltalk.HLCodeModel)})},
-messageSends: ["ifNil:", "environment", "current"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "environment:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@environment"]=anEnvironment;
-return self}, function($ctx1) {$ctx1.fill(self,"environment:",{anEnvironment:anEnvironment},smalltalk.HLCodeModel)})},
-messageSends: []}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._environment())._inspect_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.HLCodeModel)})},
-messageSends: ["inspect:", "environment"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@receiver"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@receiver"]=self._defaultReceiver();
-$1=self["@receiver"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.HLCodeModel)})},
-messageSends: ["ifNil:", "defaultReceiver"]}),
-smalltalk.HLCodeModel);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.HLCodeModel)})},
-messageSends: []}),
-smalltalk.HLCodeModel);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anEnvironment){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._environment_(anEnvironment);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anEnvironment:anEnvironment},smalltalk.HLCodeModel.klass)})},
-messageSends: ["environment:", "new", "yourself"]}),
-smalltalk.HLCodeModel.klass);
-
-
-smalltalk.addClass('HLCodeWidget', smalltalk.HLWidget, ['model', 'wrapper', 'code', 'editor', 'state'], 'Helios-Workspace');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._announcer();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.HLCodeWidget)})},
-messageSends: ["announcer", "model"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._contents_("");
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.HLCodeWidget)})},
-messageSends: ["contents:"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "configureEditor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._editor())._at_put_("amberCodeWidget",self);
-_st(self._editor())._on_do_("change",(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._onChange();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"configureEditor",{},smalltalk.HLCodeWidget)})},
-messageSends: ["at:put:", "editor", "on:do:", "onChange"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getValue();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contents",{},smalltalk.HLCodeWidget)})},
-messageSends: ["getValue"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self["@editor"])._setValue_(aString);
-$1=self["@state"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._updateState();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"contents:",{aString:aString},smalltalk.HLCodeWidget)})},
-messageSends: ["setValue:", "ifNotNil:", "updateState"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentLine",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getLine_(_st(_st(self["@editor"])._getCursor())._line());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentLine",{},smalltalk.HLCodeWidget)})},
-messageSends: ["getLine:", "line", "getCursor"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentLineOrSelection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self["@editor"])._somethingSelected();
-if(smalltalk.assert($2)){
-$1=self._selection();
-} else {
-$1=self._currentLine();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentLineOrSelection",{},smalltalk.HLCodeWidget)})},
-messageSends: ["ifFalse:ifTrue:", "somethingSelected", "currentLine", "selection"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doIt",
-fn: function (){
-var self=this;
-var result;
-function $HLDoItRequested(){return smalltalk.HLDoItRequested||(typeof HLDoItRequested=="undefined"?nil:HLDoItRequested)}
-function $HLDoItExecuted(){return smalltalk.HLDoItExecuted||(typeof HLDoItExecuted=="undefined"?nil:HLDoItExecuted)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(_st(self._model())._announcer())._announce_(_st($HLDoItRequested())._on_(self["@model"]));
-result=_st(self["@model"])._doIt_(self._currentLineOrSelection());
-_st(_st(self._model())._announcer())._announce_(_st($HLDoItExecuted())._on_(self["@model"]));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"doIt",{result:result},smalltalk.HLCodeWidget)})},
-messageSends: ["announce:", "announcer", "model", "on:", "doIt:", "currentLineOrSelection"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@editor"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"editor",{},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editorOptions",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HashedCollection._from_(["theme".__minus_gt("amber"),"lineNumbers".__minus_gt(true),"enterMode".__minus_gt("flat"),"indentWithTabs".__minus_gt(true),"indentUnit".__minus_gt((4)),"matchBrackets".__minus_gt(true),"electricChars".__minus_gt(false),"keyMap".__minus_gt("Amber"),"extraKeys".__minus_gt(smalltalk.HashedCollection._from_(["Shift-Space".__minus_gt("autocomplete")]))]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"editorOptions",{},smalltalk.HLCodeWidget)})},
-messageSends: ["->"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@editor"])._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLCodeWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self["@code"])._asJQuery())._is_(":active");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasFocus",{},smalltalk.HLCodeWidget)})},
-messageSends: ["is:", "asJQuery"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasModification",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"hasModification",{},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectIt",
-fn: function (){
-var self=this;
-var newInspector;
-function $HLInspectItRequested(){return smalltalk.HLInspectItRequested||(typeof HLInspectItRequested=="undefined"?nil:HLInspectItRequested)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._announce_(_st($HLInspectItRequested())._on_(self["@model"]));
-_st(self._model())._inspect_(self._doIt());
-return self}, function($ctx1) {$ctx1.fill(self,"inspectIt",{newInspector:newInspector},smalltalk.HLCodeWidget)})},
-messageSends: ["announce:", "announcer", "model", "on:", "inspect:", "doIt"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageHintFor:token:",
-fn: function (anEditor,aToken){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(_st(_st(_st($Smalltalk())._current())._at_("allSelectors"))._value())._asSet())._asArray())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._includesSubString_(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageHintFor:token:",{anEditor:anEditor,aToken:aToken},smalltalk.HLCodeWidget)})},
-messageSends: ["reject:", "select:", "asArray", "asSet", "value", "at:", "current", "includesSubString:", "string", "="]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model",
-fn: function (){
-var self=this;
-function $HLCodeModel(){return smalltalk.HLCodeModel||(typeof HLCodeModel=="undefined"?nil:HLCodeModel)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@model"]=_st($HLCodeModel())._new();
-$1=self["@model"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLCodeWidget)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "model:",
-fn: function (aModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@model"]=aModel;
-return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onChange",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._updateState();
-return self}, function($ctx1) {$ctx1.fill(self,"onChange",{},smalltalk.HLCodeWidget)})},
-messageSends: ["updateState"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDoIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._doIt();
-return self}, function($ctx1) {$ctx1.fill(self,"onDoIt",{},smalltalk.HLCodeWidget)})},
-messageSends: ["doIt"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onInspectIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._inspectIt();
-return self}, function($ctx1) {$ctx1.fill(self,"onInspectIt",{},smalltalk.HLCodeWidget)})},
-messageSends: ["inspectIt"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onPrintIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._printIt();
-return self}, function($ctx1) {$ctx1.fill(self,"onPrintIt",{},smalltalk.HLCodeWidget)})},
-messageSends: ["printIt"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSaveIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"onSaveIt",{},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "print:",
-fn: function (aString){
-var self=this;
-var start,stop,currentLine;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-currentLine=_st(_st(self["@editor"])._getCursor_(false))._line();
-start=_st($HashedCollection())._new();
-_st(start)._at_put_("line",currentLine);
-_st(start)._at_put_("ch",_st(_st(self["@editor"])._getCursor_(false))._ch());
-_st(_st(self["@editor"])._getSelection())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(start)._at_put_("ch",_st(_st(self["@editor"])._getLine_(currentLine))._size());
-return _st(self["@editor"])._setSelection_end_(smalltalk.HashedCollection._from_(["line".__minus_gt(currentLine),"ch".__minus_gt((0))]),start);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-stop=_st($HashedCollection())._new();
-_st(stop)._at_put_("line",currentLine);
-_st(stop)._at_put_("ch",_st(_st(_st(start)._at_("ch")).__plus(_st(aString)._size())).__plus((2)));
-_st(self["@editor"])._replaceSelection_(_st(_st(_st(_st(self["@editor"])._getSelection()).__comma(" ")).__comma(aString)).__comma(" "));
-_st(self["@editor"])._setCursor_(_st(self["@editor"])._getCursor_(true));
-_st(self["@editor"])._setSelection_end_(stop,start);
-return self}, function($ctx1) {$ctx1.fill(self,"print:",{aString:aString,start:start,stop:stop,currentLine:currentLine},smalltalk.HLCodeWidget)})},
-messageSends: ["line", "getCursor:", "new", "at:put:", "ch", "ifEmpty:", "getSelection", "size", "getLine:", "setSelection:end:", "->", "+", "at:", "replaceSelection:", ",", "setCursor:"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printIt",
-fn: function (){
-var self=this;
-var result;
-function $HLPrintItRequested(){return smalltalk.HLPrintItRequested||(typeof HLPrintItRequested=="undefined"?nil:HLPrintItRequested)}
-return smalltalk.withContext(function($ctx1) { 
-result=self._doIt();
-_st(_st(self._model())._announcer())._announce_(_st($HLPrintItRequested())._on_(self["@model"]));
-self._print_(_st(result)._printString());
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"printIt",{result:result},smalltalk.HLCodeWidget)})},
-messageSends: ["doIt", "announce:", "announcer", "model", "on:", "print:", "printString", "focus"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._model())._receiver();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.HLCodeWidget)})},
-messageSends: ["receiver", "model"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._receiver_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.HLCodeWidget)})},
-messageSends: ["receiver:", "model"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-$1=_st(html)._button();
-_st($1)._class_("button");
-_st($1)._with_("DoIt");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._doIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$3=_st(html)._button();
-_st($3)._class_("button");
-_st($3)._with_("PrintIt");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._printIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$5=_st(html)._button();
-_st($5)._class_("button");
-_st($5)._with_("InspectIt");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._inspectIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLCodeWidget)})},
-messageSends: ["class:", "button", "with:", "onClick:", "doIt", "printIt", "inspectIt"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-$1=_st(html)._div();
-_st($1)._class_("editor");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@code"]=_st(html)._textarea();
-return self["@code"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self["@state"]=_st(_st(html)._div())._class_("state");
-$3=_st(html)._div();
-_st($3)._class_("buttons_bar");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._renderButtonsOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$5=self;
-_st($5)._setEditorOn_(_st(self["@code"])._element());
-_st($5)._configureEditor();
-$6=_st($5)._updateState();
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLCodeWidget)})},
-messageSends: ["class:", "div", "with:", "textarea", "renderButtonsOn:", "setEditorOn:", "element", "configureEditor", "updateState"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "saveIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"saveIt",{},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getSelection();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selection",{},smalltalk.HLCodeWidget)})},
-messageSends: ["getSelection"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectionEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self["@code"])._element())._selectionEnd();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectionEnd",{},smalltalk.HLCodeWidget)})},
-messageSends: ["selectionEnd", "element"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectionEnd:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@code"])._element())._selectionEnd_(anInteger);
-return self}, function($ctx1) {$ctx1.fill(self,"selectionEnd:",{anInteger:anInteger},smalltalk.HLCodeWidget)})},
-messageSends: ["selectionEnd:", "element"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectionStart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self["@code"])._element())._selectionStart();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectionStart",{},smalltalk.HLCodeWidget)})},
-messageSends: ["selectionStart", "element"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectionStart:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@code"])._element())._selectionStart_(anInteger);
-return self}, function($ctx1) {$ctx1.fill(self,"selectionStart:",{anInteger:anInteger},smalltalk.HLCodeWidget)})},
-messageSends: ["selectionStart:", "element"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setEditorOn:",
-fn: function (aTextarea){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@editor'] = CodeMirror.fromTextArea(aTextarea, self._editorOptions());
-return self}, function($ctx1) {$ctx1.fill(self,"setEditorOn:",{aTextarea:aTextarea},smalltalk.HLCodeWidget)})},
-messageSends: []}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateState",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._hasModification();
-if(smalltalk.assert($1)){
-_st(_st(self["@state"])._asJQuery())._addClass_("modified");
-} else {
-_st(_st(self["@state"])._asJQuery())._removeClass_("modified");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"updateState",{},smalltalk.HLCodeWidget)})},
-messageSends: ["ifTrue:ifFalse:", "hasModification", "addClass:", "asJQuery", "removeClass:"]}),
-smalltalk.HLCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableHintFor:token:",
-fn: function (anEditor,aToken){
-var self=this;
-var variables,classNames,pseudoVariables;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-variables=_st(_st(_st(_st(_st(_st(anEditor)._display())._wrapper())._asJQuery())._find_("span.cm-variable"))._get())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._asJQuery())._html();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-classNames=_st(_st(_st($Smalltalk())._current())._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-pseudoVariables=_st(_st($Smalltalk())._current())._pseudoVariableNames();
-$1=_st(_st(_st(_st(_st(_st(variables).__comma(classNames)).__comma(pseudoVariables))._asSet())._asArray())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._includesSubString_(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableHintFor:token:",{anEditor:anEditor,aToken:aToken,variables:variables,classNames:classNames,pseudoVariables:pseudoVariables},smalltalk.HLCodeWidget)})},
-messageSends: ["collect:", "get", "find:", "asJQuery", "wrapper", "display", "html", "classes", "current", "name", "pseudoVariableNames", "reject:", "select:", "asArray", "asSet", ",", "includesSubString:", "string", "="]}),
-smalltalk.HLCodeWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hintFor:options:",
-fn: function (anEditor,options){
-var self=this;
-var cursor,token,completions;
-function $CodeMirror(){return smalltalk.CodeMirror||(typeof CodeMirror=="undefined"?nil:CodeMirror)}
-function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="undefined"?nil:HLCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-cursor=_st(anEditor)._getCursor();
-token=_st(anEditor)._getTokenAt_(cursor);
-_st(token)._at_put_("state",_st(_st(_st($CodeMirror())._basicAt_("innerMode"))._value_value_(_st(anEditor)._getMode(),_st(token)._at_("state")))._state());
-$1=_st(_st(token)._type()).__eq("variable");
-if(smalltalk.assert($1)){
-completions=_st($HLCodeWidget())._variableHintFor_token_(anEditor,token);
-} else {
-completions=_st($HLCodeWidget())._messageHintFor_token_(anEditor,token);
-};
-$2=smalltalk.HashedCollection._from_(["list".__minus_gt(completions),"from".__minus_gt(_st(_st($CodeMirror())._basicAt_("Pos"))._value_value_(_st(cursor)._line(),_st(token)._end())),"to".__minus_gt(_st(_st($CodeMirror())._basicAt_("Pos"))._value_value_(_st(cursor)._line(),_st(token)._start()))]);
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"hintFor:options:",{anEditor:anEditor,options:options,cursor:cursor,token:token,completions:completions},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["getCursor", "getTokenAt:", "at:put:", "state", "value:value:", "basicAt:", "getMode", "at:", "ifTrue:ifFalse:", "=", "type", "variableHintFor:token:", "messageHintFor:token:", "->", "line", "end", "start"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.HLCodeWidget.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-$1=self;
-_st($1)._setupCodeMirror();
-_st($1)._setupCommands();
-$2=_st($1)._setupKeyMaps();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["initialize", "setupCodeMirror", "setupCommands", "setupKeyMaps"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyMap",
-fn: function (){
-var self=this;
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st(_st($HLManager())._current())._keyBinder())._systemIsMac();
-if(smalltalk.assert($2)){
-$1=self._macKeyMap();
-} else {
-$1=self._pcKeyMap();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyMap",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["ifTrue:ifFalse:", "systemIsMac", "keyBinder", "current", "macKeyMap", "pcKeyMap"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "macKeyMap",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HashedCollection._from_(["Alt-Backspace".__minus_gt("delWordBefore"),"Alt-Delete".__minus_gt("delWordAfter"),"Alt-Left".__minus_gt("goWordBoundaryLeft"),"Alt-Right".__minus_gt("goWordBoundaryRight"),"Cmd-A".__minus_gt("selectAll"),"Cmd-Alt-F".__minus_gt("replace"),"Cmd-D".__minus_gt("doIt"),"Cmd-Down".__minus_gt("goDocEnd"),"Cmd-End".__minus_gt("goDocEnd"),"Cmd-F".__minus_gt("find"),"Cmd-G".__minus_gt("findNext"),"Cmd-I".__minus_gt("inspectIt"),"Cmd-Left".__minus_gt("goLineStart"),"Cmd-P".__minus_gt("printIt"),"Cmd-Right".__minus_gt("goLineEnd"),"Cmd-S".__minus_gt("saveIt"),"Cmd-Up".__minus_gt("goDocStart"),"Cmd-Y".__minus_gt("redo"),"Cmd-Z".__minus_gt("undo"),"Cmd-[".__minus_gt("indentLess"),"Cmd-]".__minus_gt("indentMore"),"Ctrl-Alt-Backspace".__minus_gt("delWordAfter"),"Shift-Cmd-Alt-F".__minus_gt("replaceAll"),"Shift-Cmd-G".__minus_gt("findPrev"),"Shift-Cmd-Z".__minus_gt("redo"),"fallthrough".__minus_gt(["basic","emacsy"])]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"macKeyMap",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["->"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageHintFor:token:",
-fn: function (anEditor,aToken){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(anEditor)._at_("amberCodeWidget"))._messageHintFor_token_(anEditor,aToken);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageHintFor:token:",{anEditor:anEditor,aToken:aToken},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["messageHintFor:token:", "at:"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pcKeyMap",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HashedCollection._from_(["Alt-Left".__minus_gt("goLineStart"),"Alt-Right".__minus_gt("goLineEnd"),"Alt-Up".__minus_gt("goDocStart"),"Ctrl-A".__minus_gt("selectAll"),"Ctrl-Backspace".__minus_gt("delWordBefore"),"Ctrl-D".__minus_gt("doIt"),"Ctrl-Delete".__minus_gt("delWordAfter"),"Ctrl-Down".__minus_gt("goDocEnd"),"Ctrl-End".__minus_gt("goDocEnd"),"Ctrl-F".__minus_gt("find"),"Ctrl-G".__minus_gt("findNext"),"Ctrl-I".__minus_gt("inspectIt"),"Ctrl-Home".__minus_gt("goDocStart"),"Ctrl-Left".__minus_gt("goWordBoundaryLeft"),"Ctrl-P".__minus_gt("printIt"),"Ctrl-Right".__minus_gt("goWordBoundaryRight"),"Ctrl-S".__minus_gt("saveIt"),"Ctrl-Y".__minus_gt("redo"),"Ctrl-Z".__minus_gt("undo"),"Ctrl-[".__minus_gt("indentLess"),"Ctrl-]".__minus_gt("indentMore"),"Shift-Ctrl-F".__minus_gt("replace"),"Shift-Ctrl-G".__minus_gt("findPrev"),"Shift-Ctrl-R".__minus_gt("replaceAll"),"Shift-Ctrl-Z".__minus_gt("redo"),"fallthrough".__minus_gt(["basic"])]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pcKeyMap",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["->"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupCodeMirror",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- 
-		CodeMirror.keyMap.default.fallthrough = ["basic"];
-		CodeMirror.commands.autocomplete = function(cm) {
-        	CodeMirror.showHint(cm, self._hintFor_options_);
-      	}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"setupCodeMirror",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: []}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupCommands",
-fn: function (){
-var self=this;
-function $CodeMirror(){return smalltalk.CodeMirror||(typeof CodeMirror=="undefined"?nil:CodeMirror)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($CodeMirror())._basicAt_("commands");
-_st($1)._at_put_("doIt",(function(cm){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(cm)._amberCodeWidget())._doIt();
-}, function($ctx2) {$ctx2.fillBlock({cm:cm},$ctx1,1)})}));
-_st($1)._at_put_("inspectIt",(function(cm){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(cm)._amberCodeWidget())._inspectIt();
-}, function($ctx2) {$ctx2.fillBlock({cm:cm},$ctx1,2)})}));
-_st($1)._at_put_("printIt",(function(cm){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(cm)._amberCodeWidget())._printIt();
-}, function($ctx2) {$ctx2.fillBlock({cm:cm},$ctx1,3)})}));
-$2=_st($1)._at_put_("saveIt",(function(cm){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(cm)._amberCodeWidget())._saveIt();
-}, function($ctx2) {$ctx2.fillBlock({cm:cm},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupCommands",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["at:put:", "basicAt:", "doIt", "amberCodeWidget", "inspectIt", "printIt", "saveIt"]}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupKeyMaps",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-CodeMirror.keyMap['Amber'] = self._keyMap();
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyMaps",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: []}),
-smalltalk.HLCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variableHintFor:token:",
-fn: function (anEditor,aToken){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(anEditor)._at_("amberCodeWidget"))._variableHintFor_token_(anEditor,aToken);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableHintFor:token:",{anEditor:anEditor,aToken:aToken},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["variableHintFor:token:", "at:"]}),
-smalltalk.HLCodeWidget.klass);
-
-
-smalltalk.addClass('HLNavigationCodeWidget', smalltalk.HLCodeWidget, ['methodContents'], 'Helios-Workspace');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "configureEditor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLNavigationCodeWidget.superclass.fn.prototype._configureEditor.apply(_st(self), []);
-self._contents_(self._methodContents());
-return self}, function($ctx1) {$ctx1.fill(self,"configureEditor",{},smalltalk.HLNavigationCodeWidget)})},
-messageSends: ["configureEditor", "contents:", "methodContents"]}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._methodContents_(aString);
-smalltalk.HLNavigationCodeWidget.superclass.fn.prototype._contents_.apply(_st(self), [aString]);
-return self}, function($ctx1) {$ctx1.fill(self,"contents:",{aString:aString},smalltalk.HLNavigationCodeWidget)})},
-messageSends: ["methodContents:", "contents:"]}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hasModification",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._methodContents()).__eq(self._contents()))._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasModification",{},smalltalk.HLNavigationCodeWidget)})},
-messageSends: ["not", "=", "methodContents", "contents"]}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodContents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@methodContents"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodContents",{},smalltalk.HLNavigationCodeWidget)})},
-messageSends: ["ifNil:"]}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodContents:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@methodContents"]=aString;
-$1=self["@methodContents"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodContents:",{aString:aString},smalltalk.HLNavigationCodeWidget)})},
-messageSends: []}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"previous",{},smalltalk.HLNavigationCodeWidget)})},
-messageSends: []}),
-smalltalk.HLNavigationCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "previous:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"previous:",{aWidget:aWidget},smalltalk.HLNavigationCodeWidget)})},
-messageSends: []}),
-smalltalk.HLNavigationCodeWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLNavigationCodeWidget.klass)})},
-messageSends: []}),
-smalltalk.HLNavigationCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aBrowserModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._browserModel_(aBrowserModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aBrowserModel:aBrowserModel},smalltalk.HLNavigationCodeWidget.klass)})},
-messageSends: ["browserModel:", "new", "yourself"]}),
-smalltalk.HLNavigationCodeWidget.klass);
-
-
-smalltalk.addClass('HLBrowserCodeWidget', smalltalk.HLNavigationCodeWidget, ['browserModel'], 'Helios-Workspace');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browserModel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@browserModel"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"browserModel",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: []}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browserModel:",
-fn: function (aBrowserModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@browserModel"]=aBrowserModel;
-$1=self;
-_st($1)._observeSystem();
-$2=_st($1)._observeBrowserModel();
-return self}, function($ctx1) {$ctx1.fill(self,"browserModel:",{aBrowserModel:aBrowserModel},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["observeSystem", "observeBrowserModel"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeBrowserModel",
-fn: function (){
-var self=this;
-function $HLSaveSourceCode(){return smalltalk.HLSaveSourceCode||(typeof HLSaveSourceCode=="undefined"?nil:HLSaveSourceCode)}
-function $HLShowInstanceToggled(){return smalltalk.HLShowInstanceToggled||(typeof HLShowInstanceToggled=="undefined"?nil:HLShowInstanceToggled)}
-function $HLSourceCodeSaved(){return smalltalk.HLSourceCodeSaved||(typeof HLSourceCodeSaved=="undefined"?nil:HLSourceCodeSaved)}
-function $HLAboutToChange(){return smalltalk.HLAboutToChange||(typeof HLAboutToChange=="undefined"?nil:HLAboutToChange)}
-function $HLParseErrorRaised(){return smalltalk.HLParseErrorRaised||(typeof HLParseErrorRaised=="undefined"?nil:HLParseErrorRaised)}
-function $HLCompileErrorRaised(){return smalltalk.HLCompileErrorRaised||(typeof HLCompileErrorRaised=="undefined"?nil:HLCompileErrorRaised)}
-function $HLUnknownVariableErrorRaised(){return smalltalk.HLUnknownVariableErrorRaised||(typeof HLUnknownVariableErrorRaised=="undefined"?nil:HLUnknownVariableErrorRaised)}
-function $HLInstVarAdded(){return smalltalk.HLInstVarAdded||(typeof HLInstVarAdded=="undefined"?nil:HLInstVarAdded)}
-function $HLMethodSelected(){return smalltalk.HLMethodSelected||(typeof HLMethodSelected=="undefined"?nil:HLMethodSelected)}
-function $HLClassSelected(){return smalltalk.HLClassSelected||(typeof HLClassSelected=="undefined"?nil:HLClassSelected)}
-function $HLProtocolSelected(){return smalltalk.HLProtocolSelected||(typeof HLProtocolSelected=="undefined"?nil:HLProtocolSelected)}
-function $HLSourceCodeFocusRequested(){return smalltalk.HLSourceCodeFocusRequested||(typeof HLSourceCodeFocusRequested=="undefined"?nil:HLSourceCodeFocusRequested)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._browserModel())._announcer();
-_st($1)._on_send_to_($HLSaveSourceCode(),"onSaveIt",self);
-_st($1)._on_send_to_($HLShowInstanceToggled(),"onShowInstanceToggled",self);
-_st($1)._on_send_to_($HLSourceCodeSaved(),"onSourceCodeSaved",self);
-_st($1)._on_send_to_($HLAboutToChange(),"onBrowserAboutToChange:",self);
-_st($1)._on_send_to_($HLParseErrorRaised(),"onParseError:",self);
-_st($1)._on_send_to_($HLCompileErrorRaised(),"onCompileError:",self);
-_st($1)._on_send_to_($HLUnknownVariableErrorRaised(),"onUnknownVariableError:",self);
-_st($1)._on_send_to_($HLInstVarAdded(),"onInstVarAdded",self);
-_st($1)._on_send_to_($HLMethodSelected(),"onMethodSelected:",self);
-_st($1)._on_send_to_($HLClassSelected(),"onClassSelected:",self);
-_st($1)._on_send_to_($HLProtocolSelected(),"onProtocolSelected:",self);
-$2=_st($1)._on_send_to_($HLSourceCodeFocusRequested(),"onSourceCodeFocusRequested",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeBrowserModel",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["on:send:to:", "announcer", "browserModel"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeSystem",
-fn: function (){
-var self=this;
-function $MethodModified(){return smalltalk.MethodModified||(typeof MethodModified=="undefined"?nil:MethodModified)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._browserModel())._systemAnnouncer())._on_send_to_($MethodModified(),"onMethodModified:",self);
-return self}, function($ctx1) {$ctx1.fill(self,"observeSystem",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["on:send:to:", "systemAnnouncer", "browserModel"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onBrowserAboutToChange:",
-fn: function (anAnnouncement){
-var self=this;
-var block;
-function $HLChangeForbidden(){return smalltalk.HLChangeForbidden||(typeof HLChangeForbidden=="undefined"?nil:HLChangeForbidden)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-block=_st(anAnnouncement)._actionBlock();
-$1=self._hasModification();
-if(smalltalk.assert($1)){
-self._confirm_ifTrue_("Changes have not been saved. Do you want to discard these changes?",(function(){
-return smalltalk.withContext(function($ctx2) {
-self._methodContents_(self._contents());
-return _st(block)._value();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st($HLChangeForbidden())._signal();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onBrowserAboutToChange:",{anAnnouncement:anAnnouncement,block:block},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["actionBlock", "ifTrue:", "hasModification", "confirm:ifTrue:", "methodContents:", "contents", "value", "signal"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onClassSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var class_;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-class_=_st(anAnnouncement)._item();
-$1=class_;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._contents_("");
-return $2;
-} else {
-$1;
-};
-self._contents_(_st(class_)._definition());
-return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{anAnnouncement:anAnnouncement,class_:class_},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["item", "ifNil:", "contents:", "definition"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onCompileError:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._alert_(_st(_st(anAnnouncement)._error())._messageText());
-return self}, function($ctx1) {$ctx1.fill(self,"onCompileError:",{anAnnouncement:anAnnouncement},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["alert:", "messageText", "error"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onInstVarAdded",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._browserModel())._save_(self._contents());
-return self}, function($ctx1) {$ctx1.fill(self,"onInstVarAdded",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["save:", "browserModel", "contents"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodModified:",
-fn: function (anAnnouncement){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-method=_st(anAnnouncement)._method();
-$1=_st(_st(self._browserModel())._selectedClass()).__eq(_st(method)._methodClass());
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=_st(self._browserModel())._selectedMethod();
-if(($receiver = $3) == nil || $receiver == undefined){
-$4=self;
-return $4;
-} else {
-$3;
-};
-$5=_st(_st(_st(self._browserModel())._selectedMethod())._selector()).__eq(_st(method)._selector());
-if(! smalltalk.assert($5)){
-$6=self;
-return $6;
-};
-self._refresh();
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodModified:",{anAnnouncement:anAnnouncement,method:method},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["method", "ifFalse:", "=", "selectedClass", "browserModel", "methodClass", "ifNil:", "selectedMethod", "selector", "refresh"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onMethodSelected:",
-fn: function (anAnnouncement){
-var self=this;
-var method;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-method=_st(anAnnouncement)._item();
-$1=method;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._contents_("");
-return $2;
-} else {
-$1;
-};
-self._contents_(_st(method)._source());
-return self}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{anAnnouncement:anAnnouncement,method:method},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["item", "ifNil:", "contents:", "source"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onParseError:",
-fn: function (anAnnouncement){
-var self=this;
-var lineIndex,newContents;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-lineIndex=(1);
-self._contents_(_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._contents())._linesDo_((function(each){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(lineIndex).__eq(_st(anAnnouncement)._line());
-if(smalltalk.assert($1)){
-$2=stream;
-_st($2)._nextPutAll_(_st(each)._copyFrom_to_((1),_st(anAnnouncement)._column()));
-_st($2)._nextPutAll_("<- ");
-_st($2)._nextPutAll_(_st(anAnnouncement)._message());
-_st($2)._nextPutAll_(" ");
-$3=_st($2)._nextPutAll_(_st(each)._copyFrom_to_(_st(_st(anAnnouncement)._column()).__plus((1)),_st(each)._size()));
-$3;
-} else {
-_st(stream)._nextPutAll_(each);
-};
-_st(stream)._nextPutAll_(_st($String())._cr());
-lineIndex=_st(lineIndex).__plus((1));
-return lineIndex;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"onParseError:",{anAnnouncement:anAnnouncement,lineIndex:lineIndex,newContents:newContents},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["contents:", "streamContents:", "linesDo:", "contents", "ifTrue:ifFalse:", "=", "line", "nextPutAll:", "copyFrom:to:", "column", "message", "+", "size", "cr"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onProtocolSelected:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._browserModel())._selectedClass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._contents_("");
-return $2;
-} else {
-$1;
-};
-self._contents_(_st(_st(self._browserModel())._selectedClass())._definition());
-return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["ifNil:", "selectedClass", "browserModel", "contents:", "definition"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSaveIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._browserModel())._save_(self._contents());
-return self}, function($ctx1) {$ctx1.fill(self,"onSaveIt",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["save:", "browserModel", "contents"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onShowInstanceToggled",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(self._browserModel())._selectedClass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._contents_("");
-return $2;
-} else {
-$1;
-};
-self._contents_(_st(_st(self._browserModel())._selectedClass())._definition());
-return self}, function($ctx1) {$ctx1.fill(self,"onShowInstanceToggled",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["ifNil:", "selectedClass", "browserModel", "contents:", "definition"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSourceCodeFocusRequested",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"onSourceCodeFocusRequested",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["focus"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onSourceCodeSaved",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._methodContents_(self._contents());
-self._updateState();
-return self}, function($ctx1) {$ctx1.fill(self,"onSourceCodeSaved",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["methodContents:", "contents", "updateState"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onUnknownVariableError:",
-fn: function (anAnnouncement){
-var self=this;
-var error;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-error=_st(anAnnouncement)._error();
-self._confirm_ifTrue_(_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
-$1=stream;
-_st($1)._nextPutAll_(_st(error)._messageText());
-_st($1)._nextPutAll_(_st($String())._cr());
-$2=_st($1)._nextPutAll_("Would you like to define an instance variable?");
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})})),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._browserModel())._addInstVarNamed_(_st(error)._variableName());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"onUnknownVariableError:",{anAnnouncement:anAnnouncement,error:error},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["error", "confirm:ifTrue:", "streamContents:", "nextPutAll:", "messageText", "cr", "addInstVarNamed:", "browserModel", "variableName"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self._hasModification();
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$3=self._hasFocus();
-if(smalltalk.assert($3)){
-$4=self;
-return $4;
-};
-self._contents_(_st(_st(self._browserModel())._selectedMethod())._source());
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["ifTrue:", "hasModification", "hasFocus", "contents:", "source", "selectedMethod", "browserModel"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._button();
-_st($1)._class_("button");
-_st($1)._with_("SaveIt");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._saveIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-smalltalk.HLBrowserCodeWidget.superclass.fn.prototype._renderButtonsOn_.apply(_st(self), [html]);
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["class:", "button", "with:", "onClick:", "saveIt", "renderButtonsOn:"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "saveIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._browserModel())._saveSourceCode();
-return self}, function($ctx1) {$ctx1.fill(self,"saveIt",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["saveSourceCode", "browserModel"]}),
-smalltalk.HLBrowserCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLBrowserCodeWidget.superclass.fn.prototype._unregsiter.apply(_st(self), []);
-_st(_st(self._browserModel())._announcer())._unsubscribe_(self);
-_st(_st(self._browserModel())._systemAnnouncer())._unsubscribe_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["unregsiter", "unsubscribe:", "announcer", "browserModel", "systemAnnouncer"]}),
-smalltalk.HLBrowserCodeWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLBrowserCodeWidget.klass)})},
-messageSends: []}),
-smalltalk.HLBrowserCodeWidget.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aBrowserModel){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._browserModel_(aBrowserModel);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aBrowserModel:aBrowserModel},smalltalk.HLBrowserCodeWidget.klass)})},
-messageSends: ["browserModel:", "new", "yourself"]}),
-smalltalk.HLBrowserCodeWidget.klass);
-
-
-smalltalk.addClass('HLWorkspace', smalltalk.HLWidget, ['codeWidget', 'transcript'], 'Helios-Workspace');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canHaveFocus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canHaveFocus",{},smalltalk.HLWorkspace)})},
-messageSends: []}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeWidget",
-fn: function (){
-var self=this;
-function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="undefined"?nil:HLCodeWidget)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@codeWidget"]=_st($HLCodeWidget())._new();
-$1=self["@codeWidget"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLWorkspace)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._codeWidget())._focus();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.HLWorkspace)})},
-messageSends: ["focus", "codeWidget"]}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(html)._with_(_st($HLContainer())._with_(_st($HLHorizontalSplitter())._with_with_(self._codeWidget(),(function(canvas){
-return smalltalk.withContext(function($ctx2) {
-return self._renderTranscriptOn_(canvas);
-}, function($ctx2) {$ctx2.fillBlock({canvas:canvas},$ctx1,1)})}))));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLWorkspace)})},
-messageSends: ["with:", "with:with:", "codeWidget", "renderTranscriptOn:"]}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTranscriptOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-$1=_st(html)._div();
-_st($1)._class_("transcript-container");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._div();
-_st($3)._class_("list-label");
-$4=_st($3)._with_("Transcript");
-$4;
-return _st(self._transcript())._renderOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTranscriptOn:",{html:html},smalltalk.HLWorkspace)})},
-messageSends: ["class:", "div", "with:", "renderOn:", "transcript"]}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "transcript",
-fn: function (){
-var self=this;
-function $HLTranscript(){return smalltalk.HLTranscript||(typeof HLTranscript=="undefined"?nil:HLTranscript)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@transcript"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@transcript"]=_st($HLTranscript())._new();
-$1=self["@transcript"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"transcript",{},smalltalk.HLWorkspace)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.HLWorkspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unregister",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLWorkspace.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st(self._transcript())._unregister();
-return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLWorkspace)})},
-messageSends: ["unregister", "transcript"]}),
-smalltalk.HLWorkspace);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeOpenAsTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeOpenAsTab",{},smalltalk.HLWorkspace.klass)})},
-messageSends: []}),
-smalltalk.HLWorkspace.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "workspace";
-}, function($ctx1) {$ctx1.fill(self,"tabClass",{},smalltalk.HLWorkspace.klass)})},
-messageSends: []}),
-smalltalk.HLWorkspace.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabLabel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Workspace";
-}, function($ctx1) {$ctx1.fill(self,"tabLabel",{},smalltalk.HLWorkspace.klass)})},
-messageSends: []}),
-smalltalk.HLWorkspace.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabPriority",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (10);
-}, function($ctx1) {$ctx1.fill(self,"tabPriority",{},smalltalk.HLWorkspace.klass)})},
-messageSends: []}),
-smalltalk.HLWorkspace.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Helios-Workspace.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Helios-Workspace", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Helios-Core"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Helios-Workspace');
+smalltalk.packages["Helios-Workspace"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('HLCodeModel', smalltalk.Object, ['announcer', 'environment', 'receiver'], 'Helios-Workspace');
 smalltalk.addMethod(
@@ -2076,4 +2077,4 @@ referencedClasses: []
 }),
 smalltalk.HLWorkspace.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 5540
js/IDE.deploy.js

@@ -1,5540 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('IDE');
-
-smalltalk.addClass('ClassesList', smalltalk.Widget, ['browser', 'ul', 'nodes'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browser",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@browser"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"browser",{},smalltalk.ClassesList)})},
-messageSends: []}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browser:",
-fn: function (aBrowser){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@browser"]=aBrowser;
-return self}, function($ctx1) {$ctx1.fill(self,"browser:",{aBrowser:aBrowser},smalltalk.ClassesList)})},
-messageSends: []}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._browser())._selectedPackage();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.ClassesList)})},
-messageSends: ["selectedPackage", "browser"]}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "getNodes",
-fn: function (){
-var self=this;
-var classes,children,others;
-function $ClassesListNode(){return smalltalk.ClassesListNode||(typeof ClassesListNode=="undefined"?nil:ClassesListNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-classes=_st(self._browser())._classes();
-children=[];
-others=[];
-_st(classes)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(classes)._includes_(_st(each)._superclass());
-if(smalltalk.assert($1)){
-return _st(others)._add_(each);
-} else {
-return _st(children)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=_st(children)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st($ClassesListNode())._on_browser_classes_level_(each,self._browser(),others,(0));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"getNodes",{classes:classes,children:children,others:others},smalltalk.ClassesList)})},
-messageSends: ["classes", "browser", "do:", "ifFalse:ifTrue:", "includes:", "superclass", "add:", "collect:", "on:browser:classes:level:"]}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self["@nodes"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@nodes"]=self._getNodes();
-self["@nodes"];
-} else {
-$1;
-};
-$2=self["@nodes"];
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.ClassesList)})},
-messageSends: ["ifNil:", "getNodes"]}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._ul();
-_st($1)._class_("amber_column browser classes");
-$2=_st($1)._yourself();
-self["@ul"]=$2;
-self._updateNodes();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.ClassesList)})},
-messageSends: ["class:", "ul", "yourself", "updateNodes"]}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetNodes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@nodes"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"resetNodes",{},smalltalk.ClassesList)})},
-messageSends: []}),
-smalltalk.ClassesList);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateNodes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@ul"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each)._renderOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateNodes",{},smalltalk.ClassesList)})},
-messageSends: ["contents:", "do:", "nodes", "renderOn:"]}),
-smalltalk.ClassesList);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aBrowser){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._browser_(aBrowser);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aBrowser:aBrowser},smalltalk.ClassesList.klass)})},
-messageSends: ["browser:", "new", "yourself"]}),
-smalltalk.ClassesList.klass);
-
-
-smalltalk.addClass('ClassesListNode', smalltalk.Widget, ['browser', 'theClass', 'level', 'nodes'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browser",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@browser"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"browser",{},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "browser:",
-fn: function (aBrowser){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@browser"]=aBrowser;
-return self}, function($ctx1) {$ctx1.fill(self,"browser:",{aBrowser:aBrowser},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "getNodesFrom:",
-fn: function (aCollection){
-var self=this;
-var children,others;
-function $ClassesListNode(){return smalltalk.ClassesListNode||(typeof ClassesListNode=="undefined"?nil:ClassesListNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-children=[];
-others=[];
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(each)._superclass()).__eq(self._theClass());
-if(smalltalk.assert($1)){
-return _st(children)._add_(each);
-} else {
-return _st(others)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self["@nodes"]=_st(children)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st($ClassesListNode())._on_browser_classes_level_(each,self._browser(),others,_st(self._level()).__plus((1)));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},smalltalk.ClassesListNode)})},
-messageSends: ["do:", "ifTrue:ifFalse:", "=", "superclass", "theClass", "add:", "collect:", "on:browser:classes:level:", "browser", "+", "level"]}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-var str;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-str=_st(_st($String())._new())._writeStream();
-_st(self._level())._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(str)._nextPutAll_("&nbsp;&nbsp;&nbsp;&nbsp;");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(str)._nextPutAll_(_st(self._theClass())._name());
-$1=_st(str)._contents();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{str:str},smalltalk.ClassesListNode)})},
-messageSends: ["writeStream", "new", "timesRepeat:", "level", "nextPutAll:", "name", "theClass", "contents"]}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "level",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@level"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"level",{},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "level:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@level"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"level:",{anInteger:anInteger},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@nodes"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-var li,cssClass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-cssClass="";
-li=_st(_st(html)._li())._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._browser())._selectClass_(self._theClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(_st(li)._asJQuery())._html_(self._label());
-$1=_st(_st(self._browser())._selectedClass()).__eq(self._theClass());
-if(smalltalk.assert($1)){
-cssClass=_st(cssClass).__comma(" selected");
-cssClass;
-};
-$2=_st(_st(self._theClass())._comment())._isEmpty();
-if(! smalltalk.assert($2)){
-cssClass=_st(cssClass).__comma(" commented");
-cssClass;
-};
-_st(li)._class_(cssClass);
-_st(self._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._renderOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html,li:li,cssClass:cssClass},smalltalk.ClassesListNode)})},
-messageSends: ["onClick:", "li", "selectClass:", "browser", "theClass", "html:", "asJQuery", "label", "ifTrue:", "=", "selectedClass", ",", "ifFalse:", "isEmpty", "comment", "class:", "do:", "nodes", "renderOn:"]}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassesListNode)})},
-messageSends: []}),
-smalltalk.ClassesListNode);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:browser:classes:level:",
-fn: function (aClass,aBrowser,aCollection,anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._theClass_(aClass);
-_st($2)._browser_(aBrowser);
-_st($2)._level_(anInteger);
-_st($2)._getNodesFrom_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:browser:classes:level:",{aClass:aClass,aBrowser:aBrowser,aCollection:aCollection,anInteger:anInteger},smalltalk.ClassesListNode.klass)})},
-messageSends: ["theClass:", "new", "browser:", "level:", "getNodesFrom:", "yourself"]}),
-smalltalk.ClassesListNode.klass);
-
-
-smalltalk.addClass('DebugErrorHandler', smalltalk.ErrorHandler, [], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleError:",
-fn: function (anError){
-var self=this;
-function $Debugger(){return smalltalk.Debugger||(typeof Debugger=="undefined"?nil:Debugger)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st($Debugger())._new();
-_st($1)._error_(anError);
-$2=_st($1)._open();
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(error){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($ErrorHandler())._new())._handleError_(error);
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.DebugErrorHandler)})},
-messageSends: ["on:do:", "error:", "new", "open", "handleError:"]}),
-smalltalk.DebugErrorHandler);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._register();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.DebugErrorHandler.klass)})},
-messageSends: ["register"]}),
-smalltalk.DebugErrorHandler.klass);
-
-
-smalltalk.addClass('SourceArea', smalltalk.Widget, ['editor', 'div', 'receiver', 'onDoIt'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._val_("");
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.SourceArea)})},
-messageSends: ["val:"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentLine",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getLine_(_st(_st(self["@editor"])._getCursor())._line());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentLine",{},smalltalk.SourceArea)})},
-messageSends: ["getLine:", "line", "getCursor"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currentLineOrSelection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self["@editor"])._somethingSelected();
-if(smalltalk.assert($2)){
-$1=self._selection();
-} else {
-$1=self._currentLine();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"currentLineOrSelection",{},smalltalk.SourceArea)})},
-messageSends: ["ifFalse:ifTrue:", "somethingSelected", "currentLine", "selection"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doIt",
-fn: function (){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-result=self._eval_(self._currentLineOrSelection());
-$1=self._onDoIt();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self._onDoIt())._value();
-};
-$2=result;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"doIt",{result:result},smalltalk.SourceArea)})},
-messageSends: ["eval:", "currentLineOrSelection", "ifNotNil:", "onDoIt", "value"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "editor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@editor"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"editor",{},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:",
-fn: function (aString){
-var self=this;
-var compiler;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-compiler=_st($Compiler())._new();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(compiler)._parseExpression_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-$1=self._alert_(_st(ex)._messageText());
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})}));
-$2=_st(compiler)._evaluateExpression_on_(aString,self._receiver());
-return $2;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,compiler:compiler},smalltalk.SourceArea)})},
-messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "evaluateExpression:on:", "receiver"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fileIn",
-fn: function (){
-var self=this;
-function $Importer(){return smalltalk.Importer||(typeof Importer=="undefined"?nil:Importer)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($Importer())._new())._import_(_st(self._currentLineOrSelection())._readStream());
-return self}, function($ctx1) {$ctx1.fill(self,"fileIn",{},smalltalk.SourceArea)})},
-messageSends: ["import:", "new", "readStream", "currentLineOrSelection"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "focus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._editor())._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"focus",{},smalltalk.SourceArea)})},
-messageSends: ["focus", "editor"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleKeyDown:",
-fn: function (anEvent){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-if(anEvent.ctrlKey) {
-		if(anEvent.keyCode === 80) { //ctrl+p
-			self._printIt();
-			anEvent.preventDefault();
-			return false;
-		}
-		if(anEvent.keyCode === 68) { //ctrl+d
-			self._doIt();
-			anEvent.preventDefault();
-			return false;
-		}
-		if(anEvent.keyCode === 73) { //ctrl+i
-			self._inspectIt();
-			anEvent.preventDefault();
-			return false;
-		}
-	};
-return self}, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{anEvent:anEvent},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._doIt())._inspect();
-return self}, function($ctx1) {$ctx1.fill(self,"inspectIt",{},smalltalk.SourceArea)})},
-messageSends: ["inspect", "doIt"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDoIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@onDoIt"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"onDoIt",{},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onDoIt:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@onDoIt"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"onDoIt:",{aBlock:aBlock},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyDown:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@div"])._onKeyDown_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{aBlock:aBlock},smalltalk.SourceArea)})},
-messageSends: ["onKeyDown:"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onKeyUp:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@div"])._onKeyUp_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onKeyUp:",{aBlock:aBlock},smalltalk.SourceArea)})},
-messageSends: ["onKeyUp:"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "print:",
-fn: function (aString){
-var self=this;
-var start,stop,currentLine;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-currentLine=_st(_st(self["@editor"])._getCursor_(false))._line();
-start=_st($HashedCollection())._new();
-_st(start)._at_put_("line",currentLine);
-_st(start)._at_put_("ch",_st(_st(self["@editor"])._getCursor_(false))._ch());
-_st(_st(self["@editor"])._getSelection())._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(start)._at_put_("ch",_st(_st(self["@editor"])._getLine_(currentLine))._size());
-return _st(self["@editor"])._setSelection_end_(smalltalk.HashedCollection._from_(["line".__minus_gt(currentLine),"ch".__minus_gt((0))]),start);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-stop=_st($HashedCollection())._new();
-_st(stop)._at_put_("line",currentLine);
-_st(stop)._at_put_("ch",_st(_st(_st(start)._at_("ch")).__plus(_st(aString)._size())).__plus((2)));
-_st(self["@editor"])._replaceSelection_(_st(_st(_st(_st(self["@editor"])._getSelection()).__comma(" ")).__comma(aString)).__comma(" "));
-_st(self["@editor"])._setCursor_(_st(self["@editor"])._getCursor_(true));
-_st(self["@editor"])._setSelection_end_(stop,start);
-return self}, function($ctx1) {$ctx1.fill(self,"print:",{aString:aString,start:start,stop:stop,currentLine:currentLine},smalltalk.SourceArea)})},
-messageSends: ["line", "getCursor:", "new", "at:put:", "ch", "ifEmpty:", "getSelection", "size", "getLine:", "setSelection:end:", "->", "+", "at:", "replaceSelection:", ",", "setCursor:"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._print_(_st(self._doIt())._printString());
-self._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"printIt",{},smalltalk.SourceArea)})},
-messageSends: ["print:", "printString", "doIt", "focus"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@receiver"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=_st($DoIt())._new();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.SourceArea)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-var textarea;
-return smalltalk.withContext(function($ctx1) { 
-self["@div"]=_st(_st(html)._div())._class_("source");
-_st(self["@div"])._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-textarea=_st(html)._textarea();
-return textarea;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self._setEditorOn_(_st(textarea)._element());
-_st(self["@div"])._onKeyDown_((function(e){
-return smalltalk.withContext(function($ctx2) {
-return self._handleKeyDown_(e);
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html,textarea:textarea},smalltalk.SourceArea)})},
-messageSends: ["class:", "div", "with:", "textarea", "setEditorOn:", "element", "onKeyDown:", "handleKeyDown:"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getSelection();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selection",{},smalltalk.SourceArea)})},
-messageSends: ["getSelection"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setEditorOn:",
-fn: function (aTextarea){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
-		theme: 'amber',
-				lineNumbers: true,
-				enterMode: 'flat',
-				indentWithTabs: true,
-				indentUnit: 4,
-				matchBrackets: true,
-				electricChars: false
-	});
-return self}, function($ctx1) {$ctx1.fill(self,"setEditorOn:",{aTextarea:aTextarea},smalltalk.SourceArea)})},
-messageSends: []}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "val",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@editor"])._getValue();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"val",{},smalltalk.SourceArea)})},
-messageSends: ["getValue"]}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "val:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@editor"])._setValue_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"val:",{aString:aString},smalltalk.SourceArea)})},
-messageSends: ["setValue:"]}),
-smalltalk.SourceArea);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.SourceArea.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._setupCodeMirror();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.SourceArea.klass)})},
-messageSends: ["initialize", "setupCodeMirror"]}),
-smalltalk.SourceArea.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupCodeMirror",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- CodeMirror.keyMap["default"].fallthrough = ["basic"] ;
-return self}, function($ctx1) {$ctx1.fill(self,"setupCodeMirror",{},smalltalk.SourceArea.klass)})},
-messageSends: []}),
-smalltalk.SourceArea.klass);
-
-
-smalltalk.addClass('TabManager', smalltalk.Widget, ['selectedTab', 'tabs', 'opened', 'ul', 'input'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addTab:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._tabs())._add_(aWidget);
-_st(aWidget)._appendToJQuery_("#amber"._asJQuery());
-_st(aWidget)._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"addTab:",{aWidget:aWidget},smalltalk.TabManager)})},
-messageSends: ["add:", "tabs", "appendToJQuery:", "asJQuery", "hide"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "close",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@opened"];
-if(smalltalk.assert($1)){
-_st("#amber"._asJQuery())._hide();
-_st(_st(self["@ul"])._asJQuery())._hide();
-_st(self["@selectedTab"])._hide();
-self._removeBodyMargin();
-_st("body"._asJQuery())._removeClass_("amberBody");
-self["@opened"]=false;
-self["@opened"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"close",{},smalltalk.TabManager)})},
-messageSends: ["ifTrue:", "hide", "asJQuery", "removeBodyMargin", "removeClass:"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "closeTab:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._removeTab_(aWidget);
-self._selectTab_(_st(self._tabs())._last());
-_st(aWidget)._remove();
-self._update();
-return self}, function($ctx1) {$ctx1.fill(self,"closeTab:",{aWidget:aWidget},smalltalk.TabManager)})},
-messageSends: ["removeTab:", "selectTab:", "last", "tabs", "remove", "update"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $IDETranscript(){return smalltalk.IDETranscript||(typeof IDETranscript=="undefined"?nil:IDETranscript)}
-function $Workspace(){return smalltalk.Workspace||(typeof Workspace=="undefined"?nil:Workspace)}
-function $TestRunner(){return smalltalk.TestRunner||(typeof TestRunner=="undefined"?nil:TestRunner)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-smalltalk.TabManager.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@opened"]=true;
-_st((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(html)._div())._id_("amber");
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_("body"._asJQuery());
-_st("body"._asJQuery())._addClass_("amberBody");
-self._appendToJQuery_("#amber"._asJQuery());
-$1=self;
-_st($1)._addTab_(_st($IDETranscript())._current());
-_st($1)._addTab_(_st($Workspace())._new());
-$2=_st($1)._addTab_(_st($TestRunner())._new());
-self._selectTab_(_st(self._tabs())._last());
-$3=self;
-_st($3)._onResize_((function(){
-return smalltalk.withContext(function($ctx2) {
-$4=self;
-_st($4)._updateBodyMargin();
-$5=_st($4)._updatePosition();
-return $5;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$6=_st($3)._onWindowResize_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._updatePosition();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TabManager)})},
-messageSends: ["initialize", "appendToJQuery:", "id:", "div", "asJQuery", "addClass:", "addTab:", "current", "new", "selectTab:", "last", "tabs", "onResize:", "updateBodyMargin", "updatePosition", "onWindowResize:"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "labelFor:",
-fn: function (aWidget){
-var self=this;
-var label,maxSize;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-maxSize=(15);
-label=_st(_st(aWidget)._label())._copyFrom_to_((0),_st(_st(_st(aWidget)._label())._size())._min_(maxSize));
-$1=_st(_st(_st(aWidget)._label())._size()).__gt(maxSize);
-if(smalltalk.assert($1)){
-label=_st(label).__comma("...");
-label;
-};
-$2=label;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"labelFor:",{aWidget:aWidget,label:label,maxSize:maxSize},smalltalk.TabManager)})},
-messageSends: ["copyFrom:to:", "label", "min:", "size", "ifTrue:", ">", ","]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newBrowserTab",
-fn: function (){
-var self=this;
-function $Browser(){return smalltalk.Browser||(typeof Browser=="undefined"?nil:Browser)}
-return smalltalk.withContext(function($ctx1) { 
-_st($Browser())._open();
-return self}, function($ctx1) {$ctx1.fill(self,"newBrowserTab",{},smalltalk.TabManager)})},
-messageSends: ["open"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onResize:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st("#amber"._asJQuery())._resizable_(smalltalk.HashedCollection._from_(["handles".__minus_gt("n"),"resize".__minus_gt(aBlock),"minHeight".__minus_gt((230))]));
-return self}, function($ctx1) {$ctx1.fill(self,"onResize:",{aBlock:aBlock},smalltalk.TabManager)})},
-messageSends: ["resizable:", "asJQuery", "->"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "onWindowResize:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(window)._asJQuery())._resize_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"onWindowResize:",{aBlock:aBlock},smalltalk.TabManager)})},
-messageSends: ["resize:", "asJQuery"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@opened"];
-if(! smalltalk.assert($1)){
-_st("body"._asJQuery())._addClass_("amberBody");
-_st("#amber"._asJQuery())._show();
-_st(_st(self["@ul"])._asJQuery())._show();
-self._updateBodyMargin();
-_st(self["@selectedTab"])._show();
-self["@opened"]=true;
-self["@opened"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.TabManager)})},
-messageSends: ["ifFalse:", "addClass:", "asJQuery", "show", "updateBodyMargin"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeBodyMargin",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._setBodyMargin_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"removeBodyMargin",{},smalltalk.TabManager)})},
-messageSends: ["setBodyMargin:"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeTab:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._tabs())._remove_(aWidget);
-self._update();
-return self}, function($ctx1) {$ctx1.fill(self,"removeTab:",{aWidget:aWidget},smalltalk.TabManager)})},
-messageSends: ["remove:", "tabs", "update"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(_st(html)._div())._id_("logo");
-self._renderToolbarOn_(html);
-$1=_st(html)._ul();
-_st($1)._id_("amberTabs");
-$2=_st($1)._yourself();
-self["@ul"]=$2;
-self._renderTabs();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.TabManager)})},
-messageSends: ["id:", "div", "renderToolbarOn:", "ul", "yourself", "renderTabs"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTabFor:on:",
-fn: function (aWidget,html){
-var self=this;
-var li;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$5,$6,$7,$4,$8;
-li=_st(html)._li();
-$1=_st(self["@selectedTab"]).__eq(aWidget);
-if(smalltalk.assert($1)){
-_st(li)._class_("selected");
-};
-$2=li;
-_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(_st(html)._span())._class_("ltab");
-$3=_st(html)._span();
-_st($3)._class_("mtab");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$5=_st(aWidget)._canBeClosed();
-if(smalltalk.assert($5)){
-$6=_st(html)._span();
-_st($6)._class_("close");
-_st($6)._with_("x");
-$7=_st($6)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._closeTab_(aWidget);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-$7;
-};
-return _st(_st(html)._span())._with_(self._labelFor_(aWidget));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$4;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$8=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._selectTab_(aWidget);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabFor:on:",{aWidget:aWidget,html:html,li:li},smalltalk.TabManager)})},
-messageSends: ["li", "ifTrue:", "=", "class:", "with:", "span", "canBeClosed", "onClick:", "closeTab:", "labelFor:", "selectTab:"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTabs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@ul"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-_st(self._tabs())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return self._renderTabFor_on_(each,html);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-$1=_st(html)._li();
-_st($1)._class_("newtab");
-_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._span())._class_("ltab");
-$2=_st(html)._span();
-_st($2)._class_("mtab");
-$3=_st($2)._with_(" + ");
-$3;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$4=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._newBrowserTab();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabs",{},smalltalk.TabManager)})},
-messageSends: ["contents:", "do:", "tabs", "renderTabFor:on:", "class:", "li", "with:", "span", "onClick:", "newBrowserTab"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderToolbarOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$7,$2;
-$1=_st(html)._div();
-_st($1)._id_("amber_toolbar");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._input();
-_st($3)._class_("implementors");
-$4=_st($3)._yourself();
-self["@input"]=$4;
-self["@input"];
-_st(self["@input"])._onKeyPress_((function(event){
-return smalltalk.withContext(function($ctx3) {
-$5=_st(_st(event)._keyCode()).__eq((13));
-if(smalltalk.assert($5)){
-return self._search_(_st(_st(self["@input"])._asJQuery())._val());
-};
-}, function($ctx3) {$ctx3.fillBlock({event:event},$ctx2,2)})}));
-$6=_st(html)._div();
-_st($6)._id_("amber_close");
-$7=_st($6)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._close();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-return $7;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderToolbarOn:",{html:html},smalltalk.TabManager)})},
-messageSends: ["id:", "div", "with:", "class:", "input", "yourself", "onKeyPress:", "ifTrue:", "=", "keyCode", "search:", "val", "asJQuery", "onClick:", "close"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-var searchedClass;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $Browser(){return smalltalk.Browser||(typeof Browser=="undefined"?nil:Browser)}
-function $ReferencesBrowser(){return smalltalk.ReferencesBrowser||(typeof ReferencesBrowser=="undefined"?nil:ReferencesBrowser)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-searchedClass=_st(_st($Smalltalk())._current())._at_(aString);
-$1=_st(searchedClass)._isClass();
-if(smalltalk.assert($1)){
-_st($Browser())._openOn_(searchedClass);
-} else {
-_st($ReferencesBrowser())._search_(aString);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString,searchedClass:searchedClass},smalltalk.TabManager)})},
-messageSends: ["at:", "current", "ifTrue:ifFalse:", "isClass", "openOn:", "search:"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectTab:",
-fn: function (aWidget){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._open();
-self["@selectedTab"]=aWidget;
-_st(self._tabs())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._hide();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(aWidget)._show();
-self._update();
-return self}, function($ctx1) {$ctx1.fill(self,"selectTab:",{aWidget:aWidget},smalltalk.TabManager)})},
-messageSends: ["open", "do:", "tabs", "hide", "show", "update"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setBodyMargin:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(".amberBody"._asJQuery())._css_put_("margin-bottom",_st(_st(anInteger)._asString()).__comma("px"));
-return self}, function($ctx1) {$ctx1.fill(self,"setBodyMargin:",{anInteger:anInteger},smalltalk.TabManager)})},
-messageSends: ["css:put:", "asJQuery", ",", "asString"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tabs",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@tabs"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@tabs"]=_st($Array())._new();
-$1=self["@tabs"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tabs",{},smalltalk.TabManager)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "update",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._renderTabs();
-return self}, function($ctx1) {$ctx1.fill(self,"update",{},smalltalk.TabManager)})},
-messageSends: ["renderTabs"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateBodyMargin",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._setBodyMargin_(_st("#amber"._asJQuery())._height());
-return self}, function($ctx1) {$ctx1.fill(self,"updateBodyMargin",{},smalltalk.TabManager)})},
-messageSends: ["setBodyMargin:", "height", "asJQuery"]}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updatePosition",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1="#amber"._asJQuery();
-_st($1)._css_put_("top","");
-$2=_st($1)._css_put_("bottom","0px");
-return self}, function($ctx1) {$ctx1.fill(self,"updatePosition",{},smalltalk.TabManager)})},
-messageSends: ["css:put:", "asJQuery"]}),
-smalltalk.TabManager);
-
-
-smalltalk.TabManager.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=smalltalk.TabManager.klass.superclass.fn.prototype._new.apply(_st(self), []);
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.TabManager.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.TabManager.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TabManager.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.TabManager.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "toggleAmberIDE",
-fn: function (){
-var self=this;
-function $Browser(){return smalltalk.Browser||(typeof Browser=="undefined"?nil:Browser)}
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st("#amber"._asJQuery())._length()).__eq((0));
-if(smalltalk.assert($1)){
-_st($Browser())._open();
-} else {
-$2=_st("#amber"._asJQuery())._is_(":visible");
-if(smalltalk.assert($2)){
-_st(_st($TabManager())._current())._close();
-} else {
-_st(_st($TabManager())._current())._open();
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"toggleAmberIDE",{},smalltalk.TabManager.klass)})},
-messageSends: ["ifTrue:ifFalse:", "=", "length", "asJQuery", "open", "is:", "close", "current"]}),
-smalltalk.TabManager.klass);
-
-
-smalltalk.addClass('TabWidget', smalltalk.Widget, ['div'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeClosed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"canBeClosed",{},smalltalk.TabWidget)})},
-messageSends: []}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "close",
-fn: function (){
-var self=this;
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($TabManager())._current())._closeTab_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"close",{},smalltalk.TabWidget)})},
-messageSends: ["closeTab:", "current"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hide",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@div"])._asJQuery())._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"hide",{},smalltalk.TabWidget)})},
-messageSends: ["hide", "asJQuery"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.TabWidget)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($TabManager())._current())._addTab_(self);
-_st(_st($TabManager())._current())._selectTab_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.TabWidget)})},
-messageSends: ["addTab:", "current", "selectTab:"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@div"])._asJQuery())._remove();
-return self}, function($ctx1) {$ctx1.fill(self,"remove",{},smalltalk.TabWidget)})},
-messageSends: ["remove", "asJQuery"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.TabWidget)})},
-messageSends: []}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.TabWidget)})},
-messageSends: []}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("amberTool");
-$2=_st($1)._yourself();
-self["@div"]=$2;
-self._renderTab();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.TabWidget)})},
-messageSends: ["class:", "div", "yourself", "renderTab"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@div"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._class_("amber_box");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renderBoxOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$2;
-$3=_st(html)._div();
-_st($3)._class_("amber_buttons");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renderButtonsOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTab",{},smalltalk.TabWidget)})},
-messageSends: ["contents:", "class:", "div", "with:", "renderBoxOn:", "renderButtonsOn:"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@div"])._asJQuery())._show();
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.TabWidget)})},
-messageSends: ["show", "asJQuery"]}),
-smalltalk.TabWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "update",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._renderTab();
-return self}, function($ctx1) {$ctx1.fill(self,"update",{},smalltalk.TabWidget)})},
-messageSends: ["renderTab"]}),
-smalltalk.TabWidget);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._open();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.TabWidget.klass)})},
-messageSends: ["open", "new"]}),
-smalltalk.TabWidget.klass);
-
-
-smalltalk.addClass('Browser', smalltalk.TabWidget, ['selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedMethod', 'packagesList', 'classesList', 'protocolsList', 'methodsList', 'sourceArea', 'tabsList', 'selectedTab', 'saveButton', 'classButtons', 'methodButtons', 'unsavedChanges'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addInstanceVariableNamed:toClass:",
-fn: function (aString,aClass){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aClass)._instanceVariableNames())._copy();
-_st($1)._add_(aString);
-$2=_st($1)._yourself();
-_st(_st($ClassBuilder())._new())._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),_st(aClass)._name(),$2,_st(_st(aClass)._package())._name());
-return self}, function($ctx1) {$ctx1.fill(self,"addInstanceVariableNamed:toClass:",{aString:aString,aClass:aClass},smalltalk.Browser)})},
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "new", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addNewClass",
-fn: function (){
-var self=this;
-var className;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-className=self._prompt_("New class");
-$1=_st(_st(className)._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(className)._notEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st($Object())._subclass_instanceVariableNames_package_(className,"",self._selectedPackage());
-$2=self;
-_st($2)._resetClassesList();
-$3=_st($2)._updateClassesList();
-$3;
-self._selectClass_(_st(_st($Smalltalk())._current())._at_(className));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"addNewClass",{className:className},smalltalk.Browser)})},
-messageSends: ["prompt:", "ifTrue:", "and:", "notNil", "notEmpty", "subclass:instanceVariableNames:package:", "selectedPackage", "resetClassesList", "updateClassesList", "selectClass:", "at:", "current"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addNewProtocol",
-fn: function (){
-var self=this;
-var newProtocol;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-newProtocol=self._prompt_("New method protocol");
-$1=_st(_st(newProtocol)._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(newProtocol)._notEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st(self["@selectedMethod"])._category_(newProtocol);
-self._setMethodProtocol_(newProtocol);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"addNewProtocol",{newProtocol:newProtocol},smalltalk.Browser)})},
-messageSends: ["prompt:", "ifTrue:", "and:", "notNil", "notEmpty", "category:", "setMethodProtocol:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeClosed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeClosed",{},smalltalk.Browser)})},
-messageSends: []}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cancelChanges",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@unsavedChanges"];
-if(smalltalk.assert($2)){
-$1=self._confirm_("Cancel changes?");
-} else {
-$1=true;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cancelChanges",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:ifFalse:", "confirm:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classCommentSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@selectedClass"])._comment();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classCommentSource",{},smalltalk.Browser)})},
-messageSends: ["comment"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classDeclarationSource",
-fn: function (){
-var self=this;
-var stream;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-stream=""._writeStream();
-$1=self["@selectedClass"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self._classDeclarationTemplate();
-return $2;
-} else {
-$1;
-};
-$3=stream;
-_st($3)._nextPutAll_(_st(_st(self["@selectedClass"])._superclass())._asString());
-_st($3)._nextPutAll_(" subclass: #");
-_st($3)._nextPutAll_(_st(self["@selectedClass"])._name());
-_st($3)._nextPutAll_(_st(_st($String())._lf()).__comma(_st($String())._tab()));
-$4=_st($3)._nextPutAll_("instanceVariableNames: '");
-_st(_st(self["@selectedClass"])._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$5=stream;
-_st($5)._nextPutAll_(_st("'".__comma(_st($String())._lf())).__comma(_st($String())._tab()));
-_st($5)._nextPutAll_("package: '");
-_st($5)._nextPutAll_(_st(self["@selectedClass"])._category());
-$6=_st($5)._nextPutAll_("'");
-$7=_st(stream)._contents();
-return $7;
-}, function($ctx1) {$ctx1.fill(self,"classDeclarationSource",{stream:stream},smalltalk.Browser)})},
-messageSends: ["writeStream", "ifNil:", "classDeclarationTemplate", "nextPutAll:", "asString", "superclass", "name", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "contents"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classDeclarationTemplate",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("Object subclass: #NameOfSubclass\x0a\x09instanceVariableNames: ''\x0a\x09package: '".__comma(self._selectedPackage())).__comma("'");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classDeclarationTemplate",{},smalltalk.Browser)})},
-messageSends: [",", "selectedPackage"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classes",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(_st($Smalltalk())._current())._classes())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._category()).__eq(self["@selectedPackage"]);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._sort_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._name()).__lt(_st(b)._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)})})))._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Browser)})},
-messageSends: ["asSet", "sort:", "select:", "classes", "current", "=", "category", "<", "name"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage",
-fn: function (){
-var self=this;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedPackage"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(_st($Package())._named_(self["@selectedPackage"]))._commit();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage",{},smalltalk.Browser)})},
-messageSends: ["ifNotNil:", "commit", "named:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile",
-fn: function (){
-var self=this;
-var currentEditLine;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-self._disableSaveButton();
-currentEditLine=_st(_st(self["@sourceArea"])._editor())._getCursor();
-$1=_st(self["@selectedTab"]).__eq("comment");
-if(smalltalk.assert($1)){
-$2=self["@selectedClass"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-self._compileClassComment();
-};
-} else {
-$3=_st(_st(self["@selectedProtocol"])._notNil())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@selectedMethod"])._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-if(smalltalk.assert($3)){
-self._compileMethodDefinition();
-} else {
-self._compileDefinition();
-};
-};
-_st(_st(self["@sourceArea"])._editor())._setCursor_(currentEditLine);
-return self}, function($ctx1) {$ctx1.fill(self,"compile",{currentEditLine:currentEditLine},smalltalk.Browser)})},
-messageSends: ["disableSaveButton", "getCursor", "editor", "ifTrue:ifFalse:", "=", "ifNotNil:", "compileClassComment", "ifFalse:ifTrue:", "or:", "notNil", "compileDefinition", "compileMethodDefinition", "setCursor:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassComment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@selectedClass"])._comment_(_st(self["@sourceArea"])._val());
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassComment",{},smalltalk.Browser)})},
-messageSends: ["comment:", "val"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileDefinition",
-fn: function (){
-var self=this;
-var newClass;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-newClass=_st(_st($Compiler())._new())._evaluateExpression_(_st(self["@sourceArea"])._val());
-$1=self;
-_st($1)._resetClassesList();
-_st($1)._updateCategoriesList();
-$2=_st($1)._updateClassesList();
-self._selectClass_(newClass);
-return self}, function($ctx1) {$ctx1.fill(self,"compileDefinition",{newClass:newClass},smalltalk.Browser)})},
-messageSends: ["evaluateExpression:", "new", "val", "resetClassesList", "updateCategoriesList", "updateClassesList", "selectClass:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethodDefinition",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($1)){
-self._compileMethodDefinitionFor_(self["@selectedClass"]);
-} else {
-self._compileMethodDefinitionFor_(_st(self["@selectedClass"])._class());
-};
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethodDefinition",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:ifFalse:", "=", "compileMethodDefinitionFor:", "class"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethodDefinitionFor:",
-fn: function (aClass){
-var self=this;
-var compiler,method,source,node;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-var $early={};
-try {
-source=_st(self["@sourceArea"])._val();
-$1=self["@selectedProtocol"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self["@selectedProtocol"]=_st(self["@selectedMethod"])._category();
-self["@selectedProtocol"];
-} else {
-$1;
-};
-compiler=_st($Compiler())._new();
-_st(compiler)._source_(source);
-node=_st(compiler)._parse_(source);
-$2=_st(node)._isParseFailure();
-if(smalltalk.assert($2)){
-$3=self._alert_(_st(_st("PARSE ERROR: ".__comma(_st(node)._reason())).__comma(", position: ")).__comma(_st(_st(node)._position())._asString()));
-return $3;
-};
-_st(compiler)._currentClass_(aClass);
-method=_st(compiler)._eval_(_st(compiler)._compileNode_(node));
-_st(_st(compiler)._unknownVariables())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$4=_st($PlatformInterface())._existsGlobal_(each);
-if(! smalltalk.assert($4)){
-$5=self._confirm_(_st("Declare '".__comma(each)).__comma("' as instance variable?"));
-if(smalltalk.assert($5)){
-self._addInstanceVariableNamed_toClass_(each,aClass);
-$6=self._compileMethodDefinitionFor_(aClass);
-throw $early=[$6];
-};
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-_st(_st($ClassBuilder())._new())._installMethod_forClass_category_(method,aClass,self["@selectedProtocol"]);
-self._updateMethodsList();
-self._selectMethod_(method);
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"compileMethodDefinitionFor:",{aClass:aClass,compiler:compiler,method:method,source:source,node:node},smalltalk.Browser)})},
-messageSends: ["val", "ifNil:", "category", "new", "source:", "parse:", "ifTrue:", "isParseFailure", "alert:", ",", "reason", "asString", "position", "currentClass:", "eval:", "compileNode:", "do:", "unknownVariables", "ifFalse:", "existsGlobal:", "confirm:", "addInstanceVariableNamed:toClass:", "compileMethodDefinitionFor:", "installMethod:forClass:category:", "updateMethodsList", "selectMethod:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClass",
-fn: function (){
-var self=this;
-var className;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-className=self._prompt_("Copy class");
-$1=_st(_st(className)._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(className)._notEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st(_st($ClassBuilder())._new())._copyClass_named_(self._selectedClass(),className);
-$2=self;
-_st($2)._resetClassesList();
-$3=_st($2)._updateClassesList();
-$3;
-self._selectClass_(_st(_st($Smalltalk())._current())._at_(className));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"copyClass",{className:className},smalltalk.Browser)})},
-messageSends: ["prompt:", "ifTrue:", "and:", "notNil", "notEmpty", "copyClass:named:", "new", "selectedClass", "resetClassesList", "updateClassesList", "selectClass:", "at:", "current"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "declarationSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($2)){
-$1=self._classDeclarationSource();
-} else {
-$1=self._metaclassDeclarationSource();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"declarationSource",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:ifFalse:", "=", "classDeclarationSource", "metaclassDeclarationSource"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "disableSaveButton",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@saveButton"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self["@saveButton"])._at_put_("disabled",true);
-};
-self["@unsavedChanges"]=false;
-return self}, function($ctx1) {$ctx1.fill(self,"disableSaveButton",{},smalltalk.Browser)})},
-messageSends: ["ifNotNil:", "at:put:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dummyMethodSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "messageSelectorAndArgumentNames\x0a\x09\x22comment stating purpose of message\x22\x0a\x0a\x09| temporary variable names |\x0a\x09statements";
-}, function($ctx1) {$ctx1.fill(self,"dummyMethodSource",{},smalltalk.Browser)})},
-messageSends: []}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleSourceAreaKeyDown:",
-fn: function (anEvent){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-if(anEvent.ctrlKey) {
-		if(anEvent.keyCode === 83) { //ctrl+s
-			self._compile();
-			anEvent.preventDefault();
-			return false;
-		}
-	}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"handleSourceAreaKeyDown:",{anEvent:anEvent},smalltalk.Browser)})},
-messageSends: []}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hideClassButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@classButtons"])._asJQuery())._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"hideClassButtons",{},smalltalk.Browser)})},
-messageSends: ["hide", "asJQuery"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hideMethodButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@methodButtons"])._asJQuery())._hide();
-return self}, function($ctx1) {$ctx1.fill(self,"hideMethodButtons",{},smalltalk.Browser)})},
-messageSends: ["hide", "asJQuery"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Browser.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@selectedTab"]="instance";
-self["@selectedPackage"]=_st(self._packages())._first();
-self["@unsavedChanges"]=false;
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Browser)})},
-messageSends: ["initialize", "first", "packages"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectedClass"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="Browser (nil)";
-} else {
-$1="Browser: ".__comma(_st(self["@selectedClass"])._name());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.Browser)})},
-messageSends: ["ifNil:ifNotNil:", ",", "name"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "metaclassDeclarationSource",
-fn: function (){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-stream=""._writeStream();
-$1=self["@selectedClass"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=stream;
-_st($2)._nextPutAll_(_st(self["@selectedClass"])._asString());
-_st($2)._nextPutAll_(" class ");
-$3=_st($2)._nextPutAll_("instanceVariableNames: '");
-$3;
-_st(_st(_st(self["@selectedClass"])._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-_st(stream)._nextPutAll_("'");
-};
-$4=_st(stream)._contents();
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"metaclassDeclarationSource",{stream:stream},smalltalk.Browser)})},
-messageSends: ["writeStream", "ifNotNil:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames", "class", "contents"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectedMethod"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._dummyMethodSource();
-} else {
-$1=_st(self["@selectedMethod"])._source();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodSource",{},smalltalk.Browser)})},
-messageSends: ["ifNil:ifNotNil:", "dummyMethodSource", "source"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methods",
-fn: function (){
-var self=this;
-var klass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$7,$8,$6,$5;
-$1=_st(self["@selectedTab"]).__eq("comment");
-if(smalltalk.assert($1)){
-$2=[];
-return $2;
-};
-$3=self["@selectedClass"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-$4=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($4)){
-klass=self["@selectedClass"];
-} else {
-klass=_st(self["@selectedClass"])._class();
-};
-klass;
-};
-$7=self["@selectedProtocol"];
-if(($receiver = $7) == nil || $receiver == undefined){
-$8=klass;
-if(($receiver = $8) == nil || $receiver == undefined){
-$6=[];
-} else {
-$6=_st(_st(klass)._methodDictionary())._values();
-};
-} else {
-$6=_st(_st(_st(klass)._methodDictionary())._values())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._category()).__eq(self["@selectedProtocol"]);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,9)})}));
-};
-$5=_st($6)._sort_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._selector()).__lt(_st(b)._selector());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,10)})}));
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"methods",{klass:klass},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "=", "ifNotNil:", "ifTrue:ifFalse:", "class", "sort:", "ifNil:ifNotNil:", "values", "methodDictionary", "select:", "category", "<", "selector"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-var packages;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-packages=_st($Array())._new();
-_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(packages)._includes_(_st(each)._category());
-if(! smalltalk.assert($1)){
-return _st(packages)._add_(_st(each)._category());
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=_st(packages)._sort();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"packages",{packages:packages},smalltalk.Browser)})},
-messageSends: ["new", "do:", "classes", "current", "ifFalse:", "includes:", "category", "add:", "sort"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocols",
-fn: function (){
-var self=this;
-var klass;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=self["@selectedClass"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=_st(self["@selectedTab"]).__eq("comment");
-if(smalltalk.assert($2)){
-$3=[];
-return $3;
-};
-$4=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($4)){
-klass=self["@selectedClass"];
-} else {
-klass=_st(self["@selectedClass"])._class();
-};
-klass;
-$5=_st(_st(klass)._methodDictionary())._isEmpty();
-if(smalltalk.assert($5)){
-$6=_st($Array())._with_("not yet classified");
-return $6;
-};
-$7=_st(klass)._protocols();
-return $7;
-};
-$8=_st($Array())._new();
-return $8;
-}, function($ctx1) {$ctx1.fill(self,"protocols",{klass:klass},smalltalk.Browser)})},
-messageSends: ["ifNotNil:", "ifTrue:", "=", "ifTrue:ifFalse:", "class", "isEmpty", "methodDictionary", "with:", "protocols", "new"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._confirm_(_st("Do you really want to remove ".__comma(_st(self["@selectedClass"])._name())).__comma("?"));
-if(smalltalk.assert($1)){
-_st(_st($Smalltalk())._current())._removeClass_(self["@selectedClass"]);
-self._resetClassesList();
-self._selectClass_(nil);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "confirm:", ",", "name", "removeClass:", "current", "resetClassesList", "selectClass:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-$2=self._confirm_(_st("Do you really want to remove #".__comma(_st(self["@selectedMethod"])._selector())).__comma("?"));
-if(smalltalk.assert($2)){
-$3=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($3)){
-_st(self["@selectedClass"])._removeCompiledMethod_(self["@selectedMethod"]);
-} else {
-_st(_st(self["@selectedClass"])._class())._removeCompiledMethod_(self["@selectedMethod"]);
-};
-self._selectMethod_(nil);
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "confirm:", ",", "selector", "ifTrue:ifFalse:", "=", "removeCompiledMethod:", "class", "selectMethod:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removePackage",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._confirm_(_st("Do you really want to remove the whole package ".__comma(self["@selectedPackage"])).__comma(" with all its classes?"));
-if(smalltalk.assert($1)){
-_st(_st($Smalltalk())._current())._removePackage_(self["@selectedPackage"]);
-self._updateCategoriesList();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"removePackage",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "confirm:", ",", "removePackage:", "current", "updateCategoriesList"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameClass",
-fn: function (){
-var self=this;
-var newName;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-newName=self._prompt_("Rename class ".__comma(_st(self["@selectedClass"])._name()));
-$1=_st(_st(newName)._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(newName)._notEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st(self["@selectedClass"])._rename_(newName);
-$2=self;
-_st($2)._updateClassesList();
-$3=_st($2)._updateSourceAndButtons();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renameClass",{newName:newName},smalltalk.Browser)})},
-messageSends: ["prompt:", ",", "name", "ifTrue:", "and:", "notNil", "notEmpty", "rename:", "updateClassesList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renamePackage",
-fn: function (){
-var self=this;
-var newName;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-newName=self._prompt_("Rename package ".__comma(self["@selectedPackage"]));
-$1=newName;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=_st(newName)._notEmpty();
-if(smalltalk.assert($2)){
-_st(_st($Smalltalk())._current())._renamePackage_to_(self["@selectedPackage"],newName);
-self._updateCategoriesList();
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renamePackage",{newName:newName},smalltalk.Browser)})},
-messageSends: ["prompt:", ",", "ifNotNil:", "ifTrue:", "notEmpty", "renamePackage:to:", "current", "updateCategoriesList"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBottomPanelOn:",
-fn: function (html){
-var self=this;
-function $SourceArea(){return smalltalk.SourceArea||(typeof SourceArea=="undefined"?nil:SourceArea)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("amber_sourceCode");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@sourceArea"]=_st($SourceArea())._new();
-self["@sourceArea"];
-_st(self["@sourceArea"])._renderOn_(html);
-_st(self["@sourceArea"])._onKeyDown_((function(e){
-return smalltalk.withContext(function($ctx3) {
-return self._handleSourceAreaKeyDown_(e);
-}, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,2)})}));
-return _st(self["@sourceArea"])._onKeyUp_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._updateStatus();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBottomPanelOn:",{html:html},smalltalk.Browser)})},
-messageSends: ["class:", "div", "with:", "new", "renderOn:", "onKeyDown:", "handleSourceAreaKeyDown:", "onKeyUp:", "updateStatus"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._renderTopPanelOn_(html);
-_st($1)._renderTabsOn_(html);
-$2=_st($1)._renderBottomPanelOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.Browser)})},
-messageSends: ["renderTopPanelOn:", "renderTabsOn:", "renderBottomPanelOn:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$5,$6,$7,$8,$9,$10,$4;
-self["@saveButton"]=_st(html)._button();
-$1=self["@saveButton"];
-_st($1)._with_("Save");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._compile();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self["@methodButtons"]=_st(html)._span();
-self["@classButtons"]=_st(html)._span();
-$3=_st(html)._div();
-_st($3)._class_("right");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$5=_st(html)._button();
-_st($5)._with_("DoIt");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self["@sourceArea"])._doIt();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$6;
-$7=_st(html)._button();
-_st($7)._with_("PrintIt");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self["@sourceArea"])._printIt();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-$8;
-$9=_st(html)._button();
-_st($9)._with_("InspectIt");
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self["@sourceArea"])._inspectIt();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-return $10;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._updateSourceAndButtons();
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.Browser)})},
-messageSends: ["button", "with:", "onClick:", "compile", "span", "class:", "div", "doIt", "printIt", "inspectIt", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTabsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@tabsList"]=_st(_st(html)._ul())._class_("amber_tabs amber_browser");
-self._updateTabsList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabsOn:",{html:html},smalltalk.Browser)})},
-messageSends: ["class:", "ul", "updateTabsList"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTopPanelOn:",
-fn: function (html){
-var self=this;
-function $ClassesList(){return smalltalk.ClassesList||(typeof ClassesList=="undefined"?nil:ClassesList)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$5,$6,$7,$8,$9,$10,$4,$11,$12,$2;
-$1=_st(html)._div();
-_st($1)._class_("top");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@packagesList"]=_st(_st(html)._ul())._class_("amber_column browser packages");
-self["@packagesList"];
-$3=_st(html)._div();
-_st($3)._class_("amber_packagesButtons");
-$4=_st($3)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$5=_st(html)._button();
-_st($5)._title_("Commit classes in this package to disk");
-_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._commitPackage();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-$6=_st($5)._with_("Commit");
-$6;
-$7=_st(html)._button();
-_st($7)._title_("Rename package");
-_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._renamePackage();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-$8=_st($7)._with_("Rename");
-$8;
-$9=_st(html)._button();
-_st($9)._title_("Remove this package from the system");
-_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._removePackage();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-$10=_st($9)._with_("Remove");
-return $10;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4;
-self["@classesList"]=_st($ClassesList())._on_(self);
-self["@classesList"];
-_st(self["@classesList"])._renderOn_(html);
-self["@protocolsList"]=_st(_st(html)._ul())._class_("amber_column browser protocols");
-self["@protocolsList"];
-self["@methodsList"]=_st(_st(html)._ul())._class_("amber_column browser methods");
-self["@methodsList"];
-$11=self;
-_st($11)._updateCategoriesList();
-_st($11)._updateClassesList();
-_st($11)._updateProtocolsList();
-$12=_st($11)._updateMethodsList();
-$12;
-return _st(_st(html)._div())._class_("amber_clear");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTopPanelOn:",{html:html},smalltalk.Browser)})},
-messageSends: ["class:", "div", "with:", "ul", "title:", "button", "onClick:", "commitPackage", "renamePackage", "removePackage", "on:", "renderOn:", "updateCategoriesList", "updateClassesList", "updateProtocolsList", "updateMethodsList"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetClassesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@classesList"])._resetNodes();
-return self}, function($ctx1) {$ctx1.fill(self,"resetClassesList",{},smalltalk.Browser)})},
-messageSends: ["resetNodes"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-var searchedClass;
-searchedClass=_st(_st($Smalltalk())._current())._at_(aString);
-searchedClass;
-$2=_st(searchedClass)._isClass();
-if(smalltalk.assert($2)){
-_st(self._class())._openOn_(searchedClass);
-} else {
-self._searchReferencesOf_(aString);
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "at:", "current", "ifTrue:ifFalse:", "isClass", "openOn:", "class", "searchReferencesOf:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchClassReferences",
-fn: function (){
-var self=this;
-function $ReferencesBrowser(){return smalltalk.ReferencesBrowser||(typeof ReferencesBrowser=="undefined"?nil:ReferencesBrowser)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ReferencesBrowser())._search_(_st(self["@selectedClass"])._name());
-return self}, function($ctx1) {$ctx1.fill(self,"searchClassReferences",{},smalltalk.Browser)})},
-messageSends: ["search:", "name"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchReferencesOf:",
-fn: function (aString){
-var self=this;
-function $ReferencesBrowser(){return smalltalk.ReferencesBrowser||(typeof ReferencesBrowser=="undefined"?nil:ReferencesBrowser)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ReferencesBrowser())._search_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"searchReferencesOf:",{aString:aString},smalltalk.Browser)})},
-messageSends: ["search:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectCategory:",
-fn: function (aCategory){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-self["@selectedPackage"]=aCategory;
-self["@selectedPackage"];
-self["@selectedMethod"]=nil;
-self["@selectedProtocol"]=self["@selectedMethod"];
-self["@selectedClass"]=self["@selectedProtocol"];
-self["@selectedClass"];
-self._resetClassesList();
-$2=self;
-_st($2)._updateCategoriesList();
-_st($2)._updateClassesList();
-_st($2)._updateProtocolsList();
-_st($2)._updateMethodsList();
-$3=_st($2)._updateSourceAndButtons();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"selectCategory:",{aCategory:aCategory},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "resetClassesList", "updateCategoriesList", "updateClassesList", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-self["@selectedClass"]=aClass;
-self["@selectedClass"];
-self["@selectedMethod"]=nil;
-self["@selectedProtocol"]=self["@selectedMethod"];
-self["@selectedProtocol"];
-$2=self;
-_st($2)._updateClassesList();
-_st($2)._updateProtocolsList();
-_st($2)._updateMethodsList();
-$3=_st($2)._updateSourceAndButtons();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"selectClass:",{aClass:aClass},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "updateClassesList", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-self["@selectedMethod"]=aMethod;
-self["@selectedMethod"];
-$2=self;
-_st($2)._updateProtocolsList();
-_st($2)._updateMethodsList();
-$3=_st($2)._updateSourceAndButtons();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"selectMethod:",{aMethod:aMethod},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-self["@selectedProtocol"]=aString;
-self["@selectedProtocol"];
-self["@selectedMethod"]=nil;
-self["@selectedMethod"];
-$2=self;
-_st($2)._updateProtocolsList();
-_st($2)._updateMethodsList();
-$3=_st($2)._updateSourceAndButtons();
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"selectProtocol:",{aString:aString},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectTab:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-self["@selectedTab"]=aString;
-self["@selectedTab"];
-self._selectProtocol_(nil);
-self._updateTabsList();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"selectTab:",{aString:aString},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "selectProtocol:", "updateTabsList"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedClass",{},smalltalk.Browser)})},
-messageSends: []}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedPackage"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedPackage",{},smalltalk.Browser)})},
-messageSends: []}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setMethodProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=self._cancelChanges();
-if(smalltalk.assert($1)){
-$2=_st(self._protocols())._includes_(aString);
-if(smalltalk.assert($2)){
-_st(self["@selectedMethod"])._category_(aString);
-self["@selectedProtocol"]=aString;
-self["@selectedProtocol"];
-self["@selectedMethod"]=self["@selectedMethod"];
-self["@selectedMethod"];
-$3=self;
-_st($3)._updateProtocolsList();
-_st($3)._updateMethodsList();
-$4=_st($3)._updateSourceAndButtons();
-$4;
-} else {
-self._addNewProtocol();
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"setMethodProtocol:",{aString:aString},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "cancelChanges", "ifFalse:ifTrue:", "includes:", "protocols", "addNewProtocol", "category:", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showClassButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@classButtons"])._asJQuery())._show();
-return self}, function($ctx1) {$ctx1.fill(self,"showClassButtons",{},smalltalk.Browser)})},
-messageSends: ["show", "asJQuery"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "showMethodButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@methodButtons"])._asJQuery())._show();
-return self}, function($ctx1) {$ctx1.fill(self,"showMethodButtons",{},smalltalk.Browser)})},
-messageSends: ["show", "asJQuery"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2,$5,$4;
-$1=_st(self["@selectedTab"]).__eq("comment");
-if(! smalltalk.assert($1)){
-$3=_st(_st(self["@selectedProtocol"])._notNil())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@selectedMethod"])._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-if(smalltalk.assert($3)){
-$2=self._methodSource();
-} else {
-$2=self._declarationSource();
-};
-return $2;
-};
-$5=self["@selectedClass"];
-if(($receiver = $5) == nil || $receiver == undefined){
-$4="";
-} else {
-$4=self._classCommentSource();
-};
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.Browser)})},
-messageSends: ["ifFalse:", "=", "ifFalse:ifTrue:", "or:", "notNil", "declarationSource", "methodSource", "ifNil:ifNotNil:", "classCommentSource"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateCategoriesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@packagesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._packages())._do_((function(each){
-var li,label;
-return smalltalk.withContext(function($ctx3) {
-$1=_st(each)._isEmpty();
-if(smalltalk.assert($1)){
-label="Unclassified";
-label;
-} else {
-label=each;
-label;
-};
-li=_st(html)._li();
-li;
-$2=_st(self["@selectedPackage"]).__eq(each);
-if(smalltalk.assert($2)){
-_st(li)._class_("selected");
-};
-$3=li;
-_st($3)._with_(label);
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectCategory_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li,label:label},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateCategoriesList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "packages", "ifTrue:ifFalse:", "isEmpty", "li", "ifTrue:", "=", "class:", "with:", "onClick:", "selectCategory:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateClassesList",
-fn: function (){
-var self=this;
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($TabManager())._current())._update();
-_st(self["@classesList"])._updateNodes();
-return self}, function($ctx1) {$ctx1.fill(self,"updateClassesList",{},smalltalk.Browser)})},
-messageSends: ["update", "current", "updateNodes"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateMethodsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(self["@methodsList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._methods())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$1=_st(self["@selectedMethod"]).__eq(each);
-if(smalltalk.assert($1)){
-_st(li)._class_("selected");
-};
-$2=li;
-_st($2)._with_(_st(each)._selector());
-$3=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectMethod_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "methods", "li", "ifTrue:", "=", "class:", "with:", "selector", "onClick:", "selectMethod:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateProtocolsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(self["@protocolsList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._protocols())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$1=_st(self["@selectedProtocol"]).__eq(each);
-if(smalltalk.assert($1)){
-_st(li)._class_("selected");
-};
-$2=li;
-_st($2)._with_(each);
-$3=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectProtocol_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateProtocolsList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "protocols", "li", "ifTrue:", "=", "class:", "with:", "onClick:", "selectProtocol:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateSourceAndButtons",
-fn: function (){
-var self=this;
-var currentProtocol;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$15,$16,$17,$18,$19,$20,$14,$21,$22,$24,$25,$26,$27,$23,$28,$29;
-self._disableSaveButton();
-_st(self["@classButtons"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._button();
-_st($1)._title_("Create a new class");
-_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._addNewClass();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$2=_st($1)._with_("New class");
-$2;
-$3=_st(html)._button();
-_st($3)._with_("Rename class");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renameClass();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$4;
-$5=_st(html)._button();
-_st($5)._with_("Copy class");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._copyClass();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-$6;
-$7=_st(html)._button();
-_st($7)._with_("Remove class");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._removeClass();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-$8;
-$9=_st(html)._button();
-_st($9)._with_("References");
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._searchClassReferences();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)})}));
-return $10;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-_st(self["@methodButtons"])._contents_((function(html){
-var protocolSelect,referencesSelect;
-return smalltalk.withContext(function($ctx2) {
-$11=_st(html)._button();
-_st($11)._with_("Remove method");
-$12=_st($11)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._removeMethod();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,8)})}));
-$12;
-protocolSelect=_st(html)._select();
-protocolSelect;
-$13=protocolSelect;
-_st($13)._onChange_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._setMethodProtocol_(_st(_st(protocolSelect)._asJQuery())._val());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,9)})}));
-$14=_st($13)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$15=_st(html)._option();
-_st($15)._with_("Method protocol");
-$16=_st($15)._at_put_("disabled","disabled");
-$16;
-$17=_st(html)._option();
-_st($17)._class_("important");
-$18=_st($17)._with_("New...");
-$18;
-currentProtocol=self["@selectedProtocol"];
-currentProtocol;
-$19=_st(_st(currentProtocol)._isNil())._and_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(self["@selectedMethod"])._notNil();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,11)})}));
-if(smalltalk.assert($19)){
-currentProtocol=_st(self["@selectedMethod"])._category();
-currentProtocol;
-};
-return _st(self._protocols())._do_((function(each){
-var option;
-return smalltalk.withContext(function($ctx4) {
-option=_st(_st(html)._option())._with_(each);
-option;
-$20=_st(currentProtocol).__eq(each);
-if(smalltalk.assert($20)){
-return _st(option)._at_put_("selected","selected");
-};
-}, function($ctx4) {$ctx4.fillBlock({each:each,option:option},$ctx3,13)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,10)})}));
-$14;
-$21=_st(self["@selectedMethod"])._isNil();
-if(! smalltalk.assert($21)){
-referencesSelect=_st(html)._select();
-referencesSelect;
-$22=referencesSelect;
-_st($22)._onChange_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._searchReferencesOf_(_st(_st(referencesSelect)._asJQuery())._val());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,16)})}));
-$23=_st($22)._with_((function(){
-var option;
-return smalltalk.withContext(function($ctx3) {
-$24=_st(html)._option();
-_st($24)._with_("References");
-_st($24)._at_put_("disabled","disabled");
-$25=_st($24)._at_put_("selected","selected");
-$25;
-$26=_st(html)._option();
-_st($26)._class_("important");
-$27=_st($26)._with_(_st(self["@selectedMethod"])._selector());
-$27;
-return _st(_st(_st(self["@selectedMethod"])._messageSends())._sorted())._do_((function(each){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(html)._option())._with_(each);
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,18)})}));
-}, function($ctx3) {$ctx3.fillBlock({option:option},$ctx2,17)})}));
-return $23;
-};
-}, function($ctx2) {$ctx2.fillBlock({html:html,protocolSelect:protocolSelect,referencesSelect:referencesSelect},$ctx1,7)})}));
-$28=_st(self["@selectedMethod"])._isNil();
-if(smalltalk.assert($28)){
-self._hideMethodButtons();
-$29=_st(_st(self["@selectedClass"])._isNil())._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@selectedProtocol"])._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,20)})}));
-if(smalltalk.assert($29)){
-self._hideClassButtons();
-} else {
-self._showClassButtons();
-};
-} else {
-self._hideClassButtons();
-self._showMethodButtons();
-};
-_st(self["@sourceArea"])._val_(self._source());
-return self}, function($ctx1) {$ctx1.fill(self,"updateSourceAndButtons",{currentProtocol:currentProtocol},smalltalk.Browser)})},
-messageSends: ["disableSaveButton", "contents:", "title:", "button", "onClick:", "addNewClass", "with:", "renameClass", "copyClass", "removeClass", "searchClassReferences", "removeMethod", "select", "onChange:", "setMethodProtocol:", "val", "asJQuery", "option", "at:put:", "class:", "ifTrue:", "and:", "isNil", "notNil", "category", "do:", "protocols", "=", "ifFalse:", "searchReferencesOf:", "selector", "sorted", "messageSends", "ifTrue:ifFalse:", "hideMethodButtons", "or:", "hideClassButtons", "showClassButtons", "showMethodButtons", "val:", "source"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateStatus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(_st(self["@sourceArea"])._val()).__eq(self._source());
-if(smalltalk.assert($1)){
-$2=self["@saveButton"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-_st(self["@saveButton"])._at_put_("disabled",true);
-};
-self["@unsavedChanges"]=false;
-self["@unsavedChanges"];
-} else {
-$3=self["@saveButton"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(self["@saveButton"])._removeAt_("disabled");
-};
-self["@unsavedChanges"]=true;
-self["@unsavedChanges"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"updateStatus",{},smalltalk.Browser)})},
-messageSends: ["ifTrue:ifFalse:", "=", "val", "source", "ifNotNil:", "at:put:", "removeAt:"]}),
-smalltalk.Browser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateTabsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15;
-_st(self["@tabsList"])._contents_((function(html){
-var li;
-return smalltalk.withContext(function($ctx2) {
-li=_st(html)._li();
-li;
-$1=_st(self["@selectedTab"]).__eq("instance");
-if(smalltalk.assert($1)){
-_st(li)._class_("selected");
-};
-$2=li;
-_st($2)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._span())._class_("ltab");
-$3=_st(html)._span();
-_st($3)._class_("mtab");
-$4=_st($3)._with_("Instance");
-$4;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$5=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("instance");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-$5;
-li=_st(html)._li();
-li;
-$6=_st(self["@selectedTab"]).__eq("class");
-if(smalltalk.assert($6)){
-_st(li)._class_("selected");
-};
-$7=li;
-_st($7)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._span())._class_("ltab");
-$8=_st(html)._span();
-_st($8)._class_("mtab");
-$9=_st($8)._with_("Class");
-$9;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)})}));
-$10=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("class");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)})}));
-$10;
-li=_st(html)._li();
-li;
-$11=_st(self["@selectedTab"]).__eq("comment");
-if(smalltalk.assert($11)){
-_st(li)._class_("selected");
-};
-$12=li;
-_st($12)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-_st(_st(html)._span())._class_("ltab");
-$13=_st(html)._span();
-_st($13)._class_("mtab");
-$14=_st($13)._with_("Comment");
-$14;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,9)})}));
-$15=_st($12)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("comment");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,10)})}));
-return $15;
-}, function($ctx2) {$ctx2.fillBlock({html:html,li:li},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateTabsList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "li", "ifTrue:", "=", "class:", "with:", "span", "onClick:", "selectTab:"]}),
-smalltalk.Browser);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._new())._open();
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Browser.klass)})},
-messageSends: ["open", "new"]}),
-smalltalk.Browser.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "openOn:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._open();
-_st($2)._selectCategory_(_st(aClass)._category());
-$3=_st($2)._selectClass_(aClass);
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"openOn:",{aClass:aClass},smalltalk.Browser.klass)})},
-messageSends: ["open", "new", "selectCategory:", "category", "selectClass:"]}),
-smalltalk.Browser.klass);
-
-
-smalltalk.addClass('Debugger', smalltalk.TabWidget, ['error', 'selectedContext', 'sourceArea', 'ul', 'ul2', 'inspector', 'saveButton', 'unsavedChanges', 'selectedVariable', 'selectedVariableName', 'inspectButton'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allVariables",
-fn: function (){
-var self=this;
-var all;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-all=_st($Dictionary())._new();
-_st(_st(_st(self._receiver())._class())._allInstanceVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(all)._at_put_(each,_st(self._receiver())._instVarAt_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-_st(_st(self["@selectedContext"])._locals())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(all)._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,2)})}));
-$1=all;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allVariables",{all:all},smalltalk.Debugger)})},
-messageSends: ["new", "do:", "allInstanceVariableNames", "class", "receiver", "at:put:", "instVarAt:", "keysAndValuesDo:", "locals"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeClosed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeClosed",{},smalltalk.Debugger)})},
-messageSends: []}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "error",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@error"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"error",{},smalltalk.Debugger)})},
-messageSends: []}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "error:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@error"]=anError;
-return self}, function($ctx1) {$ctx1.fill(self,"error:",{anError:anError},smalltalk.Debugger)})},
-messageSends: []}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Debugger.superclass.fn.prototype._initialize.apply(_st(self), []);
-_st(self["@unsavedChanges"]).__eq(false);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Debugger)})},
-messageSends: ["initialize", "="]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectSelectedVariable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@selectedVariable"])._inspect();
-return self}, function($ctx1) {$ctx1.fill(self,"inspectSelectedVariable",{},smalltalk.Debugger)})},
-messageSends: ["inspect"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "[Debugger]";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.Debugger)})},
-messageSends: []}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@selectedContext"])._method();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.Debugger)})},
-messageSends: ["method"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "proceed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._close();
-_st(_st(self["@selectedContext"])._receiver())._perform_withArguments_(_st(self["@selectedContext"])._selector(),_st(self["@selectedContext"])._temps());
-return self}, function($ctx1) {$ctx1.fill(self,"proceed",{},smalltalk.Debugger)})},
-messageSends: ["close", "perform:withArguments:", "receiver", "selector", "temps"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@selectedContext"])._receiver();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.Debugger)})},
-messageSends: ["receiver"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBottomPanelOn:",
-fn: function (html){
-var self=this;
-function $SourceArea(){return smalltalk.SourceArea||(typeof SourceArea=="undefined"?nil:SourceArea)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("amber_sourceCode debugger");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@sourceArea"]=_st($SourceArea())._new();
-self["@sourceArea"];
-return _st(self["@sourceArea"])._renderOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self["@ul2"]=_st(_st(html)._ul())._class_("amber_column debugger variables");
-self["@inspector"]=_st(_st(html)._div())._class_("amber_column debugger inspector");
-_st(self["@sourceArea"])._onKeyUp_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._updateStatus();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBottomPanelOn:",{html:html},smalltalk.Debugger)})},
-messageSends: ["class:", "div", "with:", "new", "renderOn:", "ul", "onKeyUp:", "updateStatus"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._renderTopPanelOn_(html);
-$2=_st($1)._renderBottomPanelOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.Debugger)})},
-messageSends: ["renderTopPanelOn:", "renderBottomPanelOn:"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16;
-$1=_st(html)._button();
-_st($1)._with_("Save");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._save();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self["@saveButton"]=$2;
-$3=_st(html)._button();
-_st($3)._with_("DoIt");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@sourceArea"])._doIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$5=_st(html)._button();
-_st($5)._with_("PrintIt");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@sourceArea"])._printIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$7=_st(html)._button();
-_st($7)._with_("InspectIt");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@sourceArea"])._inspectIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-$9=_st(html)._button();
-_st($9)._with_("Proceed");
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._proceed();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
-$11=_st(html)._button();
-_st($11)._with_("Abandon");
-$12=_st($11)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._close();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
-$13=_st(html)._button();
-_st($13)._class_("amber_button debugger inspect");
-_st($13)._with_("Inspect");
-$14=_st($13)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._inspectSelectedVariable();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
-self["@inspectButton"]=$14;
-$15=self;
-_st($15)._updateSourceArea();
-_st($15)._updateStatus();
-_st($15)._updateVariablesList();
-$16=_st($15)._updateInspector();
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.Debugger)})},
-messageSends: ["with:", "button", "onClick:", "save", "doIt", "printIt", "inspectIt", "proceed", "close", "class:", "inspectSelectedVariable", "updateSourceArea", "updateStatus", "updateVariablesList", "updateInspector"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContext:on:",
-fn: function (aContext,html){
-var self=this;
-var li;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-li=_st(html)._li();
-$1=_st(self["@selectedContext"]).__eq(aContext);
-if(smalltalk.assert($1)){
-_st(li)._class_("selected");
-};
-$2=li;
-_st($2)._with_(_st(aContext)._asString());
-$3=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._selectContext_(aContext);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$4=_st(aContext)._outerContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$4;
-} else {
-self._renderContext_on_(_st(aContext)._outerContext(),html);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContext:on:",{aContext:aContext,html:html,li:li},smalltalk.Debugger)})},
-messageSends: ["li", "ifTrue:", "=", "class:", "with:", "asString", "onClick:", "selectContext:", "ifNotNil:", "outerContext", "renderContext:on:"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTopPanelOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$2;
-self["@selectedContext"]=_st(self._error())._context();
-$1=_st(html)._div();
-_st($1)._class_("top");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(html)._div();
-_st($3)._class_("label");
-$4=_st($3)._with_(_st(self._error())._messageText());
-$4;
-$5=_st(html)._ul();
-_st($5)._class_("amber_column debugger contexts");
-$6=_st($5)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._renderContext_on_(_st(self._error())._context(),html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-self["@ul"]=$6;
-return self["@ul"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTopPanelOn:",{html:html},smalltalk.Debugger)})},
-messageSends: ["context", "error", "class:", "div", "with:", "messageText", "ul", "renderContext:on:"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "save",
-fn: function (){
-var self=this;
-var protocol;
-return smalltalk.withContext(function($ctx1) { 
-protocol=_st(_st(_st(_st(_st(self["@selectedContext"])._receiver())._class())._methodDictionary())._at_(_st(self["@selectedContext"])._selector()))._category();
-_st(_st(_st(self["@selectedContext"])._receiver())._class())._compile_category_(_st(self["@sourceArea"])._val(),protocol);
-self._updateStatus();
-return self}, function($ctx1) {$ctx1.fill(self,"save",{protocol:protocol},smalltalk.Debugger)})},
-messageSends: ["category", "at:", "methodDictionary", "class", "receiver", "selector", "compile:category:", "val", "updateStatus"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectContext:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@selectedContext"]=aContext;
-self["@selectedVariable"]=nil;
-self["@selectedVariableName"]=nil;
-$1=self;
-_st($1)._updateContextsList();
-_st($1)._updateSourceArea();
-_st($1)._updateInspector();
-_st($1)._updateVariablesList();
-$2=_st($1)._updateStatus();
-return self}, function($ctx1) {$ctx1.fill(self,"selectContext:",{aContext:aContext},smalltalk.Debugger)})},
-messageSends: ["updateContextsList", "updateSourceArea", "updateInspector", "updateVariablesList", "updateStatus"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectVariable:named:",
-fn: function (anObject,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectedVariable"]=anObject;
-self["@selectedVariableName"]=aString;
-_st(self["@inspector"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(html)._with_(_st(anObject)._printString());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-self._updateVariablesList();
-return self}, function($ctx1) {$ctx1.fill(self,"selectVariable:named:",{anObject:anObject,aString:aString},smalltalk.Debugger)})},
-messageSends: ["contents:", "with:", "printString", "updateVariablesList"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._method();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="Method doesn't exist!";
-} else {
-$1=_st(self._method())._source();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.Debugger)})},
-messageSends: ["ifNil:ifNotNil:", "method", "source"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateContextsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@ul"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return self._renderContext_on_(_st(self._error())._context(),html);
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateContextsList",{},smalltalk.Debugger)})},
-messageSends: ["contents:", "renderContext:on:", "context", "error"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateInspector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@inspector"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateInspector",{},smalltalk.Debugger)})},
-messageSends: ["contents:"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateSourceArea",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._val_(self._source());
-return self}, function($ctx1) {$ctx1.fill(self,"updateSourceArea",{},smalltalk.Debugger)})},
-messageSends: ["val:", "source"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateStatus",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(_st(self["@sourceArea"])._val()).__eq(self._source());
-if(smalltalk.assert($1)){
-$2=self["@saveButton"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-_st(self["@saveButton"])._at_put_("disabled",true);
-};
-self["@unsavedChanges"]=false;
-self["@unsavedChanges"];
-} else {
-$3=self["@saveButton"];
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(self["@saveButton"])._removeAt_("disabled");
-};
-self["@unsavedChanges"]=true;
-self["@unsavedChanges"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"updateStatus",{},smalltalk.Debugger)})},
-messageSends: ["ifTrue:ifFalse:", "=", "val", "source", "ifNotNil:", "at:put:", "removeAt:"]}),
-smalltalk.Debugger);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateVariablesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-_st(self["@ul2"])._contents_((function(html){
-var li;
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._with_("self");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectVariable_named_(self._receiver(),"self");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-li=$2;
-li;
-$3=_st(self["@selectedVariableName"]).__eq("self");
-if(smalltalk.assert($3)){
-_st(li)._class_("selected");
-};
-return _st(self._allVariables())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx3) {
-$4=_st(html)._li();
-_st($4)._with_(key);
-$5=_st($4)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectVariable_named_(value,key);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-li=$5;
-li;
-$6=_st(self["@selectedVariableName"]).__eq(key);
-if(smalltalk.assert($6)){
-return _st(li)._class_("selected");
-};
-}, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,4)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html,li:li},$ctx1,1)})}));
-$7=self["@selectedVariable"];
-if(($receiver = $7) == nil || $receiver == undefined){
-_st(self["@inspectButton"])._at_put_("disabled",true);
-} else {
-_st(self["@inspectButton"])._removeAt_("disabled");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"updateVariablesList",{},smalltalk.Debugger)})},
-messageSends: ["contents:", "with:", "li", "onClick:", "selectVariable:named:", "receiver", "ifTrue:", "=", "class:", "keysAndValuesDo:", "allVariables", "ifNil:ifNotNil:", "at:put:", "removeAt:"]}),
-smalltalk.Debugger);
-
-
-
-smalltalk.addClass('IDETranscript', smalltalk.TabWidget, ['textarea'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@textarea"])._asJQuery())._val_("");
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.IDETranscript)})},
-messageSends: ["val:", "asJQuery"]}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cr",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self["@textarea"])._asJQuery())._val_(_st(_st(_st(self["@textarea"])._asJQuery())._val()).__comma(_st($String())._cr()));
-return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.IDETranscript)})},
-messageSends: ["val:", "asJQuery", ",", "val", "cr"]}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Transcript";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.IDETranscript)})},
-messageSends: []}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($TabManager())._current();
-_st($1)._open();
-$2=_st($1)._selectTab_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.IDETranscript)})},
-messageSends: ["open", "current", "selectTab:"]}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@textarea"]=_st(html)._textarea();
-$1=self["@textarea"];
-_st($1)._class_("amber_transcript");
-$2=_st($1)._at_put_("spellcheck","false");
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.IDETranscript)})},
-messageSends: ["textarea", "class:", "at:put:"]}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._button();
-_st($1)._with_("Clear transcript");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._clear();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.IDETranscript)})},
-messageSends: ["with:", "button", "onClick:", "clear"]}),
-smalltalk.IDETranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@textarea"];
-if(($receiver = $1) == nil || $receiver == undefined){
-self._open();
-} else {
-$1;
-};
-_st(_st(self["@textarea"])._asJQuery())._val_(_st(_st(_st(self["@textarea"])._asJQuery())._val()).__comma(_st(anObject)._asString()));
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.IDETranscript)})},
-messageSends: ["ifNil:", "open", "val:", "asJQuery", ",", "val", "asString"]}),
-smalltalk.IDETranscript);
-
-
-smalltalk.IDETranscript.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=smalltalk.IDETranscript.klass.superclass.fn.prototype._new.apply(_st(self), []);
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.IDETranscript.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.IDETranscript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
-return smalltalk.withContext(function($ctx1) { 
-_st($Transcript())._register_(self._current());
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.IDETranscript.klass)})},
-messageSends: ["register:", "current"]}),
-smalltalk.IDETranscript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.IDETranscript.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.IDETranscript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-function $TabManager(){return smalltalk.TabManager||(typeof TabManager=="undefined"?nil:TabManager)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($TabManager())._current();
-_st($1)._open();
-$2=_st($1)._selectTab_(self._current());
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.IDETranscript.klass)})},
-messageSends: ["open", "current", "selectTab:"]}),
-smalltalk.IDETranscript.klass);
-
-
-smalltalk.addClass('Inspector', smalltalk.TabWidget, ['label', 'variables', 'object', 'selectedVariable', 'variablesList', 'valueTextarea', 'diveButton', 'sourceArea'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeClosed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeClosed",{},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._variables())._at_(self._selectedVariable()))._inspect();
-return self}, function($ctx1) {$ctx1.fill(self,"dive",{},smalltalk.Inspector)})},
-messageSends: ["inspect", "at:", "variables", "selectedVariable"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@object"]=anObject;
-self["@variables"]=[];
-_st(self["@object"])._inspectOn_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.Inspector)})},
-messageSends: ["inspectOn:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@label"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="Inspector (nil)";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.Inspector)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "refresh",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._inspect_(self["@object"]);
-_st($1)._updateVariablesList();
-$2=_st($1)._updateValueTextarea();
-return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.Inspector)})},
-messageSends: ["inspect:", "updateVariablesList", "updateValueTextarea"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBottomPanelOn:",
-fn: function (html){
-var self=this;
-function $SourceArea(){return smalltalk.SourceArea||(typeof SourceArea=="undefined"?nil:SourceArea)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$2;
-$1=_st(html)._div();
-_st($1)._class_("amber_sourceCode");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=_st($SourceArea())._new();
-_st($3)._receiver_(self["@object"]);
-_st($3)._onDoIt_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._refresh();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$4=_st($3)._yourself();
-self["@sourceArea"]=$4;
-self["@sourceArea"];
-return _st(self["@sourceArea"])._renderOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBottomPanelOn:",{html:html},smalltalk.Inspector)})},
-messageSends: ["class:", "div", "with:", "receiver:", "new", "onDoIt:", "refresh", "yourself", "renderOn:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._renderTopPanelOn_(html);
-$2=_st($1)._renderBottomPanelOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.Inspector)})},
-messageSends: ["renderTopPanelOn:", "renderBottomPanelOn:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-$1=_st(html)._button();
-_st($1)._with_("DoIt");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._sourceArea())._doIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$3=_st(html)._button();
-_st($3)._with_("PrintIt");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._sourceArea())._printIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$5=_st(html)._button();
-_st($5)._with_("InspectIt");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._sourceArea())._inspectIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-self._updateButtons();
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.Inspector)})},
-messageSends: ["with:", "button", "onClick:", "doIt", "sourceArea", "printIt", "inspectIt", "updateButtons"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderTopPanelOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$7,$8,$9,$10,$6,$2,$11,$12;
-$1=_st(html)._div();
-_st($1)._class_("top");
-$2=_st($1)._with_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@variablesList"]=_st(_st(html)._ul())._class_("amber_column variables");
-self["@variablesList"];
-$3=_st(html)._textarea();
-_st($3)._class_("amber_column value");
-$4=_st($3)._at_put_("readonly","readonly");
-self["@valueTextarea"]=$4;
-self["@valueTextarea"];
-$5=_st(html)._div();
-_st($5)._class_("amber_tabs inspector");
-$6=_st($5)._with_((function(){
-return smalltalk.withContext(function($ctx3) {
-$7=_st(html)._button();
-_st($7)._class_("amber_button inspector refresh");
-_st($7)._with_("Refresh");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._refresh();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-$8;
-$9=_st(html)._button();
-_st($9)._class_("amber_button inspector dive");
-_st($9)._with_("Dive");
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._dive();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
-self["@diveButton"]=$10;
-return self["@diveButton"];
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$6;
-return _st(_st(html)._div())._class_("amber_clear");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$11=self;
-_st($11)._updateVariablesList();
-$12=_st($11)._updateValueTextarea();
-return self}, function($ctx1) {$ctx1.fill(self,"renderTopPanelOn:",{html:html},smalltalk.Inspector)})},
-messageSends: ["class:", "div", "with:", "ul", "textarea", "at:put:", "button", "onClick:", "refresh", "dive", "updateVariablesList", "updateValueTextarea"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectVariable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._selectedVariable_(aString);
-$1=self;
-_st($1)._updateVariablesList();
-_st($1)._updateValueTextarea();
-$2=_st($1)._updateButtons();
-return self}, function($ctx1) {$ctx1.fill(self,"selectVariable:",{aString:aString},smalltalk.Inspector)})},
-messageSends: ["selectedVariable:", "updateVariablesList", "updateValueTextarea", "updateButtons"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedVariable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selectedVariable"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedVariable",{},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedVariable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selectedVariable"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selectedVariable:",{aString:aString},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setLabel:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@label"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"setLabel:",{aString:aString},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setVariables:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@variables"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"setVariables:",{aCollection:aCollection},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sourceArea",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@sourceArea"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sourceArea",{},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateButtons",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._selectedVariable())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._variables())._at_(self._selectedVariable()))._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st(self["@diveButton"])._removeAt_("disabled");
-} else {
-_st(self["@diveButton"])._at_put_("disabled",true);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"updateButtons",{},smalltalk.Inspector)})},
-messageSends: ["ifFalse:ifTrue:", "and:", "notNil", "selectedVariable", "at:", "variables", "at:put:", "removeAt:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateValueTextarea",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2;
-$1=_st(self["@valueTextarea"])._asJQuery();
-$3=_st(self._selectedVariable())._isNil();
-if(smalltalk.assert($3)){
-$2="";
-} else {
-$2=_st(_st(self._variables())._at_(self._selectedVariable()))._printString();
-};
-_st($1)._val_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"updateValueTextarea",{},smalltalk.Inspector)})},
-messageSends: ["val:", "asJQuery", "ifTrue:ifFalse:", "isNil", "selectedVariable", "printString", "at:", "variables"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateVariablesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(self["@variablesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._variables())._keys())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$1=li;
-_st($1)._with_(each);
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectVariable_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-$2;
-$3=_st(self._selectedVariable()).__eq(each);
-if(smalltalk.assert($3)){
-return _st(li)._class_("selected");
-};
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateVariablesList",{},smalltalk.Inspector)})},
-messageSends: ["contents:", "do:", "keys", "variables", "li", "with:", "onClick:", "selectVariable:", "ifTrue:", "=", "selectedVariable", "class:"]}),
-smalltalk.Inspector);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "variables",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@variables"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variables",{},smalltalk.Inspector)})},
-messageSends: []}),
-smalltalk.Inspector);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._inspect_(anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.Inspector.klass)})},
-messageSends: ["inspect:", "new", "yourself"]}),
-smalltalk.Inspector.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._inspect_(anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject},smalltalk.Inspector.klass)})},
-messageSends: ["inspect:", "new", "yourself"]}),
-smalltalk.Inspector.klass);
-
-
-smalltalk.addClass('ProgressBar', smalltalk.TabWidget, ['percent', 'progressDiv', 'div'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "percent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@percent"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=(0);
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"percent",{},smalltalk.ProgressBar)})},
-messageSends: ["ifNil:"]}),
-smalltalk.ProgressBar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "percent:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@percent"]=aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"percent:",{aNumber:aNumber},smalltalk.ProgressBar)})},
-messageSends: []}),
-smalltalk.ProgressBar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._div();
-_st($1)._class_("progress_bar");
-$2=_st($1)._yourself();
-self["@div"]=$2;
-self._renderProgressBar();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.ProgressBar)})},
-messageSends: ["class:", "div", "yourself", "renderProgressBar"]}),
-smalltalk.ProgressBar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderProgressBar",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self["@div"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._div();
-_st($1)._class_("progress");
-$2=_st($1)._style_(_st("width:".__comma(_st(self._percent())._asString())).__comma("%"));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderProgressBar",{},smalltalk.ProgressBar)})},
-messageSends: ["contents:", "class:", "div", "style:", ",", "asString", "percent"]}),
-smalltalk.ProgressBar);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updatePercent:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._percent_(aNumber);
-self._renderProgressBar();
-return self}, function($ctx1) {$ctx1.fill(self,"updatePercent:",{aNumber:aNumber},smalltalk.ProgressBar)})},
-messageSends: ["percent:", "renderProgressBar"]}),
-smalltalk.ProgressBar);
-
-
-
-smalltalk.addClass('ReferencesBrowser', smalltalk.TabWidget, ['implementors', 'senders', 'implementorsList', 'input', 'timer', 'selector', 'sendersList', 'referencedClasses', 'referencedClassesList', 'matches', 'matchesList'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canBeClosed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"canBeClosed",{},smalltalk.ReferencesBrowser)})},
-messageSends: []}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classesAndMetaclasses",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._classes()).__comma(_st(_st(_st($Smalltalk())._current())._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._class();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclasses",{},smalltalk.ReferencesBrowser)})},
-messageSends: [",", "classes", "current", "collect:", "class"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "implementors",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@implementors"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@implementors"]=_st($Array())._new();
-$1=self["@implementors"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"implementors",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ReferencesBrowser.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@selector"]="";
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["initialize"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "[References]";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.ReferencesBrowser)})},
-messageSends: []}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "matches",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@matches"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@matches"]=_st($Array())._new();
-$1=self["@matches"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"matches",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "openBrowserOn:",
-fn: function (aMethod){
-var self=this;
-var browser;
-function $Browser(){return smalltalk.Browser||(typeof Browser=="undefined"?nil:Browser)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2,$4,$5,$6;
-$1=$Browser();
-$3=_st(_st(aMethod)._methodClass())._isMetaclass();
-if(smalltalk.assert($3)){
-$2=_st(_st(aMethod)._methodClass())._instanceClass();
-} else {
-$2=_st(aMethod)._methodClass();
-};
-browser=_st($1)._openOn_($2);
-$4=_st(_st(aMethod)._methodClass())._isMetaclass();
-if(smalltalk.assert($4)){
-_st(browser)._selectTab_("class");
-};
-$5=browser;
-_st($5)._selectProtocol_(_st(aMethod)._category());
-$6=_st($5)._selectMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"openBrowserOn:",{aMethod:aMethod,browser:browser},smalltalk.ReferencesBrowser)})},
-messageSends: ["openOn:", "ifTrue:ifFalse:", "isMetaclass", "methodClass", "instanceClass", "ifTrue:", "selectTab:", "selectProtocol:", "category", "selectMethod:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "referencedClasses",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@referencedClasses"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@referencedClasses"]=_st($Array())._new();
-$1=self["@referencedClasses"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._renderInputOn_(html);
-_st($1)._renderImplementorsOn_(html);
-_st($1)._renderSendersOn_(html);
-_st($1)._renderReferencedClassesOn_(html);
-$2=_st($1)._renderMatchesOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["renderInputOn:", "renderImplementorsOn:", "renderSendersOn:", "renderReferencedClassesOn:", "renderMatchesOn:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderImplementorsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@implementorsList"]=_st(_st(html)._ul())._class_("amber_column implementors");
-self._updateImplementorsList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderImplementorsOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["class:", "ul", "updateImplementorsList"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderInputOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._input();
-_st($1)._class_("implementors");
-$2=_st($1)._yourself();
-self["@input"]=$2;
-_st(_st(self["@input"])._asJQuery())._val_(self["@selector"]);
-self._setInputEvents();
-return self}, function($ctx1) {$ctx1.fill(self,"renderInputOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["class:", "input", "yourself", "val:", "asJQuery", "setInputEvents"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderMatchesOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@matchesList"]=_st(_st(html)._ul())._class_("amber_column matches");
-self._updateMatchesList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderMatchesOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["class:", "ul", "updateMatchesList"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderReferencedClassesOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@referencedClassesList"]=_st(_st(html)._ul())._class_("amber_column referenced_classes");
-self._updateReferencedClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderReferencedClassesOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["class:", "ul", "updateReferencedClassesList"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderSendersOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@sendersList"]=_st(_st(html)._ul())._class_("amber_column senders");
-self._updateSendersList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderSendersOn:",{html:html},smalltalk.ReferencesBrowser)})},
-messageSends: ["class:", "ul", "updateSendersList"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._searchReferencesFor_(aString);
-_st($1)._updateImplementorsList();
-_st($1)._updateSendersList();
-_st($1)._updateReferencedClassesList();
-$2=_st($1)._updateMatchesList();
-return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.ReferencesBrowser)})},
-messageSends: ["searchReferencesFor:", "updateImplementorsList", "updateSendersList", "updateReferencedClassesList", "updateMatchesList"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchMethodSource",
-fn: function (){
-var self=this;
-var regex;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-regex=_st(self["@selector"])._allButFirst();
-_st(self._classesAndMetaclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(each)._methodDictionary())._values())._do_((function(value){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(_st(value)._source())._match_(regex);
-if(smalltalk.assert($1)){
-return _st(self._matches())._add_(value);
-};
-}, function($ctx3) {$ctx3.fillBlock({value:value},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchMethodSource",{regex:regex},smalltalk.ReferencesBrowser)})},
-messageSends: ["allButFirst", "do:", "classesAndMetaclasses", "values", "methodDictionary", "ifTrue:", "match:", "source", "add:", "matches"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchReferencedClasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self._classesAndMetaclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(each)._methodDictionary())._values())._do_((function(value){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(_st(value)._referencedClasses())._includes_(self["@selector"]);
-if(smalltalk.assert($1)){
-return _st(self._referencedClasses())._add_(value);
-};
-}, function($ctx3) {$ctx3.fillBlock({value:value},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchReferencedClasses",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["do:", "classesAndMetaclasses", "values", "methodDictionary", "ifTrue:", "includes:", "referencedClasses", "add:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchReferencesFor:",
-fn: function (aString){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self["@selector"]=aString;
-self["@implementors"]=_st($Array())._new();
-self["@senders"]=_st($Array())._new();
-self["@referencedClasses"]=_st($Array())._new();
-self["@matches"]=_st($Array())._new();
-self._searchMethodSource();
-$1=_st(self["@selector"])._match_("^[A-Z]");
-if(smalltalk.assert($1)){
-self._searchReferencedClasses();
-} else {
-self._searchSelectorReferences();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"searchReferencesFor:",{aString:aString},smalltalk.ReferencesBrowser)})},
-messageSends: ["new", "searchMethodSource", "ifFalse:ifTrue:", "match:", "searchSelectorReferences", "searchReferencedClasses"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "searchSelectorReferences",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self._classesAndMetaclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._methodDictionary())._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx3) {
-$1=_st(key).__eq(self["@selector"]);
-if(smalltalk.assert($1)){
-_st(self._implementors())._add_(value);
-};
-$2=_st(_st(value)._messageSends())._includes_(self["@selector"]);
-if(smalltalk.assert($2)){
-return _st(self._senders())._add_(value);
-};
-}, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchSelectorReferences",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["do:", "classesAndMetaclasses", "keysAndValuesDo:", "methodDictionary", "ifTrue:", "=", "add:", "implementors", "includes:", "messageSends", "senders"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.ReferencesBrowser)})},
-messageSends: []}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "senders",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@senders"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@senders"]=_st($Array())._new();
-$1=self["@senders"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"senders",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setInputEvents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2;
-$1=self["@input"];
-_st($1)._onKeyUp_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@timer"]=_st((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._search_(_st(_st(self["@input"])._asJQuery())._val());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._valueWithTimeout_((100));
-return self["@timer"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=_st($1)._onKeyDown_((function(){
-return smalltalk.withContext(function($ctx2) {
-$3=self["@timer"];
-if(($receiver = $3) == nil || $receiver == undefined){
-return $3;
-} else {
-return _st(self["@timer"])._clearTimeout();
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setInputEvents",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["onKeyUp:", "valueWithTimeout:", "search:", "val", "asJQuery", "onKeyDown:", "ifNotNil:", "clearTimeout"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateImplementorsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@implementorsList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("column_label");
-_st($1)._with_(_st("Implementors (".__comma(_st(_st(self._implementors())._size())._asString())).__comma(")"));
-$2=_st($1)._style_("font-weight: bold");
-$2;
-return _st(self._implementors())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$3=li;
-_st($3)._with_(_st(_st(_st(_st(each)._methodClass())._asString()).__comma(" >> ")).__comma(self._selector()));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._openBrowserOn_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateImplementorsList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "implementors", "style:", "do:", "methodClass", "selector", "onClick:", "openBrowserOn:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateMatchesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@matchesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("column_label");
-_st($1)._with_(_st("Regex matches (".__comma(_st(_st(self._matches())._size())._asString())).__comma(")"));
-$2=_st($1)._style_("font-weight: bold");
-$2;
-return _st(self._matches())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$3=li;
-_st($3)._with_(_st(_st(_st(_st(each)._methodClass())._asString()).__comma(" >> ")).__comma(_st(each)._selector()));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._openBrowserOn_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMatchesList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "matches", "style:", "do:", "methodClass", "selector", "onClick:", "openBrowserOn:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateReferencedClassesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@referencedClassesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("column_label");
-_st($1)._with_(_st("Class references (".__comma(_st(_st(self._referencedClasses())._size())._asString())).__comma(")"));
-$2=_st($1)._style_("font-weight: bold");
-$2;
-return _st(self._referencedClasses())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-$3=_st(html)._li();
-_st($3)._with_(_st(_st(_st(_st(each)._methodClass())._asString()).__comma(" >> ")).__comma(_st(each)._selector()));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._openBrowserOn_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateReferencedClassesList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "referencedClasses", "style:", "do:", "methodClass", "selector", "onClick:", "openBrowserOn:"]}),
-smalltalk.ReferencesBrowser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateSendersList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-_st(self["@sendersList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("column_label");
-_st($1)._with_(_st("Senders (".__comma(_st(_st(self._senders())._size())._asString())).__comma(")"));
-$2=_st($1)._style_("font-weight: bold");
-$2;
-return _st(self._senders())._do_((function(each){
-return smalltalk.withContext(function($ctx3) {
-$3=_st(html)._li();
-_st($3)._with_(_st(_st(_st(_st(each)._methodClass())._asString()).__comma(" >> ")).__comma(_st(each)._selector()));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._openBrowserOn_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateSendersList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "senders", "style:", "do:", "methodClass", "selector", "onClick:", "openBrowserOn:"]}),
-smalltalk.ReferencesBrowser);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "search:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._searchReferencesFor_(aString);
-$3=_st($2)._open();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.ReferencesBrowser.klass)})},
-messageSends: ["searchReferencesFor:", "new", "open"]}),
-smalltalk.ReferencesBrowser.klass);
-
-
-smalltalk.addClass('TestRunner', smalltalk.TabWidget, ['selectedCategories', 'packagesList', 'selectedClasses', 'classesList', 'selectedMethods', 'progressBar', 'methodsList', 'result', 'statusDiv'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allClasses",
-fn: function (){
-var self=this;
-function $TestCase(){return smalltalk.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($TestCase())._allSubclasses())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._isAbstract())._not();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allClasses",{},smalltalk.TestRunner)})},
-messageSends: ["select:", "allSubclasses", "not", "isAbstract"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._allClasses())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._selectedCategories())._includes_(_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._sort_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._name()).__gt(_st(b)._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.TestRunner)})},
-messageSends: ["sort:", "select:", "allClasses", "includes:", "selectedCategories", "category", ">", "name"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $TestResult(){return smalltalk.TestResult||(typeof TestResult=="undefined"?nil:TestResult)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.TestRunner.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@result"]=_st($TestResult())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestRunner)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSelectedCategory:",
-fn: function (aCategory){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selectedCategories())._includes_(aCategory);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isSelectedCategory:",{aCategory:aCategory},smalltalk.TestRunner)})},
-messageSends: ["includes:", "selectedCategories"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSelectedClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selectedClasses())._includes_(aClass);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isSelectedClass:",{aClass:aClass},smalltalk.TestRunner)})},
-messageSends: ["includes:", "selectedClasses"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "SUnit";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.TestRunner)})},
-messageSends: []}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-var packages;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-packages=_st($Array())._new();
-_st(self._allClasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(packages)._includes_(_st(each)._category());
-if(! smalltalk.assert($1)){
-return _st(packages)._add_(_st(each)._category());
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=_st(packages)._sort();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"packages",{packages:packages},smalltalk.TestRunner)})},
-messageSends: ["new", "do:", "allClasses", "ifFalse:", "includes:", "category", "add:", "sort"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "performFailure:",
-fn: function (aTestCase){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aTestCase)._runCase();
-return self}, function($ctx1) {$ctx1.fill(self,"performFailure:",{aTestCase:aTestCase},smalltalk.TestRunner)})},
-messageSends: ["runCase"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printErrors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(self._result())._errors())._size())._asString()).__comma(" errors, ");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"printErrors",{},smalltalk.TestRunner)})},
-messageSends: [",", "asString", "size", "errors", "result"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printFailures",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(self._result())._failures())._size())._asString()).__comma(" failures");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"printFailures",{},smalltalk.TestRunner)})},
-messageSends: [",", "asString", "size", "failures", "result"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printPasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(_st(self._result())._runs()).__minus(_st(_st(self._result())._errors())._size())).__minus(_st(_st(self._result())._failures())._size()))._asString()).__comma(" passes, ");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"printPasses",{},smalltalk.TestRunner)})},
-messageSends: [",", "asString", "-", "runs", "result", "size", "errors", "failures"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printTotal",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._result())._total())._asString()).__comma(" runs, ");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"printTotal",{},smalltalk.TestRunner)})},
-messageSends: [",", "asString", "total", "result"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "progressBar",
-fn: function (){
-var self=this;
-function $ProgressBar(){return smalltalk.ProgressBar||(typeof ProgressBar=="undefined"?nil:ProgressBar)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@progressBar"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@progressBar"]=_st($ProgressBar())._new();
-$1=self["@progressBar"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"progressBar",{},smalltalk.TestRunner)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._renderCategoriesOn_(html);
-_st($1)._renderClassesOn_(html);
-$2=_st($1)._renderResultsOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["renderCategoriesOn:", "renderClassesOn:", "renderResultsOn:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(html)._button();
-_st($1)._with_("Run selected");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._run_(self._testCases());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["with:", "button", "onClick:", "run:", "testCases"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderCategoriesOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@packagesList"]=_st(_st(html)._ul())._class_("amber_column sunit packages");
-self._updateCategoriesList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderCategoriesOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["class:", "ul", "updateCategoriesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderClassesOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@classesList"]=_st(_st(html)._ul())._class_("amber_column sunit classes");
-self._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"renderClassesOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["class:", "ul", "updateClassesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderErrorsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(_st(self._result())._errors())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("errors");
-_st($1)._with_(_st(_st(_st(_st(each)._class())._name()).__comma(" >> ")).__comma(_st(each)._selector()));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._performFailure_(each);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderErrorsOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["do:", "errors", "result", "class:", "li", "with:", ",", "name", "class", "selector", "onClick:", "performFailure:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderFailuresOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(_st(self._result())._failures())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("failures");
-_st($1)._with_(_st(_st(_st(_st(each)._class())._name()).__comma(" >> ")).__comma(_st(each)._selector()));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._performFailure_(each);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderFailuresOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["do:", "failures", "result", "class:", "li", "with:", ",", "name", "class", "selector", "onClick:", "performFailure:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderResultsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@statusDiv"]=_st(html)._div();
-_st(html)._with_(self._progressBar());
-self["@methodsList"]=_st(_st(html)._ul())._class_("amber_column sunit results");
-self._updateMethodsList();
-self._updateStatusDiv();
-return self}, function($ctx1) {$ctx1.fill(self,"renderResultsOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["div", "with:", "progressBar", "class:", "ul", "updateMethodsList", "updateStatusDiv"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@result"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestRunner)})},
-messageSends: []}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "run:",
-fn: function (aCollection){
-var self=this;
-var worker;
-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;
-worker=_st($TestSuiteRunner())._on_(aCollection);
-self["@result"]=_st(worker)._result();
-_st(_st(worker)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(ann)._result()).__eq_eq(self["@result"]);
-if(smalltalk.assert($1)){
-_st(self._progressBar())._updatePercent_(_st(_st(_st(self["@result"])._runs()).__slash(_st(self["@result"])._total())).__star((100)));
-self._updateStatusDiv();
-return self._updateMethodsList();
-};
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)})}));
-_st(worker)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"run:",{aCollection:aCollection,worker:worker},smalltalk.TestRunner)})},
-messageSends: ["on:", "result", "on:do:", "announcer", "ifTrue:", "==", "updatePercent:", "progressBar", "*", "/", "runs", "total", "updateStatusDiv", "updateMethodsList", "run"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectAllCategories",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(self._packages())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self["@selectedCategories"])._includes_(each);
-if(! smalltalk.assert($1)){
-return _st(self._selectedCategories())._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=self;
-_st($2)._updateCategoriesList();
-$3=_st($2)._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"selectAllCategories",{},smalltalk.TestRunner)})},
-messageSends: ["do:", "packages", "ifFalse:", "includes:", "add:", "selectedCategories", "updateCategoriesList", "updateClassesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectAllClasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(self._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self["@selectedClasses"])._includes_(each);
-if(! smalltalk.assert($1)){
-return _st(self._selectedClasses())._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=self;
-_st($2)._updateCategoriesList();
-$3=_st($2)._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"selectAllClasses",{},smalltalk.TestRunner)})},
-messageSends: ["do:", "classes", "ifFalse:", "includes:", "add:", "selectedClasses", "updateCategoriesList", "updateClassesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedCategories",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectedCategories"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@selectedCategories"]=_st($Array())._new();
-$1=self["@selectedCategories"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedCategories",{},smalltalk.TestRunner)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectedClasses",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@selectedClasses"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@selectedClasses"]=_st($Array())._new();
-$1=self["@selectedClasses"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedClasses",{},smalltalk.TestRunner)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "statusInfo",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._printTotal()).__comma(self._printPasses())).__comma(self._printErrors())).__comma(self._printFailures());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"statusInfo",{},smalltalk.TestRunner)})},
-messageSends: [",", "printTotal", "printPasses", "printErrors", "printFailures"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCases",
-fn: function (){
-var self=this;
-var testCases;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-testCases=[];
-_st(_st(self._selectedClasses())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._selectedCategories())._includes_(_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(testCases)._addAll_(_st(each)._buildSuite());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$1=testCases;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"testCases",{testCases:testCases},smalltalk.TestRunner)})},
-messageSends: ["do:", "select:", "selectedClasses", "includes:", "selectedCategories", "category", "addAll:", "buildSuite"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "toggleCategory:",
-fn: function (aCategory){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=self._isSelectedCategory_(aCategory);
-if(smalltalk.assert($1)){
-_st(self["@selectedCategories"])._remove_(aCategory);
-} else {
-_st(self["@selectedCategories"])._add_(aCategory);
-};
-$2=self;
-_st($2)._updateCategoriesList();
-$3=_st($2)._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"toggleCategory:",{aCategory:aCategory},smalltalk.TestRunner)})},
-messageSends: ["ifFalse:ifTrue:", "isSelectedCategory:", "add:", "remove:", "updateCategoriesList", "updateClassesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "toggleClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isSelectedClass_(aClass);
-if(smalltalk.assert($1)){
-_st(self["@selectedClasses"])._remove_(aClass);
-} else {
-_st(self["@selectedClasses"])._add_(aClass);
-};
-self._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"toggleClass:",{aClass:aClass},smalltalk.TestRunner)})},
-messageSends: ["ifFalse:ifTrue:", "isSelectedClass:", "add:", "remove:", "updateClassesList"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateCategoriesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-_st(self["@packagesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(html)._li();
-_st($1)._class_("all");
-_st($1)._with_("All");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectAllCategories();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-$2;
-return _st(self._packages())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$3=_st(self._selectedCategories())._includes_(each);
-if(smalltalk.assert($3)){
-_st(li)._class_("selected");
-};
-$4=li;
-_st($4)._with_(each);
-$5=_st($4)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._toggleCategory_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}));
-return $5;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateCategoriesList",{},smalltalk.TestRunner)})},
-messageSends: ["contents:", "class:", "li", "with:", "onClick:", "selectAllCategories", "do:", "packages", "ifTrue:", "includes:", "selectedCategories", "toggleCategory:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateClassesList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-_st(self["@classesList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self._selectedCategories())._isEmpty();
-if(! smalltalk.assert($1)){
-$2=_st(html)._li();
-_st($2)._class_("all");
-_st($2)._with_("All");
-$3=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectAllClasses();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$3;
-};
-return _st(self._classes())._do_((function(each){
-var li;
-return smalltalk.withContext(function($ctx3) {
-li=_st(html)._li();
-li;
-$4=_st(self._selectedClasses())._includes_(each);
-if(smalltalk.assert($4)){
-_st(li)._class_("selected");
-};
-$5=li;
-_st($5)._with_(_st(each)._name());
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._toggleClass_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
-return $6;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2,4)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateClassesList",{},smalltalk.TestRunner)})},
-messageSends: ["contents:", "ifFalse:", "isEmpty", "selectedCategories", "class:", "li", "with:", "onClick:", "selectAllClasses", "do:", "classes", "ifTrue:", "includes:", "selectedClasses", "name", "toggleClass:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateMethodsList",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@methodsList"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-self._renderErrorsOn_(html);
-return self._renderFailuresOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsList",{},smalltalk.TestRunner)})},
-messageSends: ["contents:", "renderErrorsOn:", "renderFailuresOn:"]}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "updateStatusDiv",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@statusDiv"])._class_("sunit status ".__comma(_st(self["@result"])._status()));
-_st(self["@statusDiv"])._contents_((function(html){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(html)._span())._with_(self._statusInfo());
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateStatusDiv",{},smalltalk.TestRunner)})},
-messageSends: ["class:", ",", "status", "contents:", "with:", "span", "statusInfo"]}),
-smalltalk.TestRunner);
-
-
-
-smalltalk.addClass('Workspace', smalltalk.TabWidget, ['sourceArea'], 'IDE');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearWorkspace",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._clear();
-return self}, function($ctx1) {$ctx1.fill(self,"clearWorkspace",{},smalltalk.Workspace)})},
-messageSends: ["clear"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._doIt();
-return self}, function($ctx1) {$ctx1.fill(self,"doIt",{},smalltalk.Workspace)})},
-messageSends: ["doIt"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fileIn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._fileIn();
-return self}, function($ctx1) {$ctx1.fill(self,"fileIn",{},smalltalk.Workspace)})},
-messageSends: ["fileIn"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._inspectIt();
-return self}, function($ctx1) {$ctx1.fill(self,"inspectIt",{},smalltalk.Workspace)})},
-messageSends: ["inspectIt"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "label",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "Workspace";
-}, function($ctx1) {$ctx1.fill(self,"label",{},smalltalk.Workspace)})},
-messageSends: []}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printIt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@sourceArea"])._printIt();
-return self}, function($ctx1) {$ctx1.fill(self,"printIt",{},smalltalk.Workspace)})},
-messageSends: ["printIt"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderBoxOn:",
-fn: function (html){
-var self=this;
-function $SourceArea(){return smalltalk.SourceArea||(typeof SourceArea=="undefined"?nil:SourceArea)}
-return smalltalk.withContext(function($ctx1) { 
-self["@sourceArea"]=_st($SourceArea())._new();
-_st(self["@sourceArea"])._renderOn_(html);
-return self}, function($ctx1) {$ctx1.fill(self,"renderBoxOn:",{html:html},smalltalk.Workspace)})},
-messageSends: ["new", "renderOn:"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderButtonsOn:",
-fn: function (html){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
-$1=_st(html)._button();
-_st($1)._with_("DoIt");
-_st($1)._title_("ctrl+d");
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._doIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$3=_st(html)._button();
-_st($3)._with_("PrintIt");
-_st($3)._title_("ctrl+p");
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._printIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$5=_st(html)._button();
-_st($5)._with_("InspectIt");
-_st($5)._title_("ctrl+i");
-$6=_st($5)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._inspectIt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$7=_st(html)._button();
-_st($7)._with_("FileIn");
-_st($7)._title_("ctrl+f");
-$8=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._fileIn();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-$9=_st(html)._button();
-_st($9)._with_("Clear workspace");
-$10=_st($9)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._clearWorkspace();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.Workspace)})},
-messageSends: ["with:", "button", "title:", "onClick:", "doIt", "printIt", "inspectIt", "fileIn", "clearWorkspace"]}),
-smalltalk.Workspace);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Workspace.superclass.fn.prototype._show.apply(_st(self), []);
-_st(self["@sourceArea"])._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"show",{},smalltalk.Workspace)})},
-messageSends: ["show", "focus"]}),
-smalltalk.Workspace);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-self._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(i,each);
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)})}));
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.Collection)})},
-messageSends: ["new", "at:put:", "withIndexDo:", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-_st(variables)._at_put_("#keys",self._keys());
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.HashedCollection)})},
-messageSends: ["new", "at:put:", "keys", "keysAndValuesDo:", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var label;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.String.superclass.fn.prototype._inspectOn_.apply(_st(self), [anInspector]);
-$1=_st(_st(self._printString())._size()).__gt((30));
-if(smalltalk.assert($1)){
-label=_st(_st(self._printString())._copyFrom_to_((1),(30))).__comma("...'");
-label;
-} else {
-label=self._printString();
-label;
-};
-_st(anInspector)._setLabel_(label);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,label:label},smalltalk.String)})},
-messageSends: ["inspectOn:", "ifTrue:ifFalse:", ">", "size", "printString", ",", "copyFrom:to:", "setLabel:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-_st(self["@elements"])._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(i,each);
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)})}));
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.Set)})},
-messageSends: ["new", "at:put:", "withIndexDo:", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-_st(variables)._at_put_("#year",self._year());
-_st(variables)._at_put_("#month",self._month());
-_st(variables)._at_put_("#day",self._day());
-_st(variables)._at_put_("#hours",self._hours());
-_st(variables)._at_put_("#minutes",self._minutes());
-_st(variables)._at_put_("#seconds",self._seconds());
-_st(variables)._at_put_("#milliseconds",self._milliseconds());
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.Date)})},
-messageSends: ["new", "at:put:", "year", "month", "day", "hours", "minutes", "seconds", "milliseconds", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-_st(variables)._at_put_("#home",self._home());
-_st(variables)._at_put_("#receiver",self._receiver());
-_st(variables)._at_put_("#selector",self._selector());
-_st(variables)._at_put_("#temps",self._temps());
-_st(_st(self._class())._instanceVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(each,self._instVarAt_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.MethodContext)})},
-messageSends: ["new", "at:put:", "home", "receiver", "selector", "temps", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.MethodContext);
-
-})(global_smalltalk,global_nil,global__st);

File diff suppressed because it is too large
+ 141 - 137
js/IDE.js


+ 0 - 1450
js/Importer-Exporter.deploy.js

@@ -1,1450 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Importer-Exporter');
-
-smalltalk.addClass('AbstractExporter', smalltalk.Object, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "chunkEscape:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},smalltalk.AbstractExporter)})},
-messageSends: ["trimBoth", "replace:with:"]}),
-smalltalk.AbstractExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNameFor:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(" class");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
-} else {
-$1=_st(aClass)._name();
-};
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.AbstractExporter)})},
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"]}),
-smalltalk.AbstractExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recipe",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.AbstractExporter)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.AbstractExporter);
-
-
-smalltalk.AbstractExporter.klass.iVarNames = ['default'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "default",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@default"]=self._new();
-$1=self["@default"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"default",{},smalltalk.AbstractExporter.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.AbstractExporter.klass);
-
-
-smalltalk.addClass('ChunkExporter', smalltalk.AbstractExporter, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportCategoryEpilogueOf:on:",
-fn: function (aCategory,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_(" !");
-_st($1)._lf();
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportCategoryEpilogueOf:on:",{aCategory:aCategory,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["nextPutAll:", "lf"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportCategoryPrologueOf:on:",
-fn: function (aCategory,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("!".__comma(self._classNameFor_(_st(aCategory)._theClass())));
-$2=_st($1)._nextPutAll_(_st(" methodsFor: '".__comma(_st(aCategory)._name())).__comma("'!"));
-return self}, function($ctx1) {$ctx1.fill(self,"exportCategoryPrologueOf:on:",{aCategory:aCategory,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportDefinitionOf:on:",
-fn: function (aClass,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-$1=aStream;
-_st($1)._nextPutAll_(self._classNameFor_(_st(aClass)._superclass()));
-_st($1)._nextPutAll_(" subclass: #".__comma(self._classNameFor_(aClass)));
-_st($1)._lf();
-_st($1)._tab();
-$2=_st($1)._nextPutAll_("instanceVariableNames: '");
-_st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3=aStream;
-_st($3)._nextPutAll_("'");
-_st($3)._lf();
-_st($3)._tab();
-_st($3)._nextPutAll_(_st("package: '".__comma(_st(aClass)._category())).__comma("'!"));
-$4=_st($3)._lf();
-$5=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($5)){
-$6=aStream;
-_st($6)._nextPutAll_(_st("!".__comma(self._classNameFor_(aClass))).__comma(" commentStamp!"));
-_st($6)._lf();
-_st($6)._nextPutAll_(_st(self._chunkEscape_(_st(aClass)._comment())).__comma("!"));
-$7=_st($6)._lf();
-$7;
-};
-_st(aStream)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "chunkEscape:"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportMetaDefinitionOf:on:",
-fn: function (aClass,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
-$1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
-if(! smalltalk.assert($1)){
-$2=aStream;
-_st($2)._nextPutAll_(self._classNameFor_(_st(aClass)._class()));
-$3=_st($2)._nextPutAll_(" instanceVariableNames: '");
-$3;
-_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-$4=aStream;
-_st($4)._nextPutAll_("'!");
-_st($4)._lf();
-$5=_st($4)._lf();
-$5;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "do:separatedBy:", "lf"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportMethod:on:",
-fn: function (aMethod,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._lf();
-_st($1)._lf();
-_st($1)._nextPutAll_(self._chunkEscape_(_st(aMethod)._source()));
-_st($1)._lf();
-$2=_st($1)._nextPutAll_("!");
-return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["lf", "nextPutAll:", "chunkEscape:", "source"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackageDefinitionOf:on:",
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_(_st("Smalltalk current createPackage: '".__comma(_st(aPackage)._name())).__comma("'!"));
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.ChunkExporter)})},
-messageSends: ["nextPutAll:", ",", "name", "lf"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "extensionCategoriesOfPackage:",
-fn: function (aPackage){
-var self=this;
-var name,map,result;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-function $MethodCategory(){return smalltalk.MethodCategory||(typeof MethodCategory=="undefined"?nil:MethodCategory)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-name=_st(aPackage)._name();
-result=_st($OrderedCollection())._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;
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx4) {
-$1=_st(category).__eq("*".__comma(name));
-if(smalltalk.assert($1)){
-return _st(map)._at_put_(category,methods);
-};
-}, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3,3)})}));
-return _st(result)._addAll_(_st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx4) {
-return _st(a).__lt_eq(b);
-}, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)})})))._collect_((function(category){
-return smalltalk.withContext(function($ctx4) {
-return _st($MethodCategory())._name_theClass_methods_(category,aClass,_st(map)._at_(category));
-}, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3,6)})})));
-}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=result;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"extensionCategoriesOfPackage:",{aPackage:aPackage,name:name,map:map,result:result},smalltalk.ChunkExporter)})},
-messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "current", "class", "protocolsDo:", "ifTrue:", "=", ",", "at:put:", "addAll:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsOfCategory:",
-fn: function (aCategory){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aCategory)._methods())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsOfCategory:",{aCategory:aCategory},smalltalk.ChunkExporter)})},
-messageSends: ["sorted:", "methods", "<=", "selector"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ownCategoriesOfClass:",
-fn: function (aClass){
-var self=this;
-var map;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-function $MethodCategory(){return smalltalk.MethodCategory||(typeof MethodCategory=="undefined"?nil:MethodCategory)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-map=_st($Dictionary())._new();
-_st(aClass)._protocolsDo_((function(category,methods){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(category)._match_("^\x5c*");
-if(! smalltalk.assert($1)){
-return _st(map)._at_put_(category,methods);
-};
-}, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1,1)})}));
-$2=_st(_st(_st(map)._keys())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(a).__lt_eq(b);
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)})})))._collect_((function(category){
-return smalltalk.withContext(function($ctx2) {
-return _st($MethodCategory())._name_theClass_methods_(category,aClass,_st(map)._at_(category));
-}, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1,4)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map},smalltalk.ChunkExporter)})},
-messageSends: ["new", "protocolsDo:", "ifFalse:", "match:", "at:put:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ownCategoriesOfMetaClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._ownCategoriesOfClass_(_st(aClass)._class());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfMetaClass:",{aClass:aClass},smalltalk.ChunkExporter)})},
-messageSends: ["ownCategoriesOfClass:", "class"]}),
-smalltalk.ChunkExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recipe",
-fn: function (){
-var self=this;
-var exportCategoryRecipe;
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-exportCategoryRecipe=[self.__minus_gt("exportCategoryPrologueOf:on:"),[self.__minus_gt("methodsOfCategory:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportCategoryEpilogueOf:on:")];
-$1=[self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),_st([self.__minus_gt("ownCategoriesOfClass:")]).__comma(exportCategoryRecipe),self.__minus_gt("exportMetaDefinitionOf:on:"),_st([self.__minus_gt("ownCategoriesOfMetaClass:")]).__comma(exportCategoryRecipe)],_st([self.__minus_gt("extensionCategoriesOfPackage:")]).__comma(exportCategoryRecipe)];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{exportCategoryRecipe:exportCategoryRecipe},smalltalk.ChunkExporter)})},
-messageSends: ["->", ","]}),
-smalltalk.ChunkExporter);
-
-
-
-smalltalk.addClass('Exporter', smalltalk.AbstractExporter, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNameFor:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(aClass)._isMetaclass();
-if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
-} else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
-$1="nil";
-} else {
-$1=_st(aClass)._name();
-};
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.Exporter)})},
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportDefinitionOf:on:",
-fn: function (aClass,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-$1=aStream;
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.addClass(");
-_st($1)._nextPutAll_(_st("'".__comma(self._classNameFor_(aClass))).__comma("', "));
-_st($1)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aClass)._superclass())));
-$2=_st($1)._nextPutAll_(", [");
-_st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3=aStream;
-_st($3)._nextPutAll_("], '");
-_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$4=_st($3)._nextPutAll_(");");
-$5=_st(_st(aClass)._comment())._notEmpty();
-if(smalltalk.assert($5)){
-$6=aStream;
-_st($6)._lf();
-_st($6)._nextPutAll_("smalltalk.");
-_st($6)._nextPutAll_(self._classNameFor_(aClass));
-_st($6)._nextPutAll_(".comment=");
-_st($6)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript());
-$7=_st($6)._nextPutAll_(";");
-$7;
-};
-_st(aStream)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "asJavascript"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportMetaDefinitionOf:on:",
-fn: function (aClass,aStream){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-_st(aStream)._lf();
-$1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty();
-if(! smalltalk.assert($1)){
-$2=aStream;
-_st($2)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aClass)._class())));
-$3=_st($2)._nextPutAll_(".iVarNames = [");
-$3;
-_st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-_st(aStream)._nextPutAll_("];".__comma(_st($String())._lf()));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["lf", "ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", ",", "classNameFor:", "do:separatedBy:"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportMethod:on:",
-fn: function (aMethod,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=aStream;
-_st($1)._nextPutAll_("smalltalk.addMethod(");
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.method({");
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("selector: ".__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("category: '".__comma(_st(aMethod)._category())).__comma("',"));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("fn: ".__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("args: ".__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("source: ".__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("messageSends: ".__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(","));
-_st($1)._lf();
-$2=_st($1)._nextPutAll_("referencedClasses: ".__comma(_st(_st(aMethod)._referencedClasses())._asJavascript()));
-$3=aStream;
-_st($3)._lf();
-_st($3)._nextPutAll_("}),");
-_st($3)._lf();
-_st($3)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aMethod)._methodClass())));
-_st($3)._nextPutAll_(");");
-_st($3)._lf();
-$4=_st($3)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "category", "compiledSource", "fn", "arguments", "source", "messageSends", "referencedClasses", "classNameFor:", "methodClass"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackageDefinitionOf:on:",
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("smalltalk.addPackage(");
-_st($1)._nextPutAll_(_st("'".__comma(_st(aPackage)._name())).__comma("');"));
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["nextPutAll:", ",", "name", "lf"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackageEpilogueOf:on:",
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("})(global_smalltalk,global_nil,global__st);");
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["nextPutAll:", "lf"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackagePrologueOf:on:",
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("(function(smalltalk,nil,_st){");
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.Exporter)})},
-messageSends: ["nextPutAll:", "lf"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "extensionMethodsOfPackage:",
-fn: function (aPackage){
-var self=this;
-var name,result;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-name=_st(aPackage)._name();
-result=_st($OrderedCollection())._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) {
-return _st(result)._addAll_(_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},$ctx3,3)})})))._select_((function(method){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(method)._category()).__eq("*".__comma(name));
-}, function($ctx4) {$ctx4.fillBlock({method:method},$ctx3,4)})})));
-}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,name:name,result:result},smalltalk.Exporter)})},
-messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "current", "class", "addAll:", "select:", "sorted:", "values", "methodDictionary", "<=", "selector", "=", "category", ","]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ownMethodsOfClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_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());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._category())._match_("^\x5c*");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass},smalltalk.Exporter)})},
-messageSends: ["reject:", "sorted:", "values", "methodDictionary", "<=", "selector", "match:", "category"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ownMethodsOfMetaClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._ownMethodsOfClass_(_st(aClass)._class());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownMethodsOfMetaClass:",{aClass:aClass},smalltalk.Exporter)})},
-messageSends: ["ownMethodsOfClass:", "class"]}),
-smalltalk.Exporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recipe",
-fn: function (){
-var self=this;
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.Exporter)})},
-messageSends: ["->"]}),
-smalltalk.Exporter);
-
-
-
-smalltalk.addClass('StrippedExporter', smalltalk.Exporter, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportDefinitionOf:on:",
-fn: function (aClass,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=aStream;
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.addClass(");
-_st($1)._nextPutAll_(_st("'".__comma(self._classNameFor_(aClass))).__comma("', "));
-_st($1)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aClass)._superclass())));
-$2=_st($1)._nextPutAll_(", [");
-_st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3=aStream;
-_st($3)._nextPutAll_("], '");
-_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$4=_st($3)._nextPutAll_(");");
-_st(aStream)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.StrippedExporter)})},
-messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category"]}),
-smalltalk.StrippedExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportMethod:on:",
-fn: function (aMethod,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("smalltalk.addMethod(");
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.method({");
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("selector: ".__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("fn: ".__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_("messageSends: ".__comma(_st(_st(aMethod)._messageSends())._asJavascript()));
-_st($1)._nextPutAll_("}),");
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aMethod)._methodClass())));
-_st($1)._nextPutAll_(");");
-_st($1)._lf();
-$2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},smalltalk.StrippedExporter)})},
-messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "compiledSource", "fn", "messageSends", "classNameFor:", "methodClass"]}),
-smalltalk.StrippedExporter);
-
-
-
-smalltalk.addClass('ChunkParser', smalltalk.Object, ['stream'], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextChunk",
-fn: function (){
-var self=this;
-var char,result,chunk;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-var $early={};
-try {
-result=""._writeStream();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-char=_st(self["@stream"])._next();
-char;
-return _st(char)._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(char).__eq("!");
-if(smalltalk.assert($1)){
-$2=_st(_st(self["@stream"])._peek()).__eq("!");
-if(smalltalk.assert($2)){
-_st(self["@stream"])._next();
-} else {
-$3=_st(_st(result)._contents())._trimBoth();
-throw $early=[$3];
-};
-};
-return _st(result)._nextPut_(char);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return nil;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"nextChunk",{char:char,result:result,chunk:chunk},smalltalk.ChunkParser)})},
-messageSends: ["writeStream", "whileTrue:", "next", "notNil", "ifTrue:", "=", "ifTrue:ifFalse:", "peek", "trimBoth", "contents", "nextPut:"]}),
-smalltalk.ChunkParser);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stream:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@stream"]=aStream;
-return self}, function($ctx1) {$ctx1.fill(self,"stream:",{aStream:aStream},smalltalk.ChunkParser)})},
-messageSends: []}),
-smalltalk.ChunkParser);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._stream_(aStream);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},smalltalk.ChunkParser.klass)})},
-messageSends: ["stream:", "new"]}),
-smalltalk.ChunkParser.klass);
-
-
-smalltalk.addClass('ExportRecipeInterpreter', smalltalk.Object, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpret:for:on:",
-fn: function (aRecipe,anObject,aStream){
-var self=this;
-var recipeStream;
-return smalltalk.withContext(function($ctx1) { 
-recipeStream=_st(aRecipe)._readStream();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(recipeStream)._atEnd();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._interpretStep_for_on_(_st(recipeStream)._next(),anObject,aStream);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,recipeStream:recipeStream},smalltalk.ExportRecipeInterpreter)})},
-messageSends: ["readStream", "whileFalse:", "atEnd", "interpretStep:for:on:", "next"]}),
-smalltalk.ExportRecipeInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretStep:for:on:",
-fn: function (aRecipeStep,anObject,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aRecipeStep)._value()).__eq_eq(aRecipeStep);
-if(smalltalk.assert($1)){
-$2=self._interpretSubRecipe_for_on_(aRecipeStep,anObject,aStream);
-return $2;
-};
-_st(_st(aRecipeStep)._key())._perform_withArguments_(_st(aRecipeStep)._value(),[anObject,aStream]);
-return self}, function($ctx1) {$ctx1.fill(self,"interpretStep:for:on:",{aRecipeStep:aRecipeStep,anObject:anObject,aStream:aStream},smalltalk.ExportRecipeInterpreter)})},
-messageSends: ["ifTrue:", "==", "value", "interpretSubRecipe:for:on:", "perform:withArguments:", "key"]}),
-smalltalk.ExportRecipeInterpreter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpretSubRecipe:for:on:",
-fn: function (aRecipe,anObject,aStream){
-var self=this;
-var selection;
-return smalltalk.withContext(function($ctx1) { 
-selection=_st(_st(_st(aRecipe)._first())._key())._perform_withArguments_(_st(_st(aRecipe)._first())._value(),[anObject]);
-_st(selection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._interpret_for_on_(_st(aRecipe)._allButFirst(),each,aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretSubRecipe:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,selection:selection},smalltalk.ExportRecipeInterpreter)})},
-messageSends: ["perform:withArguments:", "key", "first", "value", "do:", "interpret:for:on:", "allButFirst"]}),
-smalltalk.ExportRecipeInterpreter);
-
-
-
-smalltalk.addClass('Importer', smalltalk.Object, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "import:",
-fn: function (aStream){
-var self=this;
-var chunk,result,parser,lastEmpty;
-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;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-chunk=_st(parser)._nextChunk();
-chunk;
-return _st(chunk)._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(chunk)._isEmpty();
-if(smalltalk.assert($1)){
-lastEmpty=true;
-return lastEmpty;
-} else {
-result=_st(_st($Compiler())._new())._evaluateExpression_(chunk);
-result;
-$2=lastEmpty;
-if(smalltalk.assert($2)){
-lastEmpty=false;
-lastEmpty;
-return _st(result)._scanFrom_(parser);
-};
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty},smalltalk.Importer)})},
-messageSends: ["on:", "whileFalse:", "nextChunk", "isNil", "ifTrue:ifFalse:", "isEmpty", "evaluateExpression:", "new", "ifTrue:", "scanFrom:"]}),
-smalltalk.Importer);
-
-
-
-smalltalk.addClass('MethodCategory', smalltalk.Object, ['methods', 'name', 'theClass'], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methods",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@methods"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methods",{},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methods:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@methods"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"methods:",{aCollection:aCollection},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@name"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@name"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.MethodCategory)})},
-messageSends: []}),
-smalltalk.MethodCategory);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:theClass:methods:",
-fn: function (aString,aClass,anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._name_(aString);
-_st($2)._theClass_(aClass);
-_st($2)._methods_(anArray);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"name:theClass:methods:",{aString:aString,aClass:aClass,anArray:anArray},smalltalk.MethodCategory.klass)})},
-messageSends: ["name:", "new", "theClass:", "methods:", "yourself"]}),
-smalltalk.MethodCategory.klass);
-
-
-smalltalk.addClass('PackageHandler', smalltalk.InterfacingObject, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ajaxPutAt:data:",
-fn: function (aURL,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(aURL),"type".__minus_gt("PUT"),"data".__minus_gt(aString),"contentType".__minus_gt("text/plain;charset=UTF-8"),"error".__minus_gt((function(xhr){
-return smalltalk.withContext(function($ctx2) {
-return self._error_(_st(_st(_st("Commiting ".__comma(aURL)).__comma(" failed with reason: \x22")).__comma(_st(xhr)._responseText())).__comma("\x22"));
-}, function($ctx2) {$ctx2.fillBlock({xhr:xhr},$ctx1,1)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:",{aURL:aURL,aString:aString},smalltalk.PackageHandler)})},
-messageSends: ["ajax:", "->", "error:", ",", "responseText"]}),
-smalltalk.PackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commit:",
-fn: function (aPackage){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._commitChannels())._do_displayingProgress_((function(commitStrategyFactory){
-var fileContents,commitStrategy;
-return smalltalk.withContext(function($ctx2) {
-commitStrategy=_st(commitStrategyFactory)._value_(aPackage);
-commitStrategy;
-fileContents=_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st($PluggableExporter())._forRecipe_(_st(commitStrategy)._key()))._exportPackage_on_(aPackage,stream);
-}, function($ctx3) {$ctx3.fillBlock({stream:stream},$ctx2,2)})}));
-fileContents;
-return self._ajaxPutAt_data_(_st(commitStrategy)._value(),fileContents);
-}, function($ctx2) {$ctx2.fillBlock({commitStrategyFactory:commitStrategyFactory,fileContents:fileContents,commitStrategy:commitStrategy},$ctx1,1)})}),"Committing package ".__comma(_st(aPackage)._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage},smalltalk.PackageHandler)})},
-messageSends: ["do:displayingProgress:", "commitChannels", "value:", "streamContents:", "exportPackage:on:", "forRecipe:", "key", "ajaxPutAt:data:", "value", ",", "name"]}),
-smalltalk.PackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitChannels",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"commitChannels",{},smalltalk.PackageHandler)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.PackageHandler);
-
-
-smalltalk.PackageHandler.klass.iVarNames = ['registry'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classRegisteredFor:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@registry"])._at_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString},smalltalk.PackageHandler.klass)})},
-messageSends: ["at:"]}),
-smalltalk.PackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "for:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._classRegisteredFor_(aString))._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString},smalltalk.PackageHandler.klass)})},
-messageSends: ["new", "classRegisteredFor:"]}),
-smalltalk.PackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.PackageHandler.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@registry"]=smalltalk.HashedCollection._from_([]);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.PackageHandler.klass)})},
-messageSends: ["initialize"]}),
-smalltalk.PackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register:for:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@registry"])._at_put_(aString,aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"register:for:",{aClass:aClass,aString:aString},smalltalk.PackageHandler.klass)})},
-messageSends: ["at:put:"]}),
-smalltalk.PackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerFor:",
-fn: function (aString){
-var self=this;
-function $PackageHandler(){return smalltalk.PackageHandler||(typeof PackageHandler=="undefined"?nil:PackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($PackageHandler())._register_for_(self,aString);
-return self}, function($ctx1) {$ctx1.fill(self,"registerFor:",{aString:aString},smalltalk.PackageHandler.klass)})},
-messageSends: ["register:for:"]}),
-smalltalk.PackageHandler.klass);
-
-
-smalltalk.addClass('LegacyPackageHandler', smalltalk.PackageHandler, [], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitChannels",
-fn: function (){
-var self=this;
-function $Exporter(){return smalltalk.Exporter||(typeof Exporter=="undefined"?nil:Exporter)}
-function $StrippedExporter(){return smalltalk.StrippedExporter||(typeof StrippedExporter=="undefined"?nil:StrippedExporter)}
-function $ChunkExporter(){return smalltalk.ChunkExporter||(typeof ChunkExporter=="undefined"?nil:ChunkExporter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($Exporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathJs()).__comma("/")).__comma(_st(pkg)._name())).__comma(".js"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,1)})}),(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($StrippedExporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathJs()).__comma("/")).__comma(_st(pkg)._name())).__comma(".deploy.js"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,2)})}),(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($ChunkExporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathSt()).__comma("/")).__comma(_st(pkg)._name())).__comma(".st"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,3)})})];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitChannels",{},smalltalk.LegacyPackageHandler)})},
-messageSends: ["->", "recipe", "default", ",", "commitPathJs", "name", "commitPathSt"]}),
-smalltalk.LegacyPackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathJsFor:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._defaultCommitPathJs();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},smalltalk.LegacyPackageHandler)})},
-messageSends: ["defaultCommitPathJs", "class"]}),
-smalltalk.LegacyPackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathStFor:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._defaultCommitPathSt();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage},smalltalk.LegacyPackageHandler)})},
-messageSends: ["defaultCommitPathSt", "class"]}),
-smalltalk.LegacyPackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "loadPackage:prefix:",
-fn: function (packageName,aString){
-var self=this;
-var url;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-url=_st(_st(_st("/".__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
-self._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(url),"type".__minus_gt("GET"),"dataType".__minus_gt("script"),"complete".__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(jqXHR)._readyState()).__eq((4));
-if(smalltalk.assert($1)){
-return self._setupPackageNamed_prefix_(packageName,aString);
-};
-}, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1,1)})})),"error".__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._alert_("Could not load package at: ".__comma(url));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.LegacyPackageHandler)})},
-messageSends: [",", "ajax:", "->", "ifTrue:", "=", "readyState", "setupPackageNamed:prefix:", "alert:"]}),
-smalltalk.LegacyPackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "loadPackages:prefix:",
-fn: function (aCollection,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._loadPackage_prefix_(each,aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.LegacyPackageHandler)})},
-messageSends: ["do:", "loadPackage:prefix:"]}),
-smalltalk.LegacyPackageHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupPackageNamed:prefix:",
-fn: function (packageName,aString){
-var self=this;
-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)._commitPathJs_(_st("/".__comma(aString)).__comma("/js"));
-$2=_st($1)._commitPathSt_(_st("/".__comma(aString)).__comma("/st"));
-return self}, function($ctx1) {$ctx1.fill(self,"setupPackageNamed:prefix:",{packageName:packageName,aString:aString},smalltalk.LegacyPackageHandler)})},
-messageSends: ["setupClasses", "named:", "commitPathJs:", ",", "commitPathSt:"]}),
-smalltalk.LegacyPackageHandler);
-
-
-smalltalk.LegacyPackageHandler.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathsFromLoader",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var commitPath = typeof amber !== 'undefined' && amber.commitPath;
-		if (!commitPath) return;
-		if (commitPath.js) self._defaultCommitPathJs_(commitPath.js);
-		if (commitPath.st) self._defaultCommitPathSt_(commitPath.st);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"commitPathsFromLoader",{},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: []}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultCommitPathJs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@defaultCommitPathJs"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@defaultCommitPathJs"]="js";
-$1=self["@defaultCommitPathJs"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathJs",{},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: ["ifNil:"]}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultCommitPathJs:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathJs"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathJs:",{aString:aString},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: []}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultCommitPathSt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@defaultCommitPathSt"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@defaultCommitPathSt"]="st";
-$1=self["@defaultCommitPathSt"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathSt",{},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: ["ifNil:"]}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultCommitPathSt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathSt"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathSt:",{aString:aString},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: []}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.LegacyPackageHandler.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._registerFor_("unknown");
-self._commitPathsFromLoader();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: ["initialize", "registerFor:", "commitPathsFromLoader"]}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "loadPackages:prefix:",
-fn: function (aCollection,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._loadPackages_prefix_(aCollection,aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: ["loadPackages:prefix:", "new"]}),
-smalltalk.LegacyPackageHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetCommitPaths",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathJs"]=nil;
-self["@defaultCommitPathSt"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"resetCommitPaths",{},smalltalk.LegacyPackageHandler.klass)})},
-messageSends: []}),
-smalltalk.LegacyPackageHandler.klass);
-
-
-smalltalk.addClass('PluggableExporter', smalltalk.Object, ['recipe'], 'Importer-Exporter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportAllPackages",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-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 self._exportPackage_on_(pkg,stream);
-}, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"exportAllPackages",{},smalltalk.PluggableExporter)})},
-messageSends: ["streamContents:", "do:", "packages", "current", "exportPackage:on:"]}),
-smalltalk.PluggableExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackage:on:",
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._interpreter())._interpret_for_on_(self._recipe(),aPackage,aStream);
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},smalltalk.PluggableExporter)})},
-messageSends: ["interpret:for:on:", "interpreter", "recipe"]}),
-smalltalk.PluggableExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "interpreter",
-fn: function (){
-var self=this;
-function $ExportRecipeInterpreter(){return smalltalk.ExportRecipeInterpreter||(typeof ExportRecipeInterpreter=="undefined"?nil:ExportRecipeInterpreter)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ExportRecipeInterpreter())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.PluggableExporter)})},
-messageSends: ["new"]}),
-smalltalk.PluggableExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recipe",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@recipe"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.PluggableExporter)})},
-messageSends: []}),
-smalltalk.PluggableExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recipe:",
-fn: function (anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@recipe"]=anArray;
-return self}, function($ctx1) {$ctx1.fill(self,"recipe:",{anArray:anArray},smalltalk.PluggableExporter)})},
-messageSends: []}),
-smalltalk.PluggableExporter);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "forRecipe:",
-fn: function (aRecipe){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._recipe_(aRecipe);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"forRecipe:",{aRecipe:aRecipe},smalltalk.PluggableExporter.klass)})},
-messageSends: ["recipe:", "new", "yourself"]}),
-smalltalk.PluggableExporter.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ownClassesOfPackage:",
-fn: function (package_){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(package_)._sortedClasses())._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownClassesOfPackage:",{package_:package_},smalltalk.PluggableExporter.klass)})},
-messageSends: ["asSet", "sortedClasses"]}),
-smalltalk.PluggableExporter.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commit",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._transport())._commit_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commit",{},smalltalk.Package)})},
-messageSends: ["commit:", "transport"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathJs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_ifAbsentPut_("commitPathJs",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._transport())._commitPathJsFor_(self);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJs",{},smalltalk.Package)})},
-messageSends: ["at:ifAbsentPut:", "ifNil:", "commitPathJsFor:", "transport"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathJs:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_put_("commitPathJs",aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJs:",{aString:aString},smalltalk.Package)})},
-messageSends: ["at:put:", "ifNil:"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathSt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_ifAbsentPut_("commitPathSt",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._transport())._commitPathStFor_(self);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathSt",{},smalltalk.Package)})},
-messageSends: ["at:ifAbsentPut:", "ifNil:", "commitPathStFor:", "transport"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPathSt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_put_("commitPathSt",aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathSt:",{aString:aString},smalltalk.Package)})},
-messageSends: ["at:put:", "ifNil:"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "transport",
-fn: function (){
-var self=this;
-function $PackageHandler(){return smalltalk.PackageHandler||(typeof PackageHandler=="undefined"?nil:PackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PackageHandler())._for_(self._transportType());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"transport",{},smalltalk.Package)})},
-messageSends: ["for:", "transportType"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "transportType",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (self.transport && self.transport.type) || 'unknown';;
-return self}, function($ctx1) {$ctx1.fill(self,"transportType",{},smalltalk.Package)})},
-messageSends: []}),
-smalltalk.Package);
-
-})(global_smalltalk,global_nil,global__st);

+ 929 - 734
js/Importer-Exporter.js

@@ -1,8 +1,9 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Importer-Exporter", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Kernel-Infrastructure"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Importer-Exporter');
+smalltalk.packages["Importer-Exporter"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('AbstractExporter', smalltalk.Object, [], 'Importer-Exporter');
-smalltalk.AbstractExporter.comment="I am an abstract exporter for Amber source code.";
+smalltalk.AbstractExporter.comment="I am an abstract exporter for Amber source code.\x0a\x0a## API\x0a\x0aUse `#exportPackage:on:` to export a given package on a Stream.";
 smalltalk.addMethod(
 smalltalk.method({
 selector: "chunkEscape:",
@@ -44,52 +45,86 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.AbstractExporter)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09\x09ifTrue: [ aClass instanceClass name, ' class' ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09aClass isNil\x0a\x09\x09\x09\x09ifTrue: [ 'nil' ]\x0a\x09\x09\x09\x09ifFalse: [ aClass name ] ]",
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"],
+messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
 referencedClasses: []
 }),
 smalltalk.AbstractExporter);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "recipe",
-category: 'fileOut',
-fn: function (){
+selector: "exportPackage:on:",
+category: 'output',
+fn: function (aPackage,aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.AbstractExporter)})},
-args: [],
-source: "recipe\x0a\x09\x22Recipe to export a given package.\x22\x0a\x0a\x09self subclassResponsibility",
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},smalltalk.AbstractExporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackage: aPackage on: aStream\x0a\x09self subclassResponsibility",
 messageSends: ["subclassResponsibility"],
 referencedClasses: []
 }),
 smalltalk.AbstractExporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "extensionMethodsOfPackage:",
+category: 'accessing',
+fn: function (aPackage){
+var self=this;
+var result;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+result=_st($OrderedCollection())._new();
+_st(self._extensionProtocolsOfPackage_(aPackage))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(result)._addAll_(_st(each)._methods());
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+$1=result;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,result:result},smalltalk.AbstractExporter)})},
+args: ["aPackage"],
+source: "extensionMethodsOfPackage: aPackage\x0a\x09| result |\x0a\x09\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09(self extensionProtocolsOfPackage: aPackage) do: [ :each |\x0a\x09\x09result addAll: each methods ].\x0a\x09\x09\x0a\x09^ result",
+messageSends: ["new", "do:", "addAll:", "methods", "extensionProtocolsOfPackage:"],
+referencedClasses: ["OrderedCollection"]
+}),
+smalltalk.AbstractExporter);
 
-smalltalk.AbstractExporter.klass.iVarNames = ['default'];
 smalltalk.addMethod(
 smalltalk.method({
-selector: "default",
-category: 'instance creation',
-fn: function (){
+selector: "extensionProtocolsOfPackage:",
+category: 'accessing',
+fn: function (aPackage){
 var self=this;
+var extensionName,result;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+function $ExportMethodProtocol(){return smalltalk.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@default"]=self._new();
-$1=self["@default"];
-} else {
-$1=$2;
+var $1,$2;
+extensionName="*".__comma(_st(aPackage)._name());
+result=_st($OrderedCollection())._new();
+_st(_st(_st($Smalltalk())._current())._classes())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st([each,_st(each)._class()])._do_((function(behavior){
+return smalltalk.withContext(function($ctx3) {
+$1=_st(_st(behavior)._protocols())._includes_(extensionName);
+if(smalltalk.assert($1)){
+return _st(result)._add_(_st($ExportMethodProtocol())._name_theClass_(extensionName,behavior));
 };
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"default",{},smalltalk.AbstractExporter.klass)})},
-args: [],
-source: "default\x0a\x09^ default ifNil: [ default := self new ]",
-messageSends: ["ifNil:", "new"],
-referencedClasses: []
+}, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+$2=result;
+return $2;
+}, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result},smalltalk.AbstractExporter)})},
+args: ["aPackage"],
+source: "extensionProtocolsOfPackage: aPackage\x0a\x09| extensionName result |\x0a\x09\x0a\x09extensionName := '*', aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09\x22The classes must be loaded since it is extensions only.\x0a\x09Therefore sorting (dependency resolution) does not matter here.\x0a\x09Not sorting improves the speed by a number of magnitude.\x22\x0a\x09\x0a\x09Smalltalk current classes do: [ :each |\x0a\x09\x09{each. each class} do: [ :behavior |\x0a\x09\x09\x09(behavior protocols includes: extensionName) ifTrue: [\x0a\x09\x09\x09\x09result add: (ExportMethodProtocol name: extensionName theClass: behavior) ] ] ].\x0a\x0a\x09^result",
+messageSends: [",", "name", "new", "do:", "ifTrue:", "add:", "name:theClass:", "includes:", "protocols", "class", "classes", "current"],
+referencedClasses: ["OrderedCollection", "ExportMethodProtocol", "Smalltalk"]
 }),
-smalltalk.AbstractExporter.klass);
+smalltalk.AbstractExporter);
+
 
 
 smalltalk.addClass('ChunkExporter', smalltalk.AbstractExporter, [], 'Importer-Exporter');
@@ -150,10 +185,10 @@ $2=_st($1)._nextPutAll_("instanceVariableNames: '");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 _st($3)._nextPutAll_("'");
 _st($3)._lf();
@@ -173,7 +208,7 @@ _st(aStream)._lf();
 return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.ChunkExporter)})},
 args: ["aClass", "aStream"],
 source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ' subclass: #', (self classNameFor: aClass); lf;\x0a\x09\x09tab; nextPutAll: 'instanceVariableNames: '''.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [:each | aStream nextPutAll: each]\x0a\x09\x09separatedBy: [aStream nextPutAll: ' '].\x0a\x09aStream\x0a\x09\x09nextPutAll: ''''; lf;\x0a\x09\x09tab; nextPutAll: 'package: ''', aClass category, '''!'; lf.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf].\x0a\x09aStream lf",
-messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "chunkEscape:"],
+messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "chunkEscape:", "comment", "notEmpty"],
 referencedClasses: []
 }),
 smalltalk.ChunkExporter);
@@ -195,10 +230,10 @@ $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $4=aStream;
 _st($4)._nextPutAll_("'!");
 _st($4)._lf();
@@ -208,7 +243,7 @@ $5;
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.ChunkExporter)})},
 args: ["aClass", "aStream"],
 source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: (self classNameFor: aClass class);\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09aClass class instanceVariableNames\x0a\x09\x09\x09do: [:each | aStream nextPutAll: each]\x0a\x09\x09\x09separatedBy: [aStream nextPutAll: ' '].\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: '''!'; lf; lf]",
-messageSends: ["ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "do:separatedBy:", "lf"],
+messageSends: ["ifFalse:", "nextPutAll:", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"],
 referencedClasses: []
 }),
 smalltalk.ChunkExporter);
@@ -235,6 +270,30 @@ referencedClasses: []
 }),
 smalltalk.ChunkExporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportPackage:on:",
+category: 'output',
+fn: function (aPackage,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._exportPackageDefinitionOf_on_(aPackage,aStream);
+_st(_st(aPackage)._sortedClasses())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+self._exportDefinitionOf_on_(each,aStream);
+self._exportProtocols_on_(self._ownMethodProtocolsOfClass_(each),aStream);
+self._exportMetaDefinitionOf_on_(each,aStream);
+return self._exportProtocols_on_(self._ownMethodProtocolsOfClass_(_st(each)._class()),aStream);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+self._exportProtocols_on_(self._extensionProtocolsOfPackage_(aPackage),aStream);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},smalltalk.ChunkExporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self exportPackageDefinitionOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportDefinitionOf: each on: aStream.\x0a\x09\x09\x0a\x09\x09self \x0a\x09\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: each)\x0a\x09\x09\x09on: aStream.\x0a\x09\x09\x09\x0a\x09\x09self exportMetaDefinitionOf: each on: aStream.\x0a\x09\x09\x0a\x09\x09self \x0a\x09\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: each class)\x0a\x09\x09\x09on: aStream ].\x0a\x09\x09\x09\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
+messageSends: ["exportPackageDefinitionOf:on:", "do:", "exportDefinitionOf:on:", "exportProtocols:on:", "ownMethodProtocolsOfClass:", "exportMetaDefinitionOf:on:", "class", "sortedClasses", "extensionProtocolsOfPackage:"],
+referencedClasses: []
+}),
+smalltalk.ChunkExporter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
@@ -248,12 +307,91 @@ _st($1)._nextPutAll_(_st("Smalltalk current createPackage: '".__comma(_st(aPacka
 $2=_st($1)._lf();
 return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.ChunkExporter)})},
 args: ["aPackage", "aStream"],
-source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: 'Smalltalk current createPackage: ''', aPackage name, '''!';\x0a\x09\x09lf",
+source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'Smalltalk current createPackage: ''', aPackage name, '''!';\x0a\x09\x09lf",
 messageSends: ["nextPutAll:", ",", "name", "lf"],
 referencedClasses: []
 }),
 smalltalk.ChunkExporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportProtocol:on:",
+category: 'output',
+fn: function (aProtocol,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._exportProtocolPrologueOf_on_(aProtocol,aStream);
+_st(_st(aProtocol)._methods())._do_((function(method){
+return smalltalk.withContext(function($ctx2) {
+return self._exportMethod_on_(method,aStream);
+}, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1)})}));
+self._exportProtocolEpilogueOf_on_(aProtocol,aStream);
+return self}, function($ctx1) {$ctx1.fill(self,"exportProtocol:on:",{aProtocol:aProtocol,aStream:aStream},smalltalk.ChunkExporter)})},
+args: ["aProtocol", "aStream"],
+source: "exportProtocol: aProtocol on: aStream\x0a\x09self exportProtocolPrologueOf: aProtocol on: aStream.\x0a\x09aProtocol methods do: [ :method | \x0a\x09\x09self exportMethod: method on: aStream ].\x0a\x09self exportProtocolEpilogueOf: aProtocol on: aStream",
+messageSends: ["exportProtocolPrologueOf:on:", "do:", "exportMethod:on:", "methods", "exportProtocolEpilogueOf:on:"],
+referencedClasses: []
+}),
+smalltalk.ChunkExporter);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportProtocolEpilogueOf:on:",
+category: 'output',
+fn: function (aProtocol,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_(" !");
+_st($1)._lf();
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportProtocolEpilogueOf:on:",{aProtocol:aProtocol,aStream:aStream},smalltalk.ChunkExporter)})},
+args: ["aProtocol", "aStream"],
+source: "exportProtocolEpilogueOf: aProtocol on: aStream\x0a\x09aStream nextPutAll: ' !'; lf; lf",
+messageSends: ["nextPutAll:", "lf"],
+referencedClasses: []
+}),
+smalltalk.ChunkExporter);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportProtocolPrologueOf:on:",
+category: 'output',
+fn: function (aProtocol,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("!".__comma(self._classNameFor_(_st(aProtocol)._theClass())));
+$2=_st($1)._nextPutAll_(_st(" methodsFor: '".__comma(_st(aProtocol)._name())).__comma("'!"));
+return self}, function($ctx1) {$ctx1.fill(self,"exportProtocolPrologueOf:on:",{aProtocol:aProtocol,aStream:aStream},smalltalk.ChunkExporter)})},
+args: ["aProtocol", "aStream"],
+source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aProtocol theClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', aProtocol name, '''!'",
+messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"],
+referencedClasses: []
+}),
+smalltalk.ChunkExporter);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportProtocols:on:",
+category: 'output',
+fn: function (aCollection,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(aCollection)._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return self._exportProtocol_on_(each,aStream);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"exportProtocols:on:",{aCollection:aCollection,aStream:aStream},smalltalk.ChunkExporter)})},
+args: ["aCollection", "aStream"],
+source: "exportProtocols: aCollection on: aStream\x0a\x09aCollection do: [ :each |\x0a\x09\x09self exportProtocol: each on: aStream ]",
+messageSends: ["do:", "exportProtocol:on:"],
+referencedClasses: []
+}),
+smalltalk.ChunkExporter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "extensionCategoriesOfPackage:",
@@ -262,10 +400,10 @@ fn: function (aPackage){
 var self=this;
 var name,map,result;
 function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
 function $MethodCategory(){return smalltalk.MethodCategory||(typeof MethodCategory=="undefined"?nil:MethodCategory)}
+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,$2;
 name=_st(aPackage)._name();
@@ -282,23 +420,23 @@ $1=_st(category).__eq("*".__comma(name));
 if(smalltalk.assert($1)){
 return _st(map)._at_put_(category,methods);
 };
-}, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3,3)})}));
+}, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3)})}));
 return _st(result)._addAll_(_st(_st(_st(map)._keys())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx4) {
 return _st(a).__lt_eq(b);
-}, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)})})))._collect_((function(category){
+}, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3)})})))._collect_((function(category){
 return smalltalk.withContext(function($ctx4) {
 return _st($MethodCategory())._name_theClass_methods_(category,aClass,_st(map)._at_(category));
-}, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3,6)})})));
-}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3)})})));
+}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 $2=result;
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"extensionCategoriesOfPackage:",{aPackage:aPackage,name:name,map:map,result:result},smalltalk.ChunkExporter)})},
 args: ["aPackage"],
-source: "extensionCategoriesOfPackage: aPackage\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| name map result |\x0a\x09name := aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09(Package sortedClasses: Smalltalk current classes) do: [:each |\x0a\x09\x09{each. each class} do: [:aClass |\x0a\x09\x09\x09map := Dictionary new.\x0a\x09\x09\x09aClass protocolsDo: [:category :methods |\x0a\x09\x09\x09\x09category = ('*', name) ifTrue: [ map at: category put: methods ]].\x0a\x09\x09\x09result addAll: ((map keys sorted: [:a :b | a <= b ]) collect: [:category |\x0a\x09\x09\x09\x09MethodCategory name: category theClass: aClass methods: (map at: category)]) ]].\x0a\x09^result",
-messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "current", "class", "protocolsDo:", "ifTrue:", "=", ",", "at:put:", "addAll:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"],
-referencedClasses: ["OrderedCollection", "Package", "Smalltalk", "Dictionary", "MethodCategory"]
+source: "extensionCategoriesOfPackage: aPackage\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| name map result |\x0a\x09name := aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09(Package sortedClasses: Smalltalk current classes) do: [ :each |\x0a\x09\x09{each. each class} do: [ :aClass |\x0a\x09\x09\x09map := Dictionary new.\x0a\x09\x09\x09aClass protocolsDo: [ :category :methods |\x0a\x09\x09\x09\x09category = ('*', name) ifTrue: [ map at: category put: methods ] ].\x0a\x09\x09\x09result addAll: ((map keys sorted: [:a :b | a <= b ]) collect: [ :category |\x0a\x09\x09\x09\x09MethodCategory name: category theClass: aClass methods: (map at: category) ]) ] ].\x0a\x09^result",
+messageSends: ["name", "new", "do:", "protocolsDo:", "ifTrue:", "at:put:", "=", ",", "addAll:", "collect:", "name:theClass:methods:", "at:", "sorted:", "<=", "keys", "class", "sortedClasses:", "classes", "current"],
+referencedClasses: ["OrderedCollection", "Dictionary", "MethodCategory", "Smalltalk", "Package"]
 }),
 smalltalk.ChunkExporter);
 
@@ -313,12 +451,12 @@ var $1;
 $1=_st(_st(aCategory)._methods())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodsOfCategory:",{aCategory:aCategory},smalltalk.ChunkExporter)})},
 args: ["aCategory"],
-source: "methodsOfCategory: aCategory\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^(aCategory methods) sorted: [:a :b | a selector <= b selector]",
-messageSends: ["sorted:", "methods", "<=", "selector"],
+source: "methodsOfCategory: aCategory\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^(aCategory methods) sorted: [ :a :b | a selector <= b selector ]",
+messageSends: ["sorted:", "<=", "selector", "methods"],
 referencedClasses: []
 }),
 smalltalk.ChunkExporter);
@@ -335,25 +473,25 @@ function $MethodCategory(){return smalltalk.MethodCategory||(typeof MethodCatego
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 map=_st($Dictionary())._new();
-_st(aClass)._protocolsDo_((function(category,methods){
+_st(aClass)._protocolsDo_((function(each,methods){
 return smalltalk.withContext(function($ctx2) {
-$1=_st(category)._match_("^\x5c*");
+$1=_st(each)._match_("^\x5c*");
 if(! smalltalk.assert($1)){
-return _st(map)._at_put_(category,methods);
+return _st(map)._at_put_(each,methods);
 };
-}, function($ctx2) {$ctx2.fillBlock({category:category,methods:methods},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each,methods:methods},$ctx1)})}));
 $2=_st(_st(_st(map)._keys())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
 return _st(a).__lt_eq(b);
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)})})))._collect_((function(category){
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
-return _st($MethodCategory())._name_theClass_methods_(category,aClass,_st(map)._at_(category));
-}, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1,4)})}));
+return _st($MethodCategory())._name_theClass_methods_(each,aClass,_st(map)._at_(each));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map},smalltalk.ChunkExporter)})},
 args: ["aClass"],
-source: "ownCategoriesOfClass: aClass\x0a\x09\x22Answer the protocols of aClassthat are not package extensions\x22\x0a\x09\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| map |\x0a\x09map := Dictionary new.\x0a\x09aClass protocolsDo: [:category :methods |\x0a\x09\x09(category match: '^\x5c*') ifFalse: [ map at: category put: methods ]].\x0a\x09^(map keys sorted: [:a :b | a <= b ]) collect: [:category |\x0a\x09\x09MethodCategory name: category theClass: aClass methods: (map at: category) ]",
-messageSends: ["new", "protocolsDo:", "ifFalse:", "match:", "at:put:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"],
+source: "ownCategoriesOfClass: aClass\x0a\x09\x22Answer the protocols of aClass that are not package extensions\x22\x0a\x09\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| map |\x0a\x09map := Dictionary new.\x0a\x09aClass protocolsDo: [ :each :methods |\x0a\x09\x09(each match: '^\x5c*') ifFalse: [ map at: each put: methods ] ].\x0a\x09^(map keys sorted: [:a :b | a <= b ]) collect: [ :each |\x0a\x09\x09MethodCategory name: each theClass: aClass methods: (map at: each) ]",
+messageSends: ["new", "protocolsDo:", "ifFalse:", "at:put:", "match:", "collect:", "name:theClass:methods:", "at:", "sorted:", "<=", "keys"],
 referencedClasses: ["Dictionary", "MethodCategory"]
 }),
 smalltalk.ChunkExporter);
@@ -378,29 +516,30 @@ smalltalk.ChunkExporter);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "recipe",
-category: 'fileOut',
-fn: function (){
+selector: "ownMethodProtocolsOfClass:",
+category: 'accessing',
+fn: function (aClass){
 var self=this;
-var exportCategoryRecipe;
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
+function $ExportMethodProtocol(){return smalltalk.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-exportCategoryRecipe=[self.__minus_gt("exportCategoryPrologueOf:on:"),[self.__minus_gt("methodsOfCategory:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportCategoryEpilogueOf:on:")];
-$1=[self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),_st([self.__minus_gt("ownCategoriesOfClass:")]).__comma(exportCategoryRecipe),self.__minus_gt("exportMetaDefinitionOf:on:"),_st([self.__minus_gt("ownCategoriesOfMetaClass:")]).__comma(exportCategoryRecipe)],_st([self.__minus_gt("extensionCategoriesOfPackage:")]).__comma(exportCategoryRecipe)];
+$1=_st(_st(aClass)._ownProtocols())._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st($ExportMethodProtocol())._name_theClass_(each,aClass);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{exportCategoryRecipe:exportCategoryRecipe},smalltalk.ChunkExporter)})},
-args: [],
-source: "recipe\x0a\x09\x22Export a given package.\x22\x0a\x0a\x09| exportCategoryRecipe |\x0a\x09exportCategoryRecipe := {\x0a\x09\x09self -> #exportCategoryPrologueOf:on:.\x0a\x09\x09{\x0a\x09\x09\x09self -> #methodsOfCategory:.\x0a\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09self -> #exportCategoryEpilogueOf:on: }.\x0a\x0a\x09^{\x0a\x09\x09self -> #exportPackageDefinitionOf:on:.\x0a\x09\x09{\x0a\x09\x09\x09PluggableExporter -> #ownClassesOfPackage:.\x0a\x09\x09\x09self -> #exportDefinitionOf:on:.\x0a\x09\x09\x09{ self -> #ownCategoriesOfClass: }, exportCategoryRecipe.\x0a\x09\x09\x09self -> #exportMetaDefinitionOf:on:.\x0a\x09\x09\x09{ self -> #ownCategoriesOfMetaClass: }, exportCategoryRecipe }.\x0a\x09\x09{ self -> #extensionCategoriesOfPackage: }, exportCategoryRecipe\x0a\x09}",
-messageSends: ["->", ","],
-referencedClasses: ["PluggableExporter"]
+}, function($ctx1) {$ctx1.fill(self,"ownMethodProtocolsOfClass:",{aClass:aClass},smalltalk.ChunkExporter)})},
+args: ["aClass"],
+source: "ownMethodProtocolsOfClass: aClass\x0a\x09\x22Answer a collection of ExportMethodProtocol object of aClass that are not package extensions\x22\x0a\x09\x0a\x09^ aClass ownProtocols collect: [ :each |\x0a\x09\x09ExportMethodProtocol name: each theClass: aClass ]",
+messageSends: ["collect:", "name:theClass:", "ownProtocols"],
+referencedClasses: ["ExportMethodProtocol"]
 }),
 smalltalk.ChunkExporter);
 
 
 
 smalltalk.addClass('Exporter', smalltalk.AbstractExporter, [], 'Importer-Exporter');
-smalltalk.Exporter.comment="I am responsible for outputting Amber code into a JavaScript string.\x0a\x0aThe generated output is enough to reconstruct the exported data, including Smalltalk source code and other metadata.\x0a\x0a## Use case\x0a\x0aI am typically used to save code outside of the Amber runtime (committing to disk, etc.).\x0a\x0a## API\x0a\x0aUse `#exportAll`, `#exportClass:` or `#exportPackage:` methods.";
+smalltalk.Exporter.comment="I am responsible for outputting Amber code into a JavaScript string.\x0a\x0aThe generated output is enough to reconstruct the exported data, including Smalltalk source code and other metadata.\x0a\x0a## Use case\x0a\x0aI am typically used to save code outside of the Amber runtime (committing to disk, etc.).";
 smalltalk.addMethod(
 smalltalk.method({
 selector: "classNameFor:",
@@ -424,7 +563,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},smalltalk.Exporter)})},
 args: ["aClass"],
 source: "classNameFor: aClass\x0a\x09^aClass isMetaclass\x0a\x09\x09ifTrue: [ aClass instanceClass name, '.klass' ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09aClass isNil\x0a\x09\x09\x09\x09ifTrue: [ 'nil' ]\x0a\x09\x09\x09\x09ifFalse: [ aClass name ] ]",
-messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"],
+messageSends: ["ifTrue:ifFalse:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
 referencedClasses: []
 }),
 smalltalk.Exporter);
@@ -446,10 +585,10 @@ $2=_st($1)._nextPutAll_(", [");
 _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $3=aStream;
 _st($3)._nextPutAll_("], '");
 _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
@@ -469,7 +608,7 @@ _st(aStream)._lf();
 return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'smalltalk.addClass(';\x0a\x09\x09nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09\x09separatedBy: [aStream nextPutAll: ', '].\x0a\x09aStream\x0a\x09\x09nextPutAll: '], ''';\x0a\x09\x09nextPutAll: aClass category, '''';\x0a\x09\x09nextPutAll: ');'.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09nextPutAll: 'smalltalk.';\x0a\x09\x09nextPutAll: (self classNameFor: aClass);\x0a\x09\x09nextPutAll: '.comment=';\x0a\x09\x09nextPutAll: aClass comment asJavascript;\x0a\x09\x09nextPutAll: ';'].\x0a\x09aStream lf",
-messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "asJavascript"],
+messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "asJavascript", "comment", "notEmpty"],
 referencedClasses: []
 }),
 smalltalk.Exporter);
@@ -493,16 +632,16 @@ $3;
 _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(aStream)._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 _st(aStream)._nextPutAll_("];".__comma(_st($String())._lf()));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.Exporter)})},
 args: ["aClass", "aStream"],
 source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass class);\x0a\x09\x09nextPutAll: '.iVarNames = ['.\x0a\x09\x09aClass class instanceVariableNames\x0a\x09\x09do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09\x09separatedBy: [aStream nextPutAll: ','].\x0a\x09\x09aStream nextPutAll: '];', String lf]",
-messageSends: ["lf", "ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", ",", "classNameFor:", "do:separatedBy:"],
+messageSends: ["lf", "ifFalse:", "nextPutAll:", ",", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "isEmpty"],
 referencedClasses: ["String"]
 }),
 smalltalk.Exporter);
@@ -549,6 +688,44 @@ referencedClasses: []
 }),
 smalltalk.Exporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportPackage:on:",
+category: 'output',
+fn: function (aPackage,aStream){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=self;
+_st($1)._exportPackagePrologueOf_on_(aPackage,aStream);
+_st($1)._exportPackageDefinitionOf_on_(aPackage,aStream);
+$2=_st($1)._exportPackageTransportOf_on_(aPackage,aStream);
+_st(_st(aPackage)._sortedClasses())._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+self._exportDefinitionOf_on_(each,aStream);
+_st(_st(each)._ownMethods())._do_((function(method){
+return smalltalk.withContext(function($ctx3) {
+return self._exportMethod_on_(method,aStream);
+}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2)})}));
+self._exportMetaDefinitionOf_on_(each,aStream);
+return _st(_st(_st(each)._class())._ownMethods())._do_((function(method){
+return smalltalk.withContext(function($ctx3) {
+return self._exportMethod_on_(method,aStream);
+}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+_st(self._extensionMethodsOfPackage_(aPackage))._do_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return self._exportMethod_on_(each,aStream);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+self._exportPackageEpilogueOf_on_(aPackage,aStream);
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},smalltalk.Exporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportDefinitionOf: each on: aStream.\x0a\x09\x09each ownMethods do: [ :method |\x0a\x09\x09\x09self exportMethod: method on: aStream ].\x0a\x09\x09\x09\x0a\x09\x09self exportMetaDefinitionOf: each on: aStream.\x0a\x09\x09each class ownMethods do: [ :method |\x0a\x09\x09\x09self exportMethod: method on: aStream ] ].\x0a\x09\x09\x09\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
+messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageTransportOf:on:", "do:", "exportDefinitionOf:on:", "exportMethod:on:", "ownMethods", "exportMetaDefinitionOf:on:", "class", "sortedClasses", "extensionMethodsOfPackage:", "exportPackageEpilogueOf:on:"],
+referencedClasses: []
+}),
+smalltalk.Exporter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "exportPackageDefinitionOf:on:",
@@ -609,38 +786,24 @@ smalltalk.Exporter);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "extensionMethodsOfPackage:",
-category: 'accessing',
-fn: function (aPackage){
+selector: "exportPackageTransportOf:on:",
+category: 'output',
+fn: function (aPackage,aStream){
 var self=this;
-var name,result;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-name=_st(aPackage)._name();
-result=_st($OrderedCollection())._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) {
-return _st(result)._addAll_(_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},$ctx3,3)})})))._select_((function(method){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(method)._category()).__eq("*".__comma(name));
-}, function($ctx4) {$ctx4.fillBlock({method:method},$ctx3,4)})})));
-}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,name:name,result:result},smalltalk.Exporter)})},
-args: ["aPackage"],
-source: "extensionMethodsOfPackage: aPackage\x0a\x09\x22Issue #143: sort classes and methods alphabetically\x22\x0a\x0a\x09| name result |\x0a\x09name := aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09(Package sortedClasses: Smalltalk current classes) do: [:each |\x0a\x09\x09{each. each class} do: [:aClass |\x0a\x09\x09\x09result addAll: (((aClass methodDictionary values)\x0a\x09\x09\x09\x09sorted: [:a :b | a selector <= b selector])\x0a\x09\x09\x09\x09select: [:method | method category = ('*', name)]) ]].\x0a\x09^result",
-messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "current", "class", "addAll:", "select:", "sorted:", "values", "methodDictionary", "<=", "selector", "=", "category", ","],
-referencedClasses: ["OrderedCollection", "Package", "Smalltalk"]
+var $1,$2;
+$1=aStream;
+_st($1)._nextPutAll_("smalltalk.packages[");
+_st($1)._nextPutAll_(_st(_st(aPackage)._name())._asJavascript());
+_st($1)._nextPutAll_("].transport = ");
+_st($1)._nextPutAll_(_st(_st(aPackage)._transport())._asJSONString());
+_st($1)._nextPutAll_(";");
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.Exporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackageTransportOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'smalltalk.packages[';\x0a\x09\x09nextPutAll: aPackage name asJavascript;\x0a\x09\x09nextPutAll: '].transport = ';\x0a\x09\x09nextPutAll: aPackage transport asJSONString;\x0a\x09\x09nextPutAll: ';';\x0a\x09\x09lf",
+messageSends: ["nextPutAll:", "asJavascript", "name", "asJSONString", "transport", "lf"],
+referencedClasses: []
 }),
 smalltalk.Exporter);
 
@@ -655,15 +818,15 @@ var $1;
 $1=_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());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._reject_((function(each){
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._category())._match_("^\x5c*");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass},smalltalk.Exporter)})},
 args: ["aClass"],
 source: "ownMethodsOfClass: aClass\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^((aClass methodDictionary values) sorted: [:a :b | a selector <= b selector])\x0a\x09\x09reject: [:each | (each category match: '^\x5c*')]",
-messageSends: ["reject:", "sorted:", "values", "methodDictionary", "<=", "selector", "match:", "category"],
+messageSends: ["reject:", "match:", "category", "sorted:", "<=", "selector", "values", "methodDictionary"],
 referencedClasses: []
 }),
 smalltalk.Exporter);
@@ -686,94 +849,100 @@ referencedClasses: []
 }),
 smalltalk.Exporter);
 
+
+
+smalltalk.addClass('AmdExporter', smalltalk.Exporter, ['namespace'], 'Importer-Exporter');
+smalltalk.AmdExporter.comment="I am used to export Packages in an AMD (Asynchronous Module Definition) JavaScript format.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "recipe",
-category: 'fileOut',
-fn: function (){
+selector: "amdNamesOfPackages:",
+category: 'private',
+fn: function (anArray){
 var self=this;
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
+$1=_st(_st(anArray)._select_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._amdNamespaceOfPackage_(each))._notNil();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(self._amdNamespaceOfPackage_(each)).__comma("/")).__comma(_st(each)._name());
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.Exporter)})},
-args: [],
-source: "recipe\x0a\x09\x22Export a given package.\x22\x0a\x0a\x09^{\x0a\x09\x09self -> #exportPackagePrologueOf:on:.\x0a\x09\x09self -> #exportPackageDefinitionOf:on:.\x0a\x09\x09{\x0a\x09\x09\x09PluggableExporter -> #ownClassesOfPackage:.\x0a\x09\x09\x09self -> #exportDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09\x09self -> #exportMetaDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfMetaClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: } }.\x0a\x09\x09{\x0a\x09\x09\x09self -> #extensionMethodsOfPackage:.\x0a\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09self -> #exportPackageEpilogueOf:on:\x0a\x09}",
-messageSends: ["->"],
-referencedClasses: ["PluggableExporter"]
+}, function($ctx1) {$ctx1.fill(self,"amdNamesOfPackages:",{anArray:anArray},smalltalk.AmdExporter)})},
+args: ["anArray"],
+source: "amdNamesOfPackages: anArray\x0a\x09^ (anArray\x0a\x09\x09select: [ :each | (self amdNamespaceOfPackage: each) notNil ])\x0a\x09\x09collect: [ :each | (self amdNamespaceOfPackage: each), '/', each name ]",
+messageSends: ["collect:", ",", "name", "amdNamespaceOfPackage:", "select:", "notNil"],
+referencedClasses: []
 }),
-smalltalk.Exporter);
-
+smalltalk.AmdExporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "amdNamespaceOfPackage:",
+category: 'private',
+fn: function (aPackage){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=_st(_st(_st(aPackage)._transport())._type()).__eq("amd");
+if(smalltalk.assert($2)){
+$1=_st(_st(aPackage)._transport())._namespace();
+} else {
+$1=nil;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"amdNamespaceOfPackage:",{aPackage:aPackage},smalltalk.AmdExporter)})},
+args: ["aPackage"],
+source: "amdNamespaceOfPackage: aPackage\x0a\x09^ (aPackage transport type = 'amd')\x0a\x09\x09ifTrue: [ aPackage transport namespace ]\x0a\x09\x09ifFalse: [ nil ]",
+messageSends: ["ifTrue:ifFalse:", "namespace", "transport", "=", "type"],
+referencedClasses: []
+}),
+smalltalk.AmdExporter);
 
-smalltalk.addClass('StrippedExporter', smalltalk.Exporter, [], 'Importer-Exporter');
-smalltalk.StrippedExporter.comment="I export Amber code into a JavaScript string, but without any optional associated data like the Amber source code.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "exportDefinitionOf:on:",
+selector: "exportPackageEpilogueOf:on:",
 category: 'output',
-fn: function (aClass,aStream){
+fn: function (aPackage,aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
+var $1,$2;
 $1=aStream;
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.addClass(");
-_st($1)._nextPutAll_(_st("'".__comma(self._classNameFor_(aClass))).__comma("', "));
-_st($1)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aClass)._superclass())));
-$2=_st($1)._nextPutAll_(", [");
-_st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(_st("'".__comma(each)).__comma("'"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$3=aStream;
-_st($3)._nextPutAll_("], '");
-_st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'"));
-$4=_st($3)._nextPutAll_(");");
-_st(aStream)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},smalltalk.StrippedExporter)})},
-args: ["aClass", "aStream"],
-source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'smalltalk.addClass(';\x0a\x09\x09nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [:each | aStream nextPutAll: '''', each, '''']\x0a\x09\x09separatedBy: [aStream nextPutAll: ', '].\x0a\x09aStream\x0a\x09\x09nextPutAll: '], ''';\x0a\x09\x09nextPutAll: aClass category, '''';\x0a\x09\x09nextPutAll: ');'.\x0a\x09aStream lf",
-messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category"],
+_st($1)._nextPutAll_("});");
+$2=_st($1)._lf();
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.AmdExporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '});';\x0a\x09\x09lf",
+messageSends: ["nextPutAll:", "lf"],
 referencedClasses: []
 }),
-smalltalk.StrippedExporter);
+smalltalk.AmdExporter);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "exportMethod:on:",
+selector: "exportPackagePrologueOf:on:",
 category: 'output',
-fn: function (aMethod,aStream){
+fn: function (aPackage,aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=aStream;
-_st($1)._nextPutAll_("smalltalk.addMethod(");
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.method({");
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("selector: ".__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_(_st("fn: ".__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(","));
-_st($1)._lf();
-_st($1)._nextPutAll_("messageSends: ".__comma(_st(_st(aMethod)._messageSends())._asJavascript()));
-_st($1)._nextPutAll_("}),");
-_st($1)._lf();
-_st($1)._nextPutAll_("smalltalk.".__comma(self._classNameFor_(_st(aMethod)._methodClass())));
-_st($1)._nextPutAll_(");");
-_st($1)._lf();
+_st($1)._nextPutAll_("define(\x22");
+_st($1)._nextPutAll_(self._amdNamespaceOfPackage_(aPackage));
+_st($1)._nextPutAll_("/");
+_st($1)._nextPutAll_(_st(aPackage)._name());
+_st($1)._nextPutAll_("\x22, ");
+_st($1)._nextPutAll_(_st(["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st"].__comma(self._amdNamesOfPackages_(_st(aPackage)._loadDependencies())))._asJavascript());
+_st($1)._nextPutAll_(", function(smalltalk,nil,_st){");
 $2=_st($1)._lf();
-return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},smalltalk.StrippedExporter)})},
-args: ["aMethod", "aStream"],
-source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'smalltalk.addMethod(';lf;\x0a\x09\x09\x22nextPutAll: aMethod selector asSelector asJavascript, ',';lf;\x22\x0a\x09\x09nextPutAll: 'smalltalk.method({';lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'fn: ', aMethod fn compiledSource, ',';lf;\x0a\x09\x09nextPutAll: 'messageSends: ', aMethod messageSends asJavascript;\x0a\x09\x09nextPutAll: '}),';lf;\x0a\x09\x09nextPutAll: 'smalltalk.', (self classNameFor: aMethod methodClass);\x0a\x09\x09nextPutAll: ');';lf;lf",
-messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "compiledSource", "fn", "messageSends", "classNameFor:", "methodClass"],
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream},smalltalk.AmdExporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'define(\x22';\x0a\x09\x09nextPutAll: (self amdNamespaceOfPackage: aPackage);\x0a\x09\x09nextPutAll: '/';\x0a\x09\x09nextPutAll: aPackage name;\x0a\x09\x09nextPutAll: '\x22, ';\x0a\x09\x09nextPutAll: (#('amber_vm/smalltalk' 'amber_vm/nil' 'amber_vm/_st'), (self amdNamesOfPackages: aPackage loadDependencies)) asJavascript;\x0a\x09\x09nextPutAll: ', function(smalltalk,nil,_st){';\x0a\x09\x09lf",
+messageSends: ["nextPutAll:", "amdNamespaceOfPackage:", "name", "asJavascript", ",", "amdNamesOfPackages:", "loadDependencies", "lf"],
 referencedClasses: []
 }),
-smalltalk.StrippedExporter);
+smalltalk.AmdExporter);
 
 
 
@@ -796,7 +965,7 @@ return smalltalk.withContext(function($ctx2) {
 char=_st(self["@stream"])._next();
 char;
 return _st(char)._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
 $1=_st(char).__eq("!");
 if(smalltalk.assert($1)){
@@ -809,14 +978,14 @@ throw $early=[$3];
 };
 };
 return _st(result)._nextPut_(char);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return nil;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"nextChunk",{char:char,result:result,chunk:chunk},smalltalk.ChunkParser)})},
 args: [],
-source: "nextChunk\x0a\x09\x22The chunk format (Smalltalk Interchange Format or Fileout format)\x0a\x09is a trivial format but can be a bit tricky to understand:\x0a\x09\x09- Uses the exclamation mark as delimiter of chunks.\x0a\x09\x09- Inside a chunk a normal exclamation mark must be doubled.\x0a\x09\x09- A non empty chunk must be a valid Smalltalk expression.\x0a\x09\x09- A chunk on top level with a preceding empty chunk is an instruction chunk:\x0a\x09\x09\x09- The object created by the expression then takes over reading chunks.\x0a\x0a\x09This metod returns next chunk as a String (trimmed), empty String (all whitespace) or nil.\x22\x0a\x0a\x09| char result chunk |\x0a\x09result := '' writeStream.\x0a\x09\x09[char := stream next.\x0a\x09\x09char notNil] whileTrue: [\x0a\x09\x09\x09\x09char = '!' ifTrue: [\x0a\x09\x09\x09\x09\x09\x09stream peek = '!'\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifTrue: [stream next \x22skipping the escape double\x22]\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifFalse: [^result contents trimBoth \x22chunk end marker found\x22]].\x0a\x09\x09\x09\x09result nextPut: char].\x0a\x09^nil \x22a chunk needs to end with !\x22",
-messageSends: ["writeStream", "whileTrue:", "next", "notNil", "ifTrue:", "=", "ifTrue:ifFalse:", "peek", "trimBoth", "contents", "nextPut:"],
+source: "nextChunk\x0a\x09\x22The chunk format (Smalltalk Interchange Format or Fileout format)\x0a\x09is a trivial format but can be a bit tricky to understand:\x0a\x09\x09- Uses the exclamation mark as delimiter of chunks.\x0a\x09\x09- Inside a chunk a normal exclamation mark must be doubled.\x0a\x09\x09- A non empty chunk must be a valid Smalltalk expression.\x0a\x09\x09- A chunk on top level with a preceding empty chunk is an instruction chunk:\x0a\x09\x09\x09- The object created by the expression then takes over reading chunks.\x0a\x0a\x09This method returns next chunk as a String (trimmed), empty String (all whitespace) or nil.\x22\x0a\x0a\x09| char result chunk |\x0a\x09result := '' writeStream.\x0a\x09\x09[char := stream next.\x0a\x09\x09char notNil] whileTrue: [\x0a\x09\x09\x09\x09char = '!' ifTrue: [\x0a\x09\x09\x09\x09\x09\x09stream peek = '!'\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifTrue: [stream next \x22skipping the escape double\x22]\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifFalse: [^result contents trimBoth \x22chunk end marker found\x22]].\x0a\x09\x09\x09\x09result nextPut: char].\x0a\x09^nil \x22a chunk needs to end with !\x22",
+messageSends: ["writeStream", "whileTrue:", "ifTrue:", "ifTrue:ifFalse:", "next", "trimBoth", "contents", "=", "peek", "nextPut:", "notNil"],
 referencedClasses: []
 }),
 smalltalk.ChunkParser);
@@ -857,75 +1026,137 @@ referencedClasses: []
 smalltalk.ChunkParser.klass);
 
 
-smalltalk.addClass('ExportRecipeInterpreter', smalltalk.Object, [], 'Importer-Exporter');
-smalltalk.ExportRecipeInterpreter.comment="I am an interpreter for export recipes.\x0a\x0a## Recipe format\x0a\x0aRecipe is an array, which can contain two kinds of elements:\x0a\x0a - an assocation where the key is the receiver and the value is a two-arguments selector\x0a    In this case, `receiver perform: selector withArguments: { data. stream }` is called.\x0a\x09This essentially defines one step of export process.\x0a\x09The key (eg. receiver) is presumed to be some kind of 'repository' of the exporting methods\x0a\x09that just format appropriate aspect of data into a stream; like a class or a singleton,\x0a\x09so that the recipe itself can be decoupled from data.\x0a\x0a - a subarray, where first element is special and the rest is recursive recipe.\x0a\x0a    `subarray first` must be an association similar to one above,\x0a\x09with key being the 'repository' receiver, but value is one-arg selector.\x0a\x09In this case, `receiver perform: selector withArguments: { data }` should create a collection.\x0a\x09Then, the sub-recipe (`subarray allButFirst`) is applied to every element of a collection, eg.\x0a\x09  collection do: [ :each | self export: each using: sa allButFirst on: stream ]";
+smalltalk.addClass('ExportMethodProtocol', smalltalk.Object, ['name', 'theClass'], 'Importer-Exporter');
+smalltalk.ExportMethodProtocol.comment="I am an abstraction for a method protocol in a class / metaclass.\x0a\x0aI know of my class, name and methods.\x0aI am used when exporting a package.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "interpret:for:on:",
-category: 'interpreting',
-fn: function (aRecipe,anObject,aStream){
+selector: "methods",
+category: 'accessing',
+fn: function (){
 var self=this;
-var recipeStream;
 return smalltalk.withContext(function($ctx1) { 
-recipeStream=_st(aRecipe)._readStream();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(recipeStream)._atEnd();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._interpretStep_for_on_(_st(recipeStream)._next(),anObject,aStream);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,recipeStream:recipeStream},smalltalk.ExportRecipeInterpreter)})},
-args: ["aRecipe", "anObject", "aStream"],
-source: "interpret: aRecipe for: anObject on: aStream\x0a\x09| recipeStream |\x0a\x09\x0a\x09recipeStream := aRecipe readStream.\x0a\x09\x0a\x09[ recipeStream atEnd ] whileFalse: [\x0a\x09\x09self \x0a\x09\x09\x09interpretStep: recipeStream next\x0a\x09\x09\x09for: anObject\x0a\x09\x09\x09on: aStream ]",
-messageSends: ["readStream", "whileFalse:", "atEnd", "interpretStep:for:on:", "next"],
+var $1;
+$1=_st(self._theClass())._methodsInProtocol_(self._name());
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"methods",{},smalltalk.ExportMethodProtocol)})},
+args: [],
+source: "methods\x0a\x09^ self theClass methodsInProtocol: self name",
+messageSends: ["methodsInProtocol:", "name", "theClass"],
 referencedClasses: []
 }),
-smalltalk.ExportRecipeInterpreter);
+smalltalk.ExportMethodProtocol);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "interpretStep:for:on:",
-category: 'interpreting',
-fn: function (aRecipeStep,anObject,aStream){
+selector: "name",
+category: 'accessing',
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aRecipeStep)._value()).__eq_eq(aRecipeStep);
-if(smalltalk.assert($1)){
-$2=self._interpretSubRecipe_for_on_(aRecipeStep,anObject,aStream);
-return $2;
-};
-_st(_st(aRecipeStep)._key())._perform_withArguments_(_st(aRecipeStep)._value(),[anObject,aStream]);
-return self}, function($ctx1) {$ctx1.fill(self,"interpretStep:for:on:",{aRecipeStep:aRecipeStep,anObject:anObject,aStream:aStream},smalltalk.ExportRecipeInterpreter)})},
-args: ["aRecipeStep", "anObject", "aStream"],
-source: "interpretStep: aRecipeStep for: anObject on: aStream\x0a\x09aRecipeStep value == aRecipeStep ifTrue: [ \x0a\x09\x09^ self interpretSubRecipe: aRecipeStep for: anObject on: aStream ].\x0a\x09\x09\x09\x0a\x09aRecipeStep key perform: aRecipeStep value withArguments: { anObject. aStream }",
-messageSends: ["ifTrue:", "==", "value", "interpretSubRecipe:for:on:", "perform:withArguments:", "key"],
+var $1;
+$1=self["@name"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.ExportMethodProtocol)})},
+args: [],
+source: "name\x0a\x09^name",
+messageSends: [],
 referencedClasses: []
 }),
-smalltalk.ExportRecipeInterpreter);
+smalltalk.ExportMethodProtocol);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "interpretSubRecipe:for:on:",
-category: 'interpreting',
-fn: function (aRecipe,anObject,aStream){
+selector: "name:",
+category: 'accessing',
+fn: function (aString){
 var self=this;
-var selection;
 return smalltalk.withContext(function($ctx1) { 
-selection=_st(_st(_st(aRecipe)._first())._key())._perform_withArguments_(_st(_st(aRecipe)._first())._value(),[anObject]);
-_st(selection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._interpret_for_on_(_st(aRecipe)._allButFirst(),each,aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretSubRecipe:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,selection:selection},smalltalk.ExportRecipeInterpreter)})},
-args: ["aRecipe", "anObject", "aStream"],
-source: "interpretSubRecipe: aRecipe for: anObject on: aStream\x0a\x09| selection |\x0a\x09selection := aRecipe first key \x0a\x09\x09perform: aRecipe first value \x0a\x09\x09withArguments: { anObject }.\x0a\x09selection do: [ :each |\x09\x0a\x09\x09self interpret: aRecipe allButFirst for: each on: aStream ]",
-messageSends: ["perform:withArguments:", "key", "first", "value", "do:", "interpret:for:on:", "allButFirst"],
-referencedClasses: []
+self["@name"]=aString;
+return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.ExportMethodProtocol)})},
+args: ["aString"],
+source: "name: aString\x0a\x09name := aString",
+messageSends: [],
+referencedClasses: []
 }),
-smalltalk.ExportRecipeInterpreter);
+smalltalk.ExportMethodProtocol);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sortedMethods",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self._methods())._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sortedMethods",{},smalltalk.ExportMethodProtocol)})},
+args: [],
+source: "sortedMethods\x0a\x09^ self methods sorted: [ :a :b | a selector <= b selector ]",
+messageSends: ["sorted:", "<=", "selector", "methods"],
+referencedClasses: []
+}),
+smalltalk.ExportMethodProtocol);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "theClass",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@theClass"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ExportMethodProtocol)})},
+args: [],
+source: "theClass\x0a\x09^theClass",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.ExportMethodProtocol);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "theClass:",
+category: 'accessing',
+fn: function (aClass){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@theClass"]=aClass;
+return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ExportMethodProtocol)})},
+args: ["aClass"],
+source: "theClass: aClass\x0a\x09theClass := aClass",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.ExportMethodProtocol);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "name:theClass:",
+category: 'instance creation',
+fn: function (aString,aClass){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=self._new();
+_st($2)._name_(aString);
+_st($2)._theClass_(aClass);
+$3=_st($2)._yourself();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"name:theClass:",{aString:aString,aClass:aClass},smalltalk.ExportMethodProtocol.klass)})},
+args: ["aString", "aClass"],
+source: "name: aString theClass: aClass\x0a\x09^self new\x0a\x09\x09name: aString;\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
+messageSends: ["name:", "new", "theClass:", "yourself"],
+referencedClasses: []
+}),
+smalltalk.ExportMethodProtocol.klass);
 
 
 smalltalk.addClass('Importer', smalltalk.Object, [], 'Importer-Exporter');
@@ -948,7 +1179,7 @@ return smalltalk.withContext(function($ctx2) {
 chunk=_st(parser)._nextChunk();
 chunk;
 return _st(chunk)._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
 $1=_st(chunk)._isEmpty();
 if(smalltalk.assert($1)){
@@ -964,888 +1195,852 @@ lastEmpty;
 return _st(result)._scanFrom_(parser);
 };
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty},smalltalk.Importer)})},
 args: ["aStream"],
 source: "import: aStream\x0a\x09| chunk result parser lastEmpty |\x0a\x09parser := ChunkParser on: aStream.\x0a\x09lastEmpty := false.\x0a\x09[chunk := parser nextChunk.\x0a\x09chunk isNil] whileFalse: [\x0a\x09\x09chunk isEmpty\x0a\x09\x09\x09ifTrue: [lastEmpty := true]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09result := Compiler new evaluateExpression: chunk.\x0a\x09\x09\x09\x09lastEmpty\x0a\x09\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09lastEmpty := false.\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09result scanFrom: parser]]]",
-messageSends: ["on:", "whileFalse:", "nextChunk", "isNil", "ifTrue:ifFalse:", "isEmpty", "evaluateExpression:", "new", "ifTrue:", "scanFrom:"],
+messageSends: ["on:", "whileFalse:", "ifTrue:ifFalse:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "isEmpty", "nextChunk", "isNil"],
 referencedClasses: ["ChunkParser", "Compiler"]
 }),
 smalltalk.Importer);
 
 
 
-smalltalk.addClass('MethodCategory', smalltalk.Object, ['methods', 'name', 'theClass'], 'Importer-Exporter');
-smalltalk.MethodCategory.comment="I am an abstraction for a method category in a class / metaclass.\x0a\x0aI know of my class, name and methods.\x0aI am used when exporting a package.";
+smalltalk.addClass('PackageHandler', smalltalk.InterfacingObject, [], 'Importer-Exporter');
+smalltalk.PackageHandler.comment="I am responsible for handling package loading and committing.\x0a\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "methods",
+selector: "ajaxPutAt:data:",
+category: 'private',
+fn: function (aURL,aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(aURL),"type".__minus_gt("PUT"),"data".__minus_gt(aString),"contentType".__minus_gt("text/plain;charset=UTF-8"),"error".__minus_gt((function(xhr){
+return smalltalk.withContext(function($ctx2) {
+return self._error_(_st(_st(_st("Commiting ".__comma(aURL)).__comma(" failed with reason: \x22")).__comma(_st(xhr)._responseText())).__comma("\x22"));
+}, function($ctx2) {$ctx2.fillBlock({xhr:xhr},$ctx1)})}))]));
+return self}, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:",{aURL:aURL,aString:aString},smalltalk.PackageHandler)})},
+args: ["aURL", "aString"],
+source: "ajaxPutAt: aURL data: aString\x0a\x09self\x0a\x09\x09ajax: #{\x0a\x09\x09\x09'url' -> aURL.\x0a\x09\x09\x09'type' -> 'PUT'.\x0a\x09\x09\x09'data' -> aString.\x0a\x09\x09\x09'contentType' -> 'text/plain;charset=UTF-8'.\x0a\x09\x09\x09'error' -> [ :xhr | self error: 'Commiting ' , aURL , ' failed with reason: \x22' , (xhr responseText) , '\x22'] }",
+messageSends: ["ajax:", "->", "error:", ",", "responseText"],
+referencedClasses: []
+}),
+smalltalk.PackageHandler);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "chunkContentsFor:",
 category: 'accessing',
-fn: function (){
+fn: function (aPackage){
 var self=this;
+function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self["@methods"];
+$1=_st($String())._streamContents_((function(str){
+return smalltalk.withContext(function($ctx2) {
+return _st(self._chunkExporter())._exportPackage_on_(aPackage,str);
+}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1)})}));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"methods",{},smalltalk.MethodCategory)})},
-args: [],
-source: "methods\x0a\x09^methods",
-messageSends: [],
-referencedClasses: []
+}, function($ctx1) {$ctx1.fill(self,"chunkContentsFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "chunkContentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self chunkExporter exportPackage: aPackage on: str ]",
+messageSends: ["streamContents:", "exportPackage:on:", "chunkExporter"],
+referencedClasses: ["String"]
 }),
-smalltalk.MethodCategory);
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "methods:",
-category: 'accessing',
-fn: function (aCollection){
+selector: "chunkExporter",
+category: 'factory',
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@methods"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"methods:",{aCollection:aCollection},smalltalk.MethodCategory)})},
-args: ["aCollection"],
-source: "methods: aCollection\x0a\x09methods := aCollection",
-messageSends: [],
+var $1;
+$1=_st(self._chunkExporterClass())._new();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"chunkExporter",{},smalltalk.PackageHandler)})},
+args: [],
+source: "chunkExporter\x0a\x09^ self chunkExporterClass new",
+messageSends: ["new", "chunkExporterClass"],
 referencedClasses: []
 }),
-smalltalk.MethodCategory);
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "name",
+selector: "chunkExporterClass",
 category: 'accessing',
 fn: function (){
 var self=this;
+function $ChunkExporter(){return smalltalk.ChunkExporter||(typeof ChunkExporter=="undefined"?nil:ChunkExporter)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self["@name"];
+$1=$ChunkExporter();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.MethodCategory)})},
+}, function($ctx1) {$ctx1.fill(self,"chunkExporterClass",{},smalltalk.PackageHandler)})},
 args: [],
-source: "name\x0a\x09^name",
+source: "chunkExporterClass\x0a\x09^ ChunkExporter",
 messageSends: [],
-referencedClasses: []
+referencedClasses: ["ChunkExporter"]
 }),
-smalltalk.MethodCategory);
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "name:",
-category: 'accessing',
-fn: function (aString){
+selector: "commit:",
+category: 'committing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@name"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.MethodCategory)})},
-args: ["aString"],
-source: "name: aString\x0a\x09name := aString",
-messageSends: [],
+_st([(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._commitStFileFor_(aPackage);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
+return smalltalk.withContext(function($ctx2) {
+return self._commitJsFileFor_(aPackage);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})])._do_displayingProgress_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._value();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),"Committing package ".__comma(_st(aPackage)._name()));
+return self}, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "commit: aPackage\x0a\x09{\x0a\x09\x09[ self commitStFileFor: aPackage ].\x0a\x09\x09[ self commitJsFileFor: aPackage ]\x0a\x09}\x0a\x09\x09do: [ :each | each value ]\x0a\x09\x09displayingProgress: 'Committing package ', aPackage name",
+messageSends: ["do:displayingProgress:", "value", ",", "name", "commitStFileFor:", "commitJsFileFor:"],
 referencedClasses: []
 }),
-smalltalk.MethodCategory);
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "theClass",
-category: 'accessing',
-fn: function (){
+selector: "commitJsFileFor:",
+category: 'committing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.MethodCategory)})},
-args: [],
-source: "theClass\x0a\x09^theClass",
-messageSends: [],
+self._ajaxPutAt_data_(_st(_st(_st(self._commitPathJsFor_(aPackage)).__comma("/")).__comma(_st(aPackage)._name())).__comma(".js"),self._contentsFor_(aPackage));
+return self}, function($ctx1) {$ctx1.fill(self,"commitJsFileFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "commitJsFileFor: aPackage\x0a\x09self \x0a\x09\x09ajaxPutAt: (self commitPathJsFor: aPackage), '/', aPackage name, '.js'\x0a\x09\x09data: (self contentsFor: aPackage)",
+messageSends: ["ajaxPutAt:data:", ",", "name", "commitPathJsFor:", "contentsFor:"],
 referencedClasses: []
 }),
-smalltalk.MethodCategory);
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "theClass:",
+selector: "commitPathJsFor:",
 category: 'accessing',
-fn: function (aClass){
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.MethodCategory)})},
-args: ["aClass"],
-source: "theClass: aClass\x0a\x09theClass := aClass",
-messageSends: [],
+self._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "commitPathJsFor: aPackage\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
 referencedClasses: []
 }),
-smalltalk.MethodCategory);
-
+smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "name:theClass:methods:",
-category: 'not yet classified',
-fn: function (aString,aClass,anArray){
+selector: "commitPathStFor:",
+category: 'accessing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._name_(aString);
-_st($2)._theClass_(aClass);
-_st($2)._methods_(anArray);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"name:theClass:methods:",{aString:aString,aClass:aClass,anArray:anArray},smalltalk.MethodCategory.klass)})},
-args: ["aString", "aClass", "anArray"],
-source: "name: aString theClass: aClass methods: anArray\x0a\x09^self new\x0a\x09\x09name: aString;\x0a\x09\x09theClass: aClass;\x0a\x09\x09methods: anArray;\x0a\x09\x09yourself",
-messageSends: ["name:", "new", "theClass:", "methods:", "yourself"],
+self._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "commitPathStFor: aPackage\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
 referencedClasses: []
 }),
-smalltalk.MethodCategory.klass);
-
+smalltalk.PackageHandler);
 
-smalltalk.addClass('PackageHandler', smalltalk.InterfacingObject, [], 'Importer-Exporter');
-smalltalk.PackageHandler.comment="I am responsible for handling package loading and committing.\x0a\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "ajaxPutAt:data:",
-category: 'private',
-fn: function (aURL,aString){
+selector: "commitStFileFor:",
+category: 'committing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(aURL),"type".__minus_gt("PUT"),"data".__minus_gt(aString),"contentType".__minus_gt("text/plain;charset=UTF-8"),"error".__minus_gt((function(xhr){
-return smalltalk.withContext(function($ctx2) {
-return self._error_(_st(_st(_st("Commiting ".__comma(aURL)).__comma(" failed with reason: \x22")).__comma(_st(xhr)._responseText())).__comma("\x22"));
-}, function($ctx2) {$ctx2.fillBlock({xhr:xhr},$ctx1,1)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:",{aURL:aURL,aString:aString},smalltalk.PackageHandler)})},
-args: ["aURL", "aString"],
-source: "ajaxPutAt: aURL data: aString\x0a\x09self\x0a\x09\x09ajax: #{\x0a\x09\x09\x09'url' -> aURL.\x0a\x09\x09\x09'type' -> 'PUT'.\x0a\x09\x09\x09'data' -> aString.\x0a\x09\x09\x09'contentType' -> 'text/plain;charset=UTF-8'.\x0a\x09\x09\x09'error' -> [ :xhr | self error: 'Commiting ' , aURL , ' failed with reason: \x22' , (xhr responseText) , '\x22'] }",
-messageSends: ["ajax:", "->", "error:", ",", "responseText"],
+self._ajaxPutAt_data_(_st(_st(_st(self._commitPathStFor_(aPackage)).__comma("/")).__comma(_st(aPackage)._name())).__comma(".st"),self._chunkContentsFor_(aPackage));
+return self}, function($ctx1) {$ctx1.fill(self,"commitStFileFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "commitStFileFor: aPackage\x0a\x09self \x0a\x09\x09ajaxPutAt: (self commitPathStFor: aPackage), '/', aPackage name, '.st'\x0a\x09\x09data: (self chunkContentsFor: aPackage)",
+messageSends: ["ajaxPutAt:data:", ",", "name", "commitPathStFor:", "chunkContentsFor:"],
 referencedClasses: []
 }),
 smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commit:",
-category: 'committing',
+selector: "contentsFor:",
+category: 'accessing',
 fn: function (aPackage){
 var self=this;
 function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
 return smalltalk.withContext(function($ctx1) { 
-_st(self._commitChannels())._do_displayingProgress_((function(commitStrategyFactory){
-var fileContents,commitStrategy;
+var $1;
+$1=_st($String())._streamContents_((function(str){
 return smalltalk.withContext(function($ctx2) {
-commitStrategy=_st(commitStrategyFactory)._value_(aPackage);
-commitStrategy;
-fileContents=_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st($PluggableExporter())._forRecipe_(_st(commitStrategy)._key()))._exportPackage_on_(aPackage,stream);
-}, function($ctx3) {$ctx3.fillBlock({stream:stream},$ctx2,2)})}));
-fileContents;
-return self._ajaxPutAt_data_(_st(commitStrategy)._value(),fileContents);
-}, function($ctx2) {$ctx2.fillBlock({commitStrategyFactory:commitStrategyFactory,fileContents:fileContents,commitStrategy:commitStrategy},$ctx1,1)})}),"Committing package ".__comma(_st(aPackage)._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+return _st(self._exporter())._exportPackage_on_(aPackage,str);
+}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"contentsFor:",{aPackage:aPackage},smalltalk.PackageHandler)})},
 args: ["aPackage"],
-source: "commit: aPackage\x0a\x09self commitChannels\x0a\x09\x09do: [ :commitStrategyFactory || fileContents commitStrategy |\x0a\x09\x09\x09commitStrategy := commitStrategyFactory value: aPackage.\x0a\x09\x09\x09fileContents := String streamContents: [ :stream |\x0a\x09\x09\x09\x09(PluggableExporter forRecipe: commitStrategy key) exportPackage: aPackage on: stream ].\x0a\x09\x09\x09self ajaxPutAt: commitStrategy value data: fileContents ]\x0a\x09\x09displayingProgress: 'Committing package ', aPackage name",
-messageSends: ["do:displayingProgress:", "commitChannels", "value:", "streamContents:", "exportPackage:on:", "forRecipe:", "key", "ajaxPutAt:data:", "value", ",", "name"],
-referencedClasses: ["String", "PluggableExporter"]
+source: "contentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self exporter exportPackage: aPackage on: str ]",
+messageSends: ["streamContents:", "exportPackage:on:", "exporter"],
+referencedClasses: ["String"]
 }),
 smalltalk.PackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitChannels",
-category: 'committing',
+selector: "exporter",
+category: 'factory',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"commitChannels",{},smalltalk.PackageHandler)})},
+var $1;
+$1=_st(self._exporterClass())._new();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"exporter",{},smalltalk.PackageHandler)})},
 args: [],
-source: "commitChannels\x0a\x09self subclassResponsibility",
-messageSends: ["subclassResponsibility"],
+source: "exporter\x0a\x09^ self exporterClass new",
+messageSends: ["new", "exporterClass"],
 referencedClasses: []
 }),
 smalltalk.PackageHandler);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exporterClass",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $Exporter(){return smalltalk.Exporter||(typeof Exporter=="undefined"?nil:Exporter)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=$Exporter();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"exporterClass",{},smalltalk.PackageHandler)})},
+args: [],
+source: "exporterClass\x0a\x09^ Exporter",
+messageSends: [],
+referencedClasses: ["Exporter"]
+}),
+smalltalk.PackageHandler);
+
 
-smalltalk.PackageHandler.klass.iVarNames = ['registry'];
+
+smalltalk.addClass('AmdPackageHandler', smalltalk.PackageHandler, [], 'Importer-Exporter');
+smalltalk.AmdPackageHandler.comment="I am responsible for handling package loading and committing.\x0a\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "classRegisteredFor:",
+selector: "commitPathJsFor:",
 category: 'accessing',
-fn: function (aString){
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self["@registry"])._at_(aString);
+$1=self._toUrl_(self._namespaceFor_(aPackage));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString},smalltalk.PackageHandler.klass)})},
-args: ["aString"],
-source: "classRegisteredFor: aString\x0a\x09^registry at: aString",
-messageSends: ["at:"],
+}, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},smalltalk.AmdPackageHandler)})},
+args: ["aPackage"],
+source: "commitPathJsFor: aPackage\x0a\x09^self toUrl: (self namespaceFor: aPackage)",
+messageSends: ["toUrl:", "namespaceFor:"],
 referencedClasses: []
 }),
-smalltalk.PackageHandler.klass);
+smalltalk.AmdPackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "for:",
+selector: "commitPathStFor:",
 category: 'accessing',
-fn: function (aString){
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._classRegisteredFor_(aString))._new();
+$1=self._toUrl_(_st(self._namespaceFor_(aPackage)).__comma("/_source"));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString},smalltalk.PackageHandler.klass)})},
-args: ["aString"],
-source: "for: aString\x0a\x09^(self classRegisteredFor: aString) new",
-messageSends: ["new", "classRegisteredFor:"],
+}, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage},smalltalk.AmdPackageHandler)})},
+args: ["aPackage"],
+source: "commitPathStFor: aPackage\x0a\x09\x22if _source is not mapped, .st commit will likely fail\x22\x0a\x09^self toUrl: (self namespaceFor: aPackage), '/_source'.",
+messageSends: ["toUrl:", ",", "namespaceFor:"],
 referencedClasses: []
 }),
-smalltalk.PackageHandler.klass);
+smalltalk.AmdPackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "initialize",
-category: 'initialization',
+selector: "exporterClass",
+category: 'accessing',
 fn: function (){
 var self=this;
+function $AmdExporter(){return smalltalk.AmdExporter||(typeof AmdExporter=="undefined"?nil:AmdExporter)}
 return smalltalk.withContext(function($ctx1) { 
-smalltalk.PackageHandler.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@registry"]=smalltalk.HashedCollection._from_([]);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.PackageHandler.klass)})},
+var $1;
+$1=$AmdExporter();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"exporterClass",{},smalltalk.AmdPackageHandler)})},
 args: [],
-source: "initialize\x0a\x09super initialize.\x0a\x09registry := #{}",
-messageSends: ["initialize"],
-referencedClasses: []
+source: "exporterClass\x0a\x09^ AmdExporter",
+messageSends: [],
+referencedClasses: ["AmdExporter"]
 }),
-smalltalk.PackageHandler.klass);
+smalltalk.AmdPackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "register:for:",
-category: 'registry',
-fn: function (aClass,aString){
+selector: "namespaceFor:",
+category: 'committing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(self["@registry"])._at_put_(aString,aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"register:for:",{aClass:aClass,aString:aString},smalltalk.PackageHandler.klass)})},
-args: ["aClass", "aString"],
-source: "register: aClass for: aString\x0a\x09registry at: aString put: aClass",
-messageSends: ["at:put:"],
+var $1;
+$1=_st(_st(aPackage)._transport())._namespace();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"namespaceFor:",{aPackage:aPackage},smalltalk.AmdPackageHandler)})},
+args: ["aPackage"],
+source: "namespaceFor: aPackage\x0a\x09^ aPackage transport namespace",
+messageSends: ["namespace", "transport"],
 referencedClasses: []
 }),
-smalltalk.PackageHandler.klass);
+smalltalk.AmdPackageHandler);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "registerFor:",
-category: 'registry',
+selector: "toUrl:",
+category: 'private',
 fn: function (aString){
 var self=this;
-function $PackageHandler(){return smalltalk.PackageHandler||(typeof PackageHandler=="undefined"?nil:PackageHandler)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
-_st($PackageHandler())._register_for_(self,aString);
-return self}, function($ctx1) {$ctx1.fill(self,"registerFor:",{aString:aString},smalltalk.PackageHandler.klass)})},
+var $2,$1;
+$2=_st(_st($Smalltalk())._current())._amdRequire();
+if(($receiver = $2) == nil || $receiver == undefined){
+$1=self._error_("AMD loader not present");
+} else {
+var require;
+require=$receiver;
+$1=_st(_st(require)._basicAt_("toUrl"))._value_(aString);
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"toUrl:",{aString:aString},smalltalk.AmdPackageHandler)})},
 args: ["aString"],
-source: "registerFor: aString\x0a\x09PackageHandler register: self for: aString",
-messageSends: ["register:for:"],
-referencedClasses: ["PackageHandler"]
+source: "toUrl: aString\x0a\x09^ Smalltalk current amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require | (require basicAt: 'toUrl') value: aString ]",
+messageSends: ["ifNil:ifNotNil:", "error:", "value:", "basicAt:", "amdRequire", "current"],
+referencedClasses: ["Smalltalk"]
 }),
-smalltalk.PackageHandler.klass);
+smalltalk.AmdPackageHandler);
 
 
-smalltalk.addClass('LegacyPackageHandler', smalltalk.PackageHandler, [], 'Importer-Exporter');
-smalltalk.LegacyPackageHandler.comment="I am responsible for handling package loading and committing.\x0d\x0a\x0d\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitChannels",
-category: 'committing',
+selector: "defaultNamespace",
+category: 'commit paths',
 fn: function (){
 var self=this;
-function $Exporter(){return smalltalk.Exporter||(typeof Exporter=="undefined"?nil:Exporter)}
-function $StrippedExporter(){return smalltalk.StrippedExporter||(typeof StrippedExporter=="undefined"?nil:StrippedExporter)}
-function $ChunkExporter(){return smalltalk.ChunkExporter||(typeof ChunkExporter=="undefined"?nil:ChunkExporter)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=[(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($Exporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathJs()).__comma("/")).__comma(_st(pkg)._name())).__comma(".js"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,1)})}),(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($StrippedExporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathJs()).__comma("/")).__comma(_st(pkg)._name())).__comma(".deploy.js"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,2)})}),(function(pkg){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($ChunkExporter())._default())._recipe()).__minus_gt(_st(_st(_st(_st(pkg)._commitPathSt()).__comma("/")).__comma(_st(pkg)._name())).__comma(".st"));
-}, function($ctx2) {$ctx2.fillBlock({pkg:pkg},$ctx1,3)})})];
+$1=_st(_st($Smalltalk())._current())._defaultAmdNamespace();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitChannels",{},smalltalk.LegacyPackageHandler)})},
+}, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{},smalltalk.AmdPackageHandler.klass)})},
 args: [],
-source: "commitChannels\x0a\x09^{ \x0a\x09\x09[ :pkg | Exporter default recipe -> (pkg commitPathJs, '/', pkg name, '.js') ].\x0a\x09\x09[ :pkg | StrippedExporter default recipe -> (pkg commitPathJs, '/', pkg name, '.deploy.js') ].\x0a\x09\x09[ :pkg | ChunkExporter default recipe -> (pkg commitPathSt, '/', pkg name, '.st') ]\x0a\x09}",
-messageSends: ["->", "recipe", "default", ",", "commitPathJs", "name", "commitPathSt"],
-referencedClasses: ["Exporter", "StrippedExporter", "ChunkExporter"]
+source: "defaultNamespace\x0a\x09^ Smalltalk current defaultAmdNamespace",
+messageSends: ["defaultAmdNamespace", "current"],
+referencedClasses: ["Smalltalk"]
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.AmdPackageHandler.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathJsFor:",
-category: 'committing',
-fn: function (aPackage){
+selector: "defaultNamespace:",
+category: 'commit paths',
+fn: function (aString){
 var self=this;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._defaultCommitPathJs();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},smalltalk.LegacyPackageHandler)})},
-args: ["aPackage"],
-source: "commitPathJsFor: aPackage\x0a\x09^self class defaultCommitPathJs",
-messageSends: ["defaultCommitPathJs", "class"],
-referencedClasses: []
+_st(_st($Smalltalk())._current())._defaultAmdNamespace_(aString);
+return self}, function($ctx1) {$ctx1.fill(self,"defaultNamespace:",{aString:aString},smalltalk.AmdPackageHandler.klass)})},
+args: ["aString"],
+source: "defaultNamespace: aString\x0a\x09Smalltalk current defaultAmdNamespace: aString",
+messageSends: ["defaultAmdNamespace:", "current"],
+referencedClasses: ["Smalltalk"]
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.AmdPackageHandler.klass);
+
 
+smalltalk.addClass('PackageTransport', smalltalk.Object, ['package'], 'Importer-Exporter');
+smalltalk.PackageTransport.comment="I represent the transport mechanism used to commit a package.\x0a\x0aMy concrete subclasses have a `#handler` to which committing is delegated.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathStFor:",
-category: 'committing',
-fn: function (aPackage){
+selector: "asJSON",
+category: 'converting',
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._class())._defaultCommitPathSt();
+$1=smalltalk.HashedCollection._from_(["type".__minus_gt(self._type())]);
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage},smalltalk.LegacyPackageHandler)})},
-args: ["aPackage"],
-source: "commitPathStFor: aPackage\x0a\x09^self class defaultCommitPathSt",
-messageSends: ["defaultCommitPathSt", "class"],
+}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.PackageTransport)})},
+args: [],
+source: "asJSON\x0a\x09^ #{ 'type' -> self type }",
+messageSends: ["->", "type"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "loadPackage:prefix:",
-category: 'loading',
-fn: function (packageName,aString){
+selector: "commit",
+category: 'committing',
+fn: function (){
 var self=this;
-var url;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-url=_st(_st(_st("/".__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js");
-self._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(url),"type".__minus_gt("GET"),"dataType".__minus_gt("script"),"complete".__minus_gt((function(jqXHR,textStatus){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(jqXHR)._readyState()).__eq((4));
-if(smalltalk.assert($1)){
-return self._setupPackageNamed_prefix_(packageName,aString);
-};
-}, function($ctx2) {$ctx2.fillBlock({jqXHR:jqXHR,textStatus:textStatus},$ctx1,1)})})),"error".__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._alert_("Could not load package at: ".__comma(url));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.LegacyPackageHandler)})},
-args: ["packageName", "aString"],
-source: "loadPackage: packageName prefix: aString\x0a\x09| url |\x0a\x09url := '/', aString, '/js/', packageName, '.js'.\x0a\x09self\x0a\x09\x09ajax: #{\x0a\x09\x09\x09'url' -> url.\x0a\x09\x09\x09'type' -> 'GET'.\x0a\x09\x09\x09'dataType' -> 'script'.\x0a\x09\x09\x09'complete' -> [ :jqXHR :textStatus |\x0a\x09\x09\x09\x09jqXHR readyState = 4\x0a\x09\x09\x09\x09\x09ifTrue: [ self setupPackageNamed: packageName prefix: aString ] ].\x0a\x09\x09\x09'error' -> [ self alert: 'Could not load package at: ', url ]\x0a\x09\x09}",
-messageSends: [",", "ajax:", "->", "ifTrue:", "=", "readyState", "setupPackageNamed:prefix:", "alert:"],
+_st(self._commitHandler())._commit_(self._package());
+return self}, function($ctx1) {$ctx1.fill(self,"commit",{},smalltalk.PackageTransport)})},
+args: [],
+source: "commit\x0a\x09self commitHandler commit: self package",
+messageSends: ["commit:", "package", "commitHandler"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "loadPackages:prefix:",
-category: 'loading',
-fn: function (aCollection,aString){
+selector: "commitHandler",
+category: 'factory',
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._loadPackage_prefix_(each,aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.LegacyPackageHandler)})},
-args: ["aCollection", "aString"],
-source: "loadPackages: aCollection prefix: aString\x0a\x09aCollection do: [ :each |\x0a\x09\x09self loadPackage: each prefix: aString ]",
-messageSends: ["do:", "loadPackage:prefix:"],
+var $1;
+$1=_st(self._commitHandlerClass())._new();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"commitHandler",{},smalltalk.PackageTransport)})},
+args: [],
+source: "commitHandler\x0a\x09^ self commitHandlerClass new",
+messageSends: ["new", "commitHandlerClass"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "setupPackageNamed:prefix:",
-category: 'private',
-fn: function (packageName,aString){
+selector: "commitHandlerClass",
+category: 'accessing',
+fn: function (){
 var self=this;
-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)._commitPathJs_(_st("/".__comma(aString)).__comma("/js"));
-$2=_st($1)._commitPathSt_(_st("/".__comma(aString)).__comma("/st"));
-return self}, function($ctx1) {$ctx1.fill(self,"setupPackageNamed:prefix:",{packageName:packageName,aString:aString},smalltalk.LegacyPackageHandler)})},
-args: ["packageName", "aString"],
-source: "setupPackageNamed: packageName prefix: aString\x0a\x0a\x09(Package named: packageName)\x0a\x09\x09setupClasses;\x0a\x09\x09commitPathJs: '/', aString, '/js';\x0a\x09\x09commitPathSt: '/', aString, '/st'",
-messageSends: ["setupClasses", "named:", "commitPathJs:", ",", "commitPathSt:"],
-referencedClasses: ["Package"]
+self._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"commitHandlerClass",{},smalltalk.PackageTransport)})},
+args: [],
+source: "commitHandlerClass\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
+referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler);
+smalltalk.PackageTransport);
 
-
-smalltalk.LegacyPackageHandler.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathsFromLoader",
-category: 'commit paths',
+selector: "package",
+category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-
-		var commitPath = typeof amber !== 'undefined' && amber.commitPath;
-		if (!commitPath) return;
-		if (commitPath.js) self._defaultCommitPathJs_(commitPath.js);
-		if (commitPath.st) self._defaultCommitPathSt_(commitPath.st);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"commitPathsFromLoader",{},smalltalk.LegacyPackageHandler.klass)})},
+var $1;
+$1=self["@package"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageTransport)})},
 args: [],
-source: "commitPathsFromLoader\x0a\x09<\x0a\x09\x09var commitPath = typeof amber !== 'undefined' && amber.commitPath;\x0a\x09\x09if (!commitPath) return;\x0a\x09\x09if (commitPath.js) self._defaultCommitPathJs_(commitPath.js);\x0a\x09\x09if (commitPath.st) self._defaultCommitPathSt_(commitPath.st);\x0a\x09>",
+source: "package\x0a\x09^ package",
 messageSends: [],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "defaultCommitPathJs",
-category: 'commit paths',
-fn: function (){
+selector: "package:",
+category: 'accessing',
+fn: function (aPackage){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@defaultCommitPathJs"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@defaultCommitPathJs"]="js";
-$1=self["@defaultCommitPathJs"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathJs",{},smalltalk.LegacyPackageHandler.klass)})},
-args: [],
-source: "defaultCommitPathJs\x0a\x09^ defaultCommitPathJs ifNil: [ defaultCommitPathJs := 'js']",
-messageSends: ["ifNil:"],
+self["@package"]=aPackage;
+return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageTransport)})},
+args: ["aPackage"],
+source: "package: aPackage\x0a\x09package := aPackage",
+messageSends: [],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "defaultCommitPathJs:",
-category: 'commit paths',
-fn: function (aString){
+selector: "setupFromJson:",
+category: 'initialization',
+fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathJs"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathJs:",{aString:aString},smalltalk.LegacyPackageHandler.klass)})},
-args: ["aString"],
-source: "defaultCommitPathJs: aString\x0a\x09defaultCommitPathJs := aString",
+return self}, function($ctx1) {$ctx1.fill(self,"setupFromJson:",{anObject:anObject},smalltalk.PackageTransport)})},
+args: ["anObject"],
+source: "setupFromJson: anObject\x0a\x09\x22no op. override if needed in subclasses\x22",
 messageSends: [],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "defaultCommitPathSt",
-category: 'commit paths',
+selector: "type",
+category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@defaultCommitPathSt"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@defaultCommitPathSt"]="st";
-$1=self["@defaultCommitPathSt"];
-} else {
-$1=$2;
-};
+var $1;
+$1=_st(self._class())._type();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathSt",{},smalltalk.LegacyPackageHandler.klass)})},
+}, function($ctx1) {$ctx1.fill(self,"type",{},smalltalk.PackageTransport)})},
 args: [],
-source: "defaultCommitPathSt\x0a\x09^ defaultCommitPathSt ifNil: [ defaultCommitPathSt := 'st']",
-messageSends: ["ifNil:"],
+source: "type\x0a\x09^ self class type",
+messageSends: ["type", "class"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport);
 
+
+smalltalk.PackageTransport.klass.iVarNames = ['registry'];
 smalltalk.addMethod(
 smalltalk.method({
-selector: "defaultCommitPathSt:",
-category: 'commit paths',
+selector: "classRegisteredFor:",
+category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathSt"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"defaultCommitPathSt:",{aString:aString},smalltalk.LegacyPackageHandler.klass)})},
+var $1;
+$1=_st(self["@registry"])._at_(aString);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString},smalltalk.PackageTransport.klass)})},
 args: ["aString"],
-source: "defaultCommitPathSt: aString\x0a\x09defaultCommitPathSt := aString",
-messageSends: [],
+source: "classRegisteredFor: aString\x0a\x09^ registry at: aString",
+messageSends: ["at:"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "initialize",
-category: 'initialization',
+selector: "defaultType",
+category: 'accessing',
 fn: function (){
 var self=this;
+function $AmdPackageTransport(){return smalltalk.AmdPackageTransport||(typeof AmdPackageTransport=="undefined"?nil:AmdPackageTransport)}
 return smalltalk.withContext(function($ctx1) { 
-smalltalk.LegacyPackageHandler.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-self._registerFor_("unknown");
-self._commitPathsFromLoader();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.LegacyPackageHandler.klass)})},
+var $1;
+$1=_st($AmdPackageTransport())._type();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"defaultType",{},smalltalk.PackageTransport.klass)})},
 args: [],
-source: "initialize\x0a\x09super initialize.\x0a\x09self registerFor: 'unknown'.\x0a\x09self commitPathsFromLoader",
-messageSends: ["initialize", "registerFor:", "commitPathsFromLoader"],
-referencedClasses: []
+source: "defaultType\x0a\x09^ AmdPackageTransport type",
+messageSends: ["type"],
+referencedClasses: ["AmdPackageTransport"]
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "loadPackages:prefix:",
-category: 'loading',
-fn: function (aCollection,aString){
+selector: "for:",
+category: 'instance creation',
+fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._new())._loadPackages_prefix_(aCollection,aString);
+$1=_st(self._classRegisteredFor_(aString))._new();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:",{aCollection:aCollection,aString:aString},smalltalk.LegacyPackageHandler.klass)})},
-args: ["aCollection", "aString"],
-source: "loadPackages: aCollection prefix: aString\x0a\x09^ self new loadPackages: aCollection prefix: aString",
-messageSends: ["loadPackages:prefix:", "new"],
+}, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString},smalltalk.PackageTransport.klass)})},
+args: ["aString"],
+source: "for: aString\x0a\x09^ (self classRegisteredFor: aString) new",
+messageSends: ["new", "classRegisteredFor:"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "resetCommitPaths",
-category: 'commit paths',
-fn: function (){
+selector: "fromJson:",
+category: 'instance creation',
+fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@defaultCommitPathJs"]=nil;
-self["@defaultCommitPathSt"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"resetCommitPaths",{},smalltalk.LegacyPackageHandler.klass)})},
-args: [],
-source: "resetCommitPaths\x0a\x09defaultCommitPathJs := nil.\x0a\x09defaultCommitPathSt := nil",
-messageSends: [],
+var $1,$2,$4,$5,$3;
+$1=anObject;
+if(($receiver = $1) == nil || $receiver == undefined){
+$2=self._for_(self._defaultType());
+return $2;
+} else {
+$1;
+};
+$4=self._for_(_st(anObject)._type());
+_st($4)._setupFromJson_(anObject);
+$5=_st($4)._yourself();
+$3=$5;
+return $3;
+}, function($ctx1) {$ctx1.fill(self,"fromJson:",{anObject:anObject},smalltalk.PackageTransport.klass)})},
+args: ["anObject"],
+source: "fromJson: anObject\x0a\x09anObject ifNil: [ ^ self for: self defaultType ].\x0a\x09\x0a\x09^ (self for: anObject type)\x0a\x09\x09setupFromJson: anObject;\x0a\x09\x09yourself",
+messageSends: ["ifNil:", "for:", "defaultType", "setupFromJson:", "type", "yourself"],
 referencedClasses: []
 }),
-smalltalk.LegacyPackageHandler.klass);
-
+smalltalk.PackageTransport.klass);
 
-smalltalk.addClass('PluggableExporter', smalltalk.Object, ['recipe'], 'Importer-Exporter');
-smalltalk.PluggableExporter.comment="I am an engine for exporting structured data on a Stream.\x0a\x0aMy instances are created using\x0a  PluggableExporter forRecipe: aRecipe,\x0awhere recipe is structured description of the exporting algorithm (see `ExportRecipeInterpreter`).\x0a\x0aThe actual exporting is done by interpreting the recipe using a `RecipeInterpreter`.\x0a\x0a\x0aI am used to export amber packages, so I have a convenience method\x0a`exportPackage: aPackage on: aStream`\x0awhich exports `aPackage` using the `recipe`\x0a(it is otherwise no special, so it may be renamed to export:on:)";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "exportAllPackages",
-category: 'fileOut',
+selector: "initialize",
+category: 'initialization',
 fn: function (){
 var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 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 self._exportPackage_on_(pkg,stream);
-}, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"exportAllPackages",{},smalltalk.PluggableExporter)})},
+smalltalk.PackageTransport.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
+self["@registry"]=smalltalk.HashedCollection._from_([]);
+self._register();
+return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.PackageTransport.klass)})},
 args: [],
-source: "exportAllPackages\x0a\x09\x22Export all packages in the system.\x22\x0a\x0a\x09^String streamContents: [:stream |\x0a\x09\x09Smalltalk current packages do: [:pkg |\x0a\x09\x09self exportPackage: pkg on: stream]]",
-messageSends: ["streamContents:", "do:", "packages", "current", "exportPackage:on:"],
-referencedClasses: ["String", "Smalltalk"]
-}),
-smalltalk.PluggableExporter);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exportPackage:on:",
-category: 'fileOut',
-fn: function (aPackage,aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._interpreter())._interpret_for_on_(self._recipe(),aPackage,aStream);
-return self}, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},smalltalk.PluggableExporter)})},
-args: ["aPackage", "aStream"],
-source: "exportPackage: aPackage on: aStream\x0a\x09self interpreter interpret: self recipe for: aPackage on: aStream",
-messageSends: ["interpret:for:on:", "interpreter", "recipe"],
+source: "initialize\x0a\x09super initialize.\x0a\x09registry := #{}.\x0a\x09self register",
+messageSends: ["initialize", "register"],
 referencedClasses: []
 }),
-smalltalk.PluggableExporter);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "interpreter",
-category: 'accessing',
+selector: "register",
+category: 'registration',
 fn: function (){
 var self=this;
-function $ExportRecipeInterpreter(){return smalltalk.ExportRecipeInterpreter||(typeof ExportRecipeInterpreter=="undefined"?nil:ExportRecipeInterpreter)}
+function $PackageTransport(){return smalltalk.PackageTransport||(typeof PackageTransport=="undefined"?nil:PackageTransport)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ExportRecipeInterpreter())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.PluggableExporter)})},
+_st($PackageTransport())._register_(self);
+return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.PackageTransport.klass)})},
 args: [],
-source: "interpreter\x0a\x09^ ExportRecipeInterpreter new",
-messageSends: ["new"],
-referencedClasses: ["ExportRecipeInterpreter"]
+source: "register\x0a\x09PackageTransport register: self",
+messageSends: ["register:"],
+referencedClasses: ["PackageTransport"]
 }),
-smalltalk.PluggableExporter);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "recipe",
-category: 'accessing',
-fn: function (){
+selector: "register:",
+category: 'registration',
+fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self["@recipe"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.PluggableExporter)})},
-args: [],
-source: "recipe\x0a\x09^recipe",
-messageSends: [],
+$1=_st(aClass)._type();
+if(($receiver = $1) == nil || $receiver == undefined){
+$1;
+} else {
+_st(self["@registry"])._at_put_(_st(aClass)._type(),aClass);
+};
+return self}, function($ctx1) {$ctx1.fill(self,"register:",{aClass:aClass},smalltalk.PackageTransport.klass)})},
+args: ["aClass"],
+source: "register: aClass\x0a\x09aClass type ifNotNil: [\x0a\x09\x09registry at: aClass type put: aClass ]",
+messageSends: ["ifNotNil:", "at:put:", "type"],
 referencedClasses: []
 }),
-smalltalk.PluggableExporter);
+smalltalk.PackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "recipe:",
+selector: "type",
 category: 'accessing',
-fn: function (anArray){
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@recipe"]=anArray;
-return self}, function($ctx1) {$ctx1.fill(self,"recipe:",{anArray:anArray},smalltalk.PluggableExporter)})},
-args: ["anArray"],
-source: "recipe: anArray\x0a\x09recipe := anArray",
+return nil;
+}, function($ctx1) {$ctx1.fill(self,"type",{},smalltalk.PackageTransport.klass)})},
+args: [],
+source: "type\x0a\x09\x22Override in subclasses\x22\x0a\x09^ nil",
 messageSends: [],
 referencedClasses: []
 }),
-smalltalk.PluggableExporter);
+smalltalk.PackageTransport.klass);
 
 
+smalltalk.addClass('AmdPackageTransport', smalltalk.PackageTransport, ['namespace'], 'Importer-Exporter');
+smalltalk.AmdPackageTransport.comment="I am the default transport for committing packages.\x0a\x0aSee `AmdExporter` and `AmdPackageHandler`.";
 smalltalk.addMethod(
 smalltalk.method({
-selector: "forRecipe:",
-category: 'instance creation',
-fn: function (aRecipe){
+selector: "asJSON",
+category: 'converting',
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$1;
-$2=self._new();
-_st($2)._recipe_(aRecipe);
+$2=smalltalk.AmdPackageTransport.superclass.fn.prototype._asJSON.apply(_st(self), []);
+_st($2)._at_put_("amdNamespace",self._namespace());
 $3=_st($2)._yourself();
 $1=$3;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"forRecipe:",{aRecipe:aRecipe},smalltalk.PluggableExporter.klass)})},
-args: ["aRecipe"],
-source: "forRecipe: aRecipe\x0a\x09^self new recipe: aRecipe; yourself",
-messageSends: ["recipe:", "new", "yourself"],
+}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.AmdPackageTransport)})},
+args: [],
+source: "asJSON\x0a\x09^ super asJSON\x0a\x09\x09at: 'amdNamespace' put: self namespace;\x0a\x09\x09yourself",
+messageSends: ["at:put:", "namespace", "asJSON", "yourself"],
 referencedClasses: []
 }),
-smalltalk.PluggableExporter.klass);
+smalltalk.AmdPackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "ownClassesOfPackage:",
-category: 'convenience',
-fn: function (package_){
+selector: "commitHandlerClass",
+category: 'accessing',
+fn: function (){
 var self=this;
+function $AmdPackageHandler(){return smalltalk.AmdPackageHandler||(typeof AmdPackageHandler=="undefined"?nil:AmdPackageHandler)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(_st(package_)._sortedClasses())._asSet();
+$1=$AmdPackageHandler();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownClassesOfPackage:",{package_:package_},smalltalk.PluggableExporter.klass)})},
-args: ["package"],
-source: "ownClassesOfPackage: package\x0a\x09\x22Export classes in dependency order.\x0a\x09Update (issue #171): Remove duplicates for export\x22\x0a\x09^package sortedClasses asSet",
-messageSends: ["asSet", "sortedClasses"],
-referencedClasses: []
+}, function($ctx1) {$ctx1.fill(self,"commitHandlerClass",{},smalltalk.AmdPackageTransport)})},
+args: [],
+source: "commitHandlerClass\x0a\x09^ AmdPackageHandler",
+messageSends: [],
+referencedClasses: ["AmdPackageHandler"]
 }),
-smalltalk.PluggableExporter.klass);
+smalltalk.AmdPackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commit",
-category: '*Importer-Exporter',
+selector: "defaultNamespace",
+category: 'defaults',
 fn: function (){
 var self=this;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._transport())._commit_(self);
+$1=_st(_st($Smalltalk())._current())._defaultAmdNamespace();
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"commit",{},smalltalk.Package)})},
+}, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{},smalltalk.AmdPackageTransport)})},
 args: [],
-source: "commit\x0a\x09^ self transport commit: self",
-messageSends: ["commit:", "transport"],
-referencedClasses: []
+source: "defaultNamespace\x0a\x09^ Smalltalk current defaultAmdNamespace",
+messageSends: ["defaultAmdNamespace", "current"],
+referencedClasses: ["Smalltalk"]
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathJs",
-category: '*Importer-Exporter',
+selector: "namespace",
+category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
+var $2,$1;
+$2=self["@namespace"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$1=self._defaultNamespace();
 } else {
-$2=$3;
+$1=$2;
 };
-$1=_st($2)._at_ifAbsentPut_("commitPathJs",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._transport())._commitPathJsFor_(self);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJs",{},smalltalk.Package)})},
+}, function($ctx1) {$ctx1.fill(self,"namespace",{},smalltalk.AmdPackageTransport)})},
 args: [],
-source: "commitPathJs\x0a\x09^ (extension ifNil: [ extension := #{} ]) at: #commitPathJs ifAbsentPut: [self transport commitPathJsFor: self]",
-messageSends: ["at:ifAbsentPut:", "ifNil:", "commitPathJsFor:", "transport"],
+source: "namespace\x0a\x09^ namespace ifNil: [ self defaultNamespace ]",
+messageSends: ["ifNil:", "defaultNamespace"],
 referencedClasses: []
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathJs:",
-category: '*Importer-Exporter',
+selector: "namespace:",
+category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_put_("commitPathJs",aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJs:",{aString:aString},smalltalk.Package)})},
+self["@namespace"]=aString;
+return self}, function($ctx1) {$ctx1.fill(self,"namespace:",{aString:aString},smalltalk.AmdPackageTransport)})},
 args: ["aString"],
-source: "commitPathJs: aString\x0a\x09^ (extension ifNil: [ extension := #{} ]) at: #commitPathJs put: aString",
-messageSends: ["at:put:", "ifNil:"],
+source: "namespace: aString\x0a\x09namespace := aString",
+messageSends: [],
 referencedClasses: []
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathSt",
-category: '*Importer-Exporter',
-fn: function (){
+selector: "setupFromJson:",
+category: 'initialization',
+fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_ifAbsentPut_("commitPathSt",(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._transport())._commitPathStFor_(self);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathSt",{},smalltalk.Package)})},
-args: [],
-source: "commitPathSt\x0a\x09^ (extension ifNil: [ extension := #{} ]) at: #commitPathSt ifAbsentPut: [self transport commitPathStFor: self]",
-messageSends: ["at:ifAbsentPut:", "ifNil:", "commitPathStFor:", "transport"],
+self._namespace_(_st(anObject)._at_("amdNamespace"));
+return self}, function($ctx1) {$ctx1.fill(self,"setupFromJson:",{anObject:anObject},smalltalk.AmdPackageTransport)})},
+args: ["anObject"],
+source: "setupFromJson: anObject\x0a\x09self namespace: (anObject at: 'amdNamespace')",
+messageSends: ["namespace:", "at:"],
 referencedClasses: []
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport);
+
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "commitPathSt:",
-category: '*Importer-Exporter',
+selector: "namespace:",
+category: 'instance creation',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $3,$2,$1;
-$3=self["@extension"];
-if(($receiver = $3) == nil || $receiver == undefined){
-self["@extension"]=smalltalk.HashedCollection._from_([]);
-$2=self["@extension"];
-} else {
-$2=$3;
-};
-$1=_st($2)._at_put_("commitPathSt",aString);
+var $2,$3,$1;
+$2=self._new();
+_st($2)._namespace_(aString);
+$3=_st($2)._yourself();
+$1=$3;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathSt:",{aString:aString},smalltalk.Package)})},
+}, function($ctx1) {$ctx1.fill(self,"namespace:",{aString:aString},smalltalk.AmdPackageTransport.klass)})},
 args: ["aString"],
-source: "commitPathSt: aString\x0a\x09^ (extension ifNil: [ extension := #{} ]) at: #commitPathSt put: aString",
-messageSends: ["at:put:", "ifNil:"],
+source: "namespace: aString\x0a\x09^ self new\x0a\x09\x09namespace: aString;\x0a\x09\x09yourself",
+messageSends: ["namespace:", "new", "yourself"],
 referencedClasses: []
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "transport",
-category: '*Importer-Exporter',
+selector: "type",
+category: 'accessing',
 fn: function (){
 var self=this;
-function $PackageHandler(){return smalltalk.PackageHandler||(typeof PackageHandler=="undefined"?nil:PackageHandler)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PackageHandler())._for_(self._transportType());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"transport",{},smalltalk.Package)})},
+return "amd";
+}, function($ctx1) {$ctx1.fill(self,"type",{},smalltalk.AmdPackageTransport.klass)})},
 args: [],
-source: "transport\x0a\x09^ PackageHandler for: self transportType",
-messageSends: ["for:", "transportType"],
-referencedClasses: ["PackageHandler"]
+source: "type\x0a\x09^ 'amd'",
+messageSends: [],
+referencedClasses: []
 }),
-smalltalk.Package);
+smalltalk.AmdPackageTransport.klass);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "transportType",
+selector: "commit",
 category: '*Importer-Exporter',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-return (self.transport && self.transport.type) || 'unknown';;
-return self}, function($ctx1) {$ctx1.fill(self,"transportType",{},smalltalk.Package)})},
+var $1;
+$1=_st(self._transport())._commit();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"commit",{},smalltalk.Package)})},
 args: [],
-source: "transportType\x0a\x09<return (self.transport && self.transport.type) || 'unknown';>",
-messageSends: [],
+source: "commit\x0a\x09^ self transport commit",
+messageSends: ["commit", "transport"],
 referencedClasses: []
 }),
 smalltalk.Package);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 557
js/Kernel-Announcements.deploy.js

@@ -1,557 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Announcements');
-
-smalltalk.addClass('AnnouncementSubscription', smalltalk.Object, ['valuable', 'announcementClass'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcementClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@announcementClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcementClass",{},smalltalk.AnnouncementSubscription)})},
-messageSends: []}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcementClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@announcementClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass},smalltalk.AnnouncementSubscription)})},
-messageSends: []}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "block",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._deprecatedAPI();
-$1=self._valuable();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"block",{},smalltalk.AnnouncementSubscription)})},
-messageSends: ["deprecatedAPI", "valuable"]}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "block:",
-fn: function (aValuable){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._deprecatedAPI();
-self._valuable_(aValuable);
-return self}, function($ctx1) {$ctx1.fill(self,"block:",{aValuable:aValuable},smalltalk.AnnouncementSubscription)})},
-messageSends: ["deprecatedAPI", "valuable:"]}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deliver:",
-fn: function (anAnnouncement){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._handlesAnnouncement_(anAnnouncement);
-if(smalltalk.assert($1)){
-_st(self._valuable())._value_(anAnnouncement);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"deliver:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
-messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"]}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handlesAnnouncement:",
-fn: function (anAnnouncement){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st($Smalltalk())._current())._at_(_st(self._announcementClass())._name());
-if(($receiver = $2) == nil || $receiver == undefined){
-return false;
-} else {
-var class_;
-class_=$receiver;
-$1=_st(class_)._includesBehavior_(_st(_st($Smalltalk())._current())._at_(_st(_st(_st(anAnnouncement)._class())._theNonMetaClass())._name()));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
-messageSends: ["ifNil:ifNotNil:", "at:", "current", "name", "announcementClass", "includesBehavior:", "theNonMetaClass", "class"]}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._valuable())._receiver();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.AnnouncementSubscription)})},
-messageSends: ["receiver", "valuable"]}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valuable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@valuable"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"valuable",{},smalltalk.AnnouncementSubscription)})},
-messageSends: []}),
-smalltalk.AnnouncementSubscription);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valuable:",
-fn: function (aValuable){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@valuable"]=aValuable;
-return self}, function($ctx1) {$ctx1.fill(self,"valuable:",{aValuable:aValuable},smalltalk.AnnouncementSubscription)})},
-messageSends: []}),
-smalltalk.AnnouncementSubscription);
-
-
-
-smalltalk.addClass('Announcer', smalltalk.Object, ['registry', 'subscriptions'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announce:",
-fn: function (anAnnouncement){
-var self=this;
-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,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
-messageSends: ["do:", "deliver:"]}),
-smalltalk.Announcer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Announcer.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@subscriptions"]=_st($OrderedCollection())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Announcer)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.Announcer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:do:",
-fn: function (aClass,aBlock){
-var self=this;
-function $AnnouncementSubscription(){return smalltalk.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($AnnouncementSubscription())._new();
-_st($1)._valuable_(aBlock);
-_st($1)._announcementClass_(aClass);
-$2=_st($1)._yourself();
-_st(self["@subscriptions"])._add_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock},smalltalk.Announcer)})},
-messageSends: ["add:", "valuable:", "new", "announcementClass:", "yourself"]}),
-smalltalk.Announcer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:send:to:",
-fn: function (aClass,aSelector,anObject){
-var self=this;
-function $AnnouncementSubscription(){return smalltalk.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
-function $MessageSend(){return smalltalk.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st($AnnouncementSubscription())._new();
-$2=_st($MessageSend())._new();
-_st($2)._receiver_(anObject);
-_st($2)._selector_(aSelector);
-$3=_st($2)._yourself();
-_st($1)._valuable_($3);
-_st($1)._announcementClass_(aClass);
-$4=_st($1)._yourself();
-_st(self["@subscriptions"])._add_($4);
-return self}, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject},smalltalk.Announcer)})},
-messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"]}),
-smalltalk.Announcer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unsubscribe:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@subscriptions"]=_st(self["@subscriptions"])._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._receiver()).__eq(anObject);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"unsubscribe:",{anObject:anObject},smalltalk.Announcer)})},
-messageSends: ["reject:", "=", "receiver"]}),
-smalltalk.Announcer);
-
-
-
-smalltalk.addClass('SystemAnnouncer', smalltalk.Announcer, [], 'Kernel-Announcements');
-
-smalltalk.SystemAnnouncer.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=smalltalk.SystemAnnouncer.klass.superclass.fn.prototype._new.apply(_st(self), []);
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.SystemAnnouncer.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.SystemAnnouncer.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.SystemAnnouncer.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.SystemAnnouncer.klass);
-
-
-smalltalk.addClass('SystemAnnouncement', smalltalk.Object, ['theClass'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.SystemAnnouncement)})},
-messageSends: []}),
-smalltalk.SystemAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.SystemAnnouncement)})},
-messageSends: []}),
-smalltalk.SystemAnnouncement);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "announcement";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.SystemAnnouncement.klass)})},
-messageSends: []}),
-smalltalk.SystemAnnouncement.klass);
-
-
-smalltalk.addClass('ClassAnnouncement', smalltalk.SystemAnnouncement, ['theClass'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassAnnouncement)})},
-messageSends: []}),
-smalltalk.ClassAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassAnnouncement)})},
-messageSends: []}),
-smalltalk.ClassAnnouncement);
-
-
-
-smalltalk.addClass('ClassAdded', smalltalk.ClassAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ClassCommentChanged', smalltalk.ClassAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ClassDefinitionChanged', smalltalk.ClassAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ClassMigrated', smalltalk.ClassAnnouncement, ['oldClass'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@oldClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"oldClass",{},smalltalk.ClassMigrated)})},
-messageSends: []}),
-smalltalk.ClassMigrated);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@oldClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"oldClass:",{aClass:aClass},smalltalk.ClassMigrated)})},
-messageSends: []}),
-smalltalk.ClassMigrated);
-
-
-
-smalltalk.addClass('ClassMoved', smalltalk.ClassAnnouncement, ['oldPackage'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@oldPackage"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"oldPackage",{},smalltalk.ClassMoved)})},
-messageSends: []}),
-smalltalk.ClassMoved);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldPackage:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@oldPackage"]=aPackage;
-return self}, function($ctx1) {$ctx1.fill(self,"oldPackage:",{aPackage:aPackage},smalltalk.ClassMoved)})},
-messageSends: []}),
-smalltalk.ClassMoved);
-
-
-
-smalltalk.addClass('ClassRemoved', smalltalk.ClassAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ClassRenamed', smalltalk.ClassAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('MethodAnnouncement', smalltalk.SystemAnnouncement, ['method'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@method"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodAnnouncement)})},
-messageSends: []}),
-smalltalk.MethodAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method:",
-fn: function (aCompiledMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=aCompiledMethod;
-return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.MethodAnnouncement)})},
-messageSends: []}),
-smalltalk.MethodAnnouncement);
-
-
-
-smalltalk.addClass('MethodAdded', smalltalk.MethodAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('MethodModified', smalltalk.MethodAnnouncement, ['oldMethod'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@oldMethod"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"oldMethod",{},smalltalk.MethodModified)})},
-messageSends: []}),
-smalltalk.MethodModified);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@oldMethod"]=aMethod;
-return self}, function($ctx1) {$ctx1.fill(self,"oldMethod:",{aMethod:aMethod},smalltalk.MethodModified)})},
-messageSends: []}),
-smalltalk.MethodModified);
-
-
-
-smalltalk.addClass('MethodMoved', smalltalk.MethodAnnouncement, ['oldProtocol'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldProtocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@oldProtocol"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"oldProtocol",{},smalltalk.MethodMoved)})},
-messageSends: []}),
-smalltalk.MethodMoved);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "oldProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@oldProtocol"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"oldProtocol:",{aString:aString},smalltalk.MethodMoved)})},
-messageSends: []}),
-smalltalk.MethodMoved);
-
-
-
-smalltalk.addClass('MethodRemoved', smalltalk.MethodAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('PackageAnnouncement', smalltalk.SystemAnnouncement, ['package'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "package",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@package"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.PackageAnnouncement)})},
-messageSends: []}),
-smalltalk.PackageAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "package:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@package"]=aPackage;
-return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage},smalltalk.PackageAnnouncement)})},
-messageSends: []}),
-smalltalk.PackageAnnouncement);
-
-
-
-smalltalk.addClass('PackageAdded', smalltalk.PackageAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('PackageRemoved', smalltalk.PackageAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ProtocolAnnouncement', smalltalk.SystemAnnouncement, ['theClass', 'protocol'], 'Kernel-Announcements');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@protocol"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.ProtocolAnnouncement)})},
-messageSends: []}),
-smalltalk.ProtocolAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@protocol"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.ProtocolAnnouncement)})},
-messageSends: []}),
-smalltalk.ProtocolAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ProtocolAnnouncement)})},
-messageSends: []}),
-smalltalk.ProtocolAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ProtocolAnnouncement)})},
-messageSends: []}),
-smalltalk.ProtocolAnnouncement);
-
-
-
-smalltalk.addClass('ProtocolAdded', smalltalk.ProtocolAnnouncement, [], 'Kernel-Announcements');
-
-
-smalltalk.addClass('ProtocolRemoved', smalltalk.ProtocolAnnouncement, [], 'Kernel-Announcements');
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Kernel-Announcements.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Announcements", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Announcements');
+smalltalk.packages["Kernel-Announcements"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('AnnouncementSubscription', smalltalk.Object, ['valuable', 'announcementClass'], 'Kernel-Announcements');
 smalltalk.AnnouncementSubscription.comment="I am a single entry in a subscription registry of an `Announcer`.\x0aSeveral subscriptions by the same object is possible.";
@@ -762,4 +763,4 @@ smalltalk.ProtocolAdded.comment="I am emitted when a protocol is added to a clas
 smalltalk.addClass('ProtocolRemoved', smalltalk.ProtocolAnnouncement, [], 'Kernel-Announcements');
 smalltalk.ProtocolRemoved.comment="I am emitted when a protocol is removed from a class.";
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1639
js/Kernel-Classes.deploy.js

@@ -1,1639 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Classes');
-
-smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">>",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._methodAt_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,">>",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["methodAt:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addCompiledMethod:",
-fn: function (aMethod){
-var self=this;
-var oldMethod,announcement;
-function $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
-function $MethodModified(){return smalltalk.MethodModified||(typeof MethodModified=="undefined"?nil:MethodModified)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6;
-oldMethod=_st(self._methodDictionary())._at_ifAbsent_(_st(aMethod)._selector(),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$1=_st(self._protocols())._includes_(_st(aMethod)._protocol());
-if(! smalltalk.assert($1)){
-_st(self._organization())._addElement_(_st(aMethod)._protocol());
-};
-self._basicAddCompiledMethod_(aMethod);
-$2=oldMethod;
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($MethodAdded())._new();
-_st($3)._method_(aMethod);
-$4=_st($3)._yourself();
-announcement=$4;
-} else {
-$5=_st($MethodModified())._new();
-_st($5)._oldMethod_(oldMethod);
-_st($5)._method_(aMethod);
-$6=_st($5)._yourself();
-announcement=$6;
-};
-_st(_st($SystemAnnouncer())._current())._announce_(announcement);
-return self}, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement},smalltalk.Behavior)})},
-messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "ifFalse:", "includes:", "protocols", "protocol", "addElement:", "organization", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allInstanceVariableNames",
-fn: function (){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-result=_st(self._instanceVariableNames())._copy();
-$1=self._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(result)._addAll_(_st(self._superclass())._allInstanceVariableNames());
-};
-$2=result;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{result:result},smalltalk.Behavior)})},
-messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$1=_st(self._allSuperclasses())._inject_into_(self._selectors(),(function(soFar,aBehavior){
-return smalltalk.withContext(function($ctx2) {
-$2=soFar;
-_st($2)._addAll_(_st(aBehavior)._selectors());
-$3=_st($2)._yourself();
-return $3;
-}, function($ctx2) {$ctx2.fillBlock({soFar:soFar,aBehavior:aBehavior},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.Behavior)})},
-messageSends: ["inject:into:", "allSuperclasses", "selectors", "addAll:", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSubclasses",
-fn: function (){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-result=self._subclasses();
-_st(self._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(result)._addAll_(_st(each)._allSubclasses());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSubclasses",{result:result},smalltalk.Behavior)})},
-messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSubclassesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._subclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(each);
-return _st(each)._allSubclassesDo_(aBlock);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock},smalltalk.Behavior)})},
-messageSends: ["do:", "subclasses", "value:", "allSubclassesDo:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSuperclasses",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$5,$3;
-$1=self._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=[];
-return $2;
-} else {
-$1;
-};
-$4=_st($OrderedCollection())._with_(self._superclass());
-_st($4)._addAll_(_st(self._superclass())._allSuperclasses());
-$5=_st($4)._yourself();
-$3=$5;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{},smalltalk.Behavior)})},
-messageSends: ["ifNil:", "superclass", "addAll:", "with:", "allSuperclasses", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicAddCompiledMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.addMethod(aMethod, self);
-return self}, function($ctx1) {$ctx1.fill(self,"basicAddCompiledMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicNew",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return new self.fn();
-return self}, function($ctx1) {$ctx1.fill(self,"basicNew",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicRemoveCompiledMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.removeMethod(aMethod,self);
-return self}, function($ctx1) {$ctx1.fill(self,"basicRemoveCompiledMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "canUnderstand:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._methodDictionary())._keys())._includes_(_st(aSelector)._asString()))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._superclass())._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._superclass())._canUnderstand_(aSelector);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector},smalltalk.Behavior)})},
-messageSends: ["or:", "includes:", "keys", "methodDictionary", "asString", "and:", "notNil", "superclass", "canUnderstand:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "comment",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._basicAt_("comment");
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"comment",{},smalltalk.Behavior)})},
-messageSends: ["ifNil:", "basicAt:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "comment:",
-fn: function (aString){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._basicAt_put_("comment",aString);
-$1=_st($ClassCommentChanged())._new();
-_st($1)._theClass_(self);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["basicAt:put:", "announce:", "current", "theClass:", "new", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commentStamp",
-fn: function (){
-var self=this;
-function $ClassCommentReader(){return smalltalk.ClassCommentReader||(typeof ClassCommentReader=="undefined"?nil:ClassCommentReader)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($ClassCommentReader())._new();
-_st($2)._class_(self);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commentStamp",{},smalltalk.Behavior)})},
-messageSends: ["class:", "new", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commentStamp:prior:",
-fn: function (aStamp,prior){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._commentStamp();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commentStamp:prior:",{aStamp:aStamp,prior:prior},smalltalk.Behavior)})},
-messageSends: ["commentStamp"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._compile_category_(aString,"");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["compile:category:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile:category:",
-fn: function (aString,anotherString){
-var self=this;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Compiler())._new())._install_forClass_category_(aString,self,anotherString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compile:category:",{aString:aString,anotherString:anotherString},smalltalk.Behavior)})},
-messageSends: ["install:forClass:category:", "new"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "definition",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "";
-}, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesBehavior:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self.__eq_eq(aClass))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._inheritsFrom_(aClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includesBehavior:",{aClass:aClass},smalltalk.Behavior)})},
-messageSends: ["or:", "==", "inheritsFrom:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesSelector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodDictionary())._includesKey_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includesSelector:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["includesKey:", "methodDictionary"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inheritsFrom:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-return false;
-} else {
-$1;
-};
-$2=_st(_st(aClass).__eq_eq(self._superclass()))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._superclass())._inheritsFrom_(aClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass},smalltalk.Behavior)})},
-messageSends: ["ifNil:", "superclass", "or:", "==", "inheritsFrom:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instanceVariableNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.iVarNames;
-return self}, function($ctx1) {$ctx1.fill(self,"instanceVariableNames",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBehavior",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBehavior",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lookupSelector:",
-fn: function (selector){
-var self=this;
-var lookupClass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-lookupClass=self;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(lookupClass).__eq(nil);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(lookupClass)._includesSelector_(selector);
-if(smalltalk.assert($1)){
-$2=_st(lookupClass)._methodAt_(selector);
-throw $early=[$2];
-};
-lookupClass=_st(lookupClass)._superclass();
-return lookupClass;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return nil;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector,lookupClass:lookupClass},smalltalk.Behavior)})},
-messageSends: ["whileFalse:", "=", "ifTrue:", "includesSelector:", "methodAt:", "superclass"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodDictionary())._at_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodAt:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["at:", "methodDictionary"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodDictionary",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var dict = smalltalk.HashedCollection._new();
-	var methods = self.methods;
-	for(var i in methods) {
-		if(methods[i].selector) {
-			dict._at_put_(methods[i].selector, methods[i]);
-		}
-	};
-	return dict;
-return self}, function($ctx1) {$ctx1.fill(self,"methodDictionary",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methods",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodDictionary())._values();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methods",{},smalltalk.Behavior)})},
-messageSends: ["values", "methodDictionary"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsFor:",
-fn: function (aString){
-var self=this;
-function $ClassCategoryReader(){return smalltalk.ClassCategoryReader||(typeof ClassCategoryReader=="undefined"?nil:ClassCategoryReader)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($ClassCategoryReader())._new();
-_st($2)._class_category_(self,aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsFor:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["class:category:", "new", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsFor:stamp:",
-fn: function (aString,aStamp){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._methodsFor_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsFor:stamp:",{aString:aString,aStamp:aStamp},smalltalk.Behavior)})},
-messageSends: ["methodsFor:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodsInProtocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._methodDictionary())._values())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["select:", "values", "methodDictionary", "=", "protocol"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.className || nil;
-return self}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._basicNew())._initialize();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Behavior)})},
-messageSends: ["initialize", "basicNew"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "organization",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("organization");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"organization",{},smalltalk.Behavior)})},
-messageSends: ["basicAt:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocols",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._organization())._elements())._sorted();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"protocols",{},smalltalk.Behavior)})},
-messageSends: ["sorted", "elements", "organization"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocolsDo:",
-fn: function (aBlock){
-var self=this;
-var methodsByCategory;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-methodsByCategory=_st($HashedCollection())._new();
-_st(_st(self._methodDictionary())._values())._do_((function(m){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(methodsByCategory)._at_ifAbsentPut_(_st(m)._category(),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st($Array())._new();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._add_(m);
-}, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1,1)})}));
-_st(self._protocols())._do_((function(category){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_value_(category,_st(methodsByCategory)._at_(category));
-}, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByCategory:methodsByCategory},smalltalk.Behavior)})},
-messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "prototype",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.fn.prototype;
-return self}, function($ctx1) {$ctx1.fill(self,"prototype",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "recompile",
-fn: function (){
-var self=this;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Compiler())._new())._recompile_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"recompile",{},smalltalk.Behavior)})},
-messageSends: ["recompile:", "new"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeCompiledMethod:",
-fn: function (aMethod){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._basicRemoveCompiledMethod_(aMethod);
-_st(self._methods())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(_st(aMethod)._protocol());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._organization())._removeElement_(_st(aMethod)._protocol());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-$1=_st($MethodRemoved())._new();
-_st($1)._method_(aMethod);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
-messageSends: ["basicRemoveCompiledMethod:", "detect:ifNone:", "methods", "=", "protocol", "removeElement:", "organization", "announce:", "current", "method:", "new", "yourself"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._methodDictionary())._keys();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectors",{},smalltalk.Behavior)})},
-messageSends: ["keys", "methodDictionary"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.subclasses(self);
-return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superclass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.superclass || nil;
-return self}, function($ctx1) {$ctx1.fill(self,"superclass",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theMetaClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._class();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theMetaClass",{},smalltalk.Behavior)})},
-messageSends: ["class"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theNonMetaClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{},smalltalk.Behavior)})},
-messageSends: []}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withAllSubclasses",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($Array())._with_(self);
-_st($2)._addAll_(self._allSubclasses());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{},smalltalk.Behavior)})},
-messageSends: ["addAll:", "with:", "allSubclasses", "yourself"]}),
-smalltalk.Behavior);
-
-
-
-smalltalk.addClass('Class', smalltalk.Behavior, [], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1="smalltalk.".__comma(self._name());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.Class)})},
-messageSends: [",", "name"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._package();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="Unclassified";
-} else {
-$1=_st(self._package())._name();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.Class)})},
-messageSends: ["ifNil:ifNotNil:", "package", "name"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "definition",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$1;
-$1=_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
-$2=stream;
-_st($2)._nextPutAll_(_st(self._superclass())._asString());
-_st($2)._nextPutAll_(" subclass: #");
-_st($2)._nextPutAll_(self._name());
-_st($2)._nextPutAll_(_st(_st($String())._lf()).__comma(_st($String())._tab()));
-$3=_st($2)._nextPutAll_("instanceVariableNames: '");
-$3;
-_st(self._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-$4=stream;
-_st($4)._nextPutAll_(_st("'".__comma(_st($String())._lf())).__comma(_st($String())._tab()));
-_st($4)._nextPutAll_("package: '");
-_st($4)._nextPutAll_(self._category());
-$5=_st($4)._nextPutAll_("'");
-return $5;
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Class)})},
-messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isClass",{},smalltalk.Class)})},
-messageSends: []}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "package",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("pkg");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"package",{},smalltalk.Class)})},
-messageSends: ["basicAt:"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "package:",
-fn: function (aPackage){
-var self=this;
-var oldPackage;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-$1=_st(self._package()).__eq(aPackage);
-if(smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-oldPackage=self._package();
-self._basicAt_put_("pkg",aPackage);
-_st(_st(oldPackage)._organization())._removeElement_(self);
-_st(_st(aPackage)._organization())._addElement_(self);
-$3=_st($ClassMoved())._new();
-_st($3)._theClass_(self);
-_st($3)._oldPackage_(oldPackage);
-$4=_st($3)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($4);
-return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage},smalltalk.Class)})},
-messageSends: ["ifTrue:", "=", "package", "basicAt:put:", "removeElement:", "organization", "addElement:", "announce:", "current", "theClass:", "new", "oldPackage:", "yourself"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(self._name());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Class)})},
-messageSends: ["nextPutAll:", "name"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rename:",
-fn: function (aString){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($ClassBuilder())._new())._renameClass_to_(self,aString);
-return self}, function($ctx1) {$ctx1.fill(self,"rename:",{aString:aString},smalltalk.Class)})},
-messageSends: ["renameClass:to:", "new"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:",
-fn: function (aString,anotherString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString},smalltalk.Class)})},
-messageSends: ["subclass:instanceVariableNames:package:"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:category:",
-fn: function (aString,aString2,aString3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._deprecatedAPI();
-$1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3},smalltalk.Class)})},
-messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
-fn: function (aString,aString2,classVars,pools,aString3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3},smalltalk.Class)})},
-messageSends: ["subclass:instanceVariableNames:package:"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:package:",
-fn: function (aString,aString2,aString3){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($ClassBuilder())._new())._superclass_subclass_instanceVariableNames_package_(self,_st(aString)._asString(),aString2,aString3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3},smalltalk.Class)})},
-messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"]}),
-smalltalk.Class);
-
-
-
-smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("smalltalk.".__comma(_st(self._instanceClass())._name())).__comma(".klass");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.Metaclass)})},
-messageSends: [",", "name", "instanceClass"]}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "definition",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$1=_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
-$2=stream;
-_st($2)._nextPutAll_(self._asString());
-$3=_st($2)._nextPutAll_(" instanceVariableNames: '");
-$3;
-_st(self._instanceVariableNames())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-return _st(stream)._nextPutAll_("'");
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Metaclass)})},
-messageSends: ["streamContents:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames"]}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instanceClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.instanceClass;
-return self}, function($ctx1) {$ctx1.fill(self,"instanceClass",{},smalltalk.Metaclass)})},
-messageSends: []}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instanceVariableNames:",
-fn: function (aCollection){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($ClassBuilder())._new())._class_instanceVariableNames_(self,aCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"instanceVariableNames:",{aCollection:aCollection},smalltalk.Metaclass)})},
-messageSends: ["class:instanceVariableNames:", "new"]}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMetaclass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isMetaclass",{},smalltalk.Metaclass)})},
-messageSends: []}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_(_st(self._instanceClass())._name());
-$2=_st($1)._nextPutAll_(" class");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Metaclass)})},
-messageSends: ["nextPutAll:", "name", "instanceClass"]}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theMetaClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theMetaClass",{},smalltalk.Metaclass)})},
-messageSends: []}),
-smalltalk.Metaclass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theNonMetaClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._instanceClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{},smalltalk.Metaclass)})},
-messageSends: ["instanceClass"]}),
-smalltalk.Metaclass);
-
-
-
-smalltalk.addClass('ClassBuilder', smalltalk.Object, [], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addSubclassOf:named:instanceVariableNames:package:",
-fn: function (aClass,className,aCollection,packageName){
-var self=this;
-var theClass,thePackage;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-theClass=_st(_st($Smalltalk())._current())._at_(className);
-thePackage=self._createPackageNamed_(packageName);
-$1=theClass;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(theClass)._package_(thePackage);
-$2=_st(_st(theClass)._superclass()).__eq_eq(aClass);
-if(! smalltalk.assert($2)){
-$3=self._migrateClassNamed_superclass_instanceVariableNames_package_(className,aClass,aCollection,packageName);
-return $3;
-};
-};
-$4=self._basicAddSubclassOf_named_instanceVariableNames_package_(aClass,className,aCollection,packageName);
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,theClass:theClass,thePackage:thePackage},smalltalk.ClassBuilder)})},
-messageSends: ["at:", "current", "createPackageNamed:", "ifNotNil:", "package:", "ifFalse:", "==", "superclass", "migrateClassNamed:superclass:instanceVariableNames:package:", "basicAddSubclassOf:named:instanceVariableNames:package:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicAddSubclassOf:named:instanceVariableNames:package:",
-fn: function (aClass,aString,aCollection,packageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		smalltalk.addClass(aString, aClass, aCollection, packageName);
-		return smalltalk[aString]
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"basicAddSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicClass:instanceVariableNames:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._basicClass_instanceVariables_(aClass,self._instanceVariableNamesFor_(aString));
-return self}, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariableNames:",{aClass:aClass,aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["basicClass:instanceVariables:", "instanceVariableNamesFor:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicClass:instanceVariables:",
-fn: function (aClass,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aClass)._isMetaclass();
-if(! smalltalk.assert($1)){
-self._error_(_st(_st(aClass)._name()).__comma(" is not a metaclass"));
-};
-_st(aClass)._basicAt_put_("iVarNames",aCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariables:",{aClass:aClass,aCollection:aCollection},smalltalk.ClassBuilder)})},
-messageSends: ["ifFalse:", "isMetaclass", "error:", ",", "name", "basicAt:put:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicRemoveClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.removeClass(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"basicRemoveClass:",{aClass:aClass},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicRenameClass:to:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		smalltalk[aString] = aClass;
-		delete smalltalk[aClass.className];
-		aClass.className = aString;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"basicRenameClass:to:",{aClass:aClass,aString:aString},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicSwapClassNames:with:",
-fn: function (aClass,anotherClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var tmp = aClass.className;
-		aClass.className = anotherClass.className;
-		anotherClass.className = tmp;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"basicSwapClassNames:with:",{aClass:aClass,anotherClass:anotherClass},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "class:instanceVariableNames:",
-fn: function (aClass,ivarNames){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassDefinitionChanged(){return smalltalk.ClassDefinitionChanged||(typeof ClassDefinitionChanged=="undefined"?nil:ClassDefinitionChanged)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._basicClass_instanceVariableNames_(aClass,ivarNames);
-self._setupClass_(aClass);
-$1=_st($ClassDefinitionChanged())._new();
-_st($1)._theClass_(aClass);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"class:instanceVariableNames:",{aClass:aClass,ivarNames:ivarNames},smalltalk.ClassBuilder)})},
-messageSends: ["basicClass:instanceVariableNames:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClass:named:",
-fn: function (aClass,className){
-var self=this;
-var newClass;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-newClass=self._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),className,_st(aClass)._instanceVariableNames(),_st(_st(aClass)._package())._name());
-self._copyClass_to_(aClass,newClass);
-$1=_st($ClassAdded())._new();
-_st($1)._theClass_(newClass);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-$3=newClass;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass},smalltalk.ClassBuilder)})},
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "copyClass:to:", "announce:", "current", "theClass:", "new", "yourself"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClass:to:",
-fn: function (aClass,anotherClass){
-var self=this;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-_st(anotherClass)._comment_(_st(aClass)._comment());
-_st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Compiler())._new())._install_forClass_category_(_st(each)._source(),anotherClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._basicClass_instanceVariables_(_st(anotherClass)._class(),_st(_st(aClass)._class())._instanceVariableNames());
-_st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Compiler())._new())._install_forClass_category_(_st(each)._source(),_st(anotherClass)._class(),_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-self._setupClass_(anotherClass);
-return self}, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass},smalltalk.ClassBuilder)})},
-messageSends: ["comment:", "comment", "do:", "values", "methodDictionary", "install:forClass:category:", "new", "source", "category", "basicClass:instanceVariables:", "class", "instanceVariableNames", "setupClass:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createPackageNamed:",
-fn: function (aString){
-var self=this;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Package())._named_ifAbsent_(aString,(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Smalltalk())._current())._createPackage_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"createPackageNamed:",{aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["named:ifAbsent:", "createPackage:", "current"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "installMethod:forClass:category:",
-fn: function (aCompiledMethod,aBehavior,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(aCompiledMethod)._category_(aString);
-_st(aBehavior)._addCompiledMethod_(aCompiledMethod);
-self._setupClass_(aBehavior);
-$1=aCompiledMethod;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"installMethod:forClass:category:",{aCompiledMethod:aCompiledMethod,aBehavior:aBehavior,aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["category:", "addCompiledMethod:", "setupClass:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instanceVariableNamesFor:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aString)._tokenize_(" "))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._isEmpty();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["reject:", "tokenize:", "isEmpty"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "migrateClass:superclass:",
-fn: function (aClass,anotherClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._migrateClassNamed_superclass_instanceVariableNames_package_(_st(aClass)._name(),anotherClass,_st(aClass)._instanceVariableNames(),_st(_st(aClass)._package())._name());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"migrateClass:superclass:",{aClass:aClass,anotherClass:anotherClass},smalltalk.ClassBuilder)})},
-messageSends: ["migrateClassNamed:superclass:instanceVariableNames:package:", "name", "instanceVariableNames", "package"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
-fn: function (className,aClass,aCollection,packageName){
-var self=this;
-var oldClass,newClass,tmp;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassMigrated(){return smalltalk.ClassMigrated||(typeof ClassMigrated=="undefined"?nil:ClassMigrated)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7;
-tmp="new*".__comma(className);
-oldClass=_st(_st($Smalltalk())._current())._at_(className);
-newClass=self._addSubclassOf_named_instanceVariableNames_package_(aClass,tmp,aCollection,packageName);
-self._basicSwapClassNames_with_(oldClass,newClass);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._copyClass_to_(oldClass,newClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(exception){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-_st($1)._basicSwapClassNames_with_(oldClass,newClass);
-$2=_st($1)._basicRemoveClass_(newClass);
-$2;
-return _st(exception)._signal();
-}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,2)})}));
-$3=self;
-_st($3)._rawRenameClass_to_(oldClass,tmp);
-$4=_st($3)._rawRenameClass_to_(newClass,className);
-_st(_st(oldClass)._subclasses())._do_displayingProgress_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._migrateClass_superclass_(each,newClass);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}),_st("Recompiling ".__comma(_st(newClass)._name())).__comma("..."));
-self._basicRemoveClass_(oldClass);
-$5=_st($ClassMigrated())._new();
-_st($5)._theClass_(newClass);
-_st($5)._oldClass_(oldClass);
-$6=_st($5)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($6);
-$7=newClass;
-return $7;
-}, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp},smalltalk.ClassBuilder)})},
-messageSends: [",", "at:", "current", "addSubclassOf:named:instanceVariableNames:package:", "basicSwapClassNames:with:", "on:do:", "copyClass:to:", "basicRemoveClass:", "signal", "rawRenameClass:to:", "do:displayingProgress:", "subclasses", "migrateClass:superclass:", "name", "announce:", "theClass:", "new", "oldClass:", "yourself"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rawRenameClass:to:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		smalltalk[aString] = aClass;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"rawRenameClass:to:",{aClass:aClass,aString:aString},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameClass:to:",
-fn: function (aClass,className){
-var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._basicRenameClass_to_(aClass,className);
-_st(aClass)._recompile();
-$1=_st($ClassRenamed())._new();
-_st($1)._theClass_(aClass);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className},smalltalk.ClassBuilder)})},
-messageSends: ["basicRenameClass:to:", "recompile", "announce:", "current", "theClass:", "new", "yourself"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.init(aClass);;
-return self}, function($ctx1) {$ctx1.fill(self,"setupClass:",{aClass:aClass},smalltalk.ClassBuilder)})},
-messageSends: []}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superclass:subclass:",
-fn: function (aClass,className){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._superclass_subclass_instanceVariableNames_package_(aClass,className,"",nil);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"superclass:subclass:",{aClass:aClass,className:className},smalltalk.ClassBuilder)})},
-messageSends: ["superclass:subclass:instanceVariableNames:package:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "superclass:subclass:instanceVariableNames:package:",
-fn: function (aClass,className,ivarNames,packageName){
-var self=this;
-var newClass;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$6,$5,$7,$8,$9;
-$1=self;
-$2=aClass;
-$3=className;
-$4=self._instanceVariableNamesFor_(ivarNames);
-$6=packageName;
-if(($receiver = $6) == nil || $receiver == undefined){
-$5="unclassified";
-} else {
-$5=$6;
-};
-newClass=_st($1)._addSubclassOf_named_instanceVariableNames_package_($2,$3,$4,$5);
-self._setupClass_(newClass);
-$7=_st($ClassAdded())._new();
-_st($7)._theClass_(newClass);
-$8=_st($7)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($8);
-$9=newClass;
-return $9;
-}, function($ctx1) {$ctx1.fill(self,"superclass:subclass:instanceVariableNames:package:",{aClass:aClass,className:className,ivarNames:ivarNames,packageName:packageName,newClass:newClass},smalltalk.ClassBuilder)})},
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"]}),
-smalltalk.ClassBuilder);
-
-
-
-smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category'], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "class:category:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@class"]=aClass;
-self["@category"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"class:category:",{aClass:aClass,aString:aString},smalltalk.ClassCategoryReader)})},
-messageSends: []}),
-smalltalk.ClassCategoryReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethod:",
-fn: function (aString){
-var self=this;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($Compiler())._new())._install_forClass_category_(aString,self["@class"],self["@category"]);
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString},smalltalk.ClassCategoryReader)})},
-messageSends: ["install:forClass:category:", "new"]}),
-smalltalk.ClassCategoryReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ClassCategoryReader.superclass.fn.prototype._initialize.apply(_st(self), []);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ClassCategoryReader)})},
-messageSends: ["initialize"]}),
-smalltalk.ClassCategoryReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scanFrom:",
-fn: function (aChunkParser){
-var self=this;
-var chunk;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-chunk=_st(aChunkParser)._nextChunk();
-chunk;
-return _st(chunk)._isEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._compileMethod_(chunk);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(_st($ClassBuilder())._new())._setupClass_(self["@class"]);
-return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},smalltalk.ClassCategoryReader)})},
-messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:", "setupClass:", "new"]}),
-smalltalk.ClassCategoryReader);
-
-
-
-smalltalk.addClass('ClassCommentReader', smalltalk.Object, ['class'], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "class:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@class"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"class:",{aClass:aClass},smalltalk.ClassCommentReader)})},
-messageSends: []}),
-smalltalk.ClassCommentReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ClassCommentReader.superclass.fn.prototype._initialize.apply(_st(self), []);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ClassCommentReader)})},
-messageSends: ["initialize"]}),
-smalltalk.ClassCommentReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "scanFrom:",
-fn: function (aChunkParser){
-var self=this;
-var chunk;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-chunk=_st(aChunkParser)._nextChunk();
-$1=_st(chunk)._isEmpty();
-if(! smalltalk.assert($1)){
-self._setComment_(chunk);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},smalltalk.ClassCommentReader)})},
-messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"]}),
-smalltalk.ClassCommentReader);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setComment:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@class"])._comment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"setComment:",{aString:aString},smalltalk.ClassCommentReader)})},
-messageSends: ["comment:"]}),
-smalltalk.ClassCommentReader);
-
-
-
-smalltalk.addClass('ClassSorterNode', smalltalk.Object, ['theClass', 'level', 'nodes'], 'Kernel-Classes');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "getNodesFrom:",
-fn: function (aCollection){
-var self=this;
-var children,others;
-function $ClassSorterNode(){return smalltalk.ClassSorterNode||(typeof ClassSorterNode=="undefined"?nil:ClassSorterNode)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-children=[];
-others=[];
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(each)._superclass()).__eq(self._theClass());
-if(smalltalk.assert($1)){
-return _st(children)._add_(each);
-} else {
-return _st(others)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self["@nodes"]=_st(children)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st($ClassSorterNode())._on_classes_level_(each,others,_st(self._level()).__plus((1)));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},smalltalk.ClassSorterNode)})},
-messageSends: ["do:", "ifTrue:ifFalse:", "=", "superclass", "theClass", "add:", "collect:", "on:classes:level:", "+", "level"]}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "level",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@level"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"level",{},smalltalk.ClassSorterNode)})},
-messageSends: []}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "level:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@level"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"level:",{anInteger:anInteger},smalltalk.ClassSorterNode)})},
-messageSends: []}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nodes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@nodes"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.ClassSorterNode)})},
-messageSends: []}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassSorterNode)})},
-messageSends: []}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=aClass;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass},smalltalk.ClassSorterNode)})},
-messageSends: []}),
-smalltalk.ClassSorterNode);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "traverseClassesWith:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aCollection)._add_(self._theClass());
-_st(_st(self._nodes())._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._do_((function(aNode){
-return smalltalk.withContext(function($ctx2) {
-return _st(aNode)._traverseClassesWith_(aCollection);
-}, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:",{aCollection:aCollection},smalltalk.ClassSorterNode)})},
-messageSends: ["add:", "theClass", "do:", "sorted:", "nodes", "<=", "name", "traverseClassesWith:"]}),
-smalltalk.ClassSorterNode);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:classes:level:",
-fn: function (aClass,aCollection,anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._theClass_(aClass);
-_st($2)._level_(anInteger);
-_st($2)._getNodesFrom_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:classes:level:",{aClass:aClass,aCollection:aCollection,anInteger:anInteger},smalltalk.ClassSorterNode.klass)})},
-messageSends: ["theClass:", "new", "level:", "getNodesFrom:", "yourself"]}),
-smalltalk.ClassSorterNode.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 197 - 105
js/Kernel-Classes.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Classes", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Classes');
+smalltalk.packages["Kernel-Classes"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel-Classes');
 smalltalk.Behavior.comment="I am the superclass of all class objects.\x0a\x0aI define the protocol for creating instances of a class with `#basicNew` and `#new` (see `boot.js` for class constructors details).\x0a\x0aMy instances know about the subclass/superclass relationships between classes, contain the description that instances are created from,\x0aand hold the method dictionary that's associated with each class.\x0a\x0aI also provides methods for compiling methods, examining the method dictionary, and iterating over the class hierarchy.";
@@ -36,7 +37,7 @@ var $1,$2,$3,$4,$5,$6;
 oldMethod=_st(self._methodDictionary())._at_ifAbsent_(_st(aMethod)._selector(),(function(){
 return smalltalk.withContext(function($ctx2) {
 return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st(self._protocols())._includes_(_st(aMethod)._protocol());
 if(! smalltalk.assert($1)){
 _st(self._organization())._addElement_(_st(aMethod)._protocol());
@@ -59,7 +60,7 @@ _st(_st($SystemAnnouncer())._current())._announce_(announcement);
 return self}, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement},smalltalk.Behavior)})},
 args: ["aMethod"],
 source: "addCompiledMethod: aMethod\x0a\x09| oldMethod announcement |\x0a\x09\x0a\x09oldMethod := self methodDictionary\x0a\x09\x09at: aMethod selector\x0a\x09\x09ifAbsent: [ nil ].\x0a\x09\x0a\x09(self protocols includes: aMethod protocol)\x0a\x09\x09ifFalse: [ self organization addElement: aMethod protocol ].\x0a\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09announcement := oldMethod\x0a\x09\x09ifNil: [\x0a\x09\x09\x09MethodAdded new\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09MethodModified new\x0a\x09\x09\x09\x09\x09oldMethod: oldMethod;\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ].\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09\x09\x09announce: announcement",
-messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "ifFalse:", "includes:", "protocols", "protocol", "addElement:", "organization", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"],
+messageSends: ["at:ifAbsent:", "selector", "methodDictionary", "ifFalse:", "addElement:", "protocol", "organization", "includes:", "protocols", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"],
 referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"]
 }),
 smalltalk.Behavior);
@@ -85,7 +86,7 @@ return $2;
 }, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{result:result},smalltalk.Behavior)})},
 args: [],
 source: "allInstanceVariableNames\x0a\x09| result |\x0a\x09result := self instanceVariableNames copy.\x0a\x09self superclass ifNotNil: [\x0a\x09\x09result addAll: self superclass allInstanceVariableNames].\x0a\x09^result",
-messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"],
+messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "addAll:", "allInstanceVariableNames", "superclass"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -98,18 +99,18 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$1;
-$1=_st(self._allSuperclasses())._inject_into_(self._selectors(),(function(soFar,aBehavior){
+$1=_st(self._allSuperclasses())._inject_into_(self._selectors(),(function(acc,each){
 return smalltalk.withContext(function($ctx2) {
-$2=soFar;
-_st($2)._addAll_(_st(aBehavior)._selectors());
+$2=acc;
+_st($2)._addAll_(_st(each)._selectors());
 $3=_st($2)._yourself();
 return $3;
-}, function($ctx2) {$ctx2.fillBlock({soFar:soFar,aBehavior:aBehavior},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.Behavior)})},
 args: [],
-source: "allSelectors\x0a\x09^self allSuperclasses\x0a\x09\x09inject: self selectors\x0a\x09\x09into: [ :soFar :aBehavior | soFar addAll: aBehavior selectors; yourself ]",
-messageSends: ["inject:into:", "allSuperclasses", "selectors", "addAll:", "yourself"],
+source: "allSelectors\x0a\x09^ self allSuperclasses\x0a\x09\x09inject: self selectors\x0a\x09\x09into: [ :acc :each | acc addAll: each selectors; yourself ]",
+messageSends: ["inject:into:", "selectors", "addAll:", "yourself", "allSuperclasses"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -120,20 +121,26 @@ selector: "allSubclasses",
 category: 'accessing',
 fn: function (){
 var self=this;
-var result;
+var subclasses,index;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-result=self._subclasses();
-_st(self._subclasses())._do_((function(each){
+subclasses=self._subclasses();
+index=(1);
+_st((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(index).__gt(_st(subclasses)._size());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(result)._addAll_(_st(each)._allSubclasses());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=result;
+_st(subclasses)._addAll_(_st(_st(subclasses)._at_(index))._subclasses());
+index=_st(index).__plus((1));
+return index;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$1=subclasses;
 return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSubclasses",{result:result},smalltalk.Behavior)})},
+}, function($ctx1) {$ctx1.fill(self,"allSubclasses",{subclasses:subclasses,index:index},smalltalk.Behavior)})},
 args: [],
-source: "allSubclasses\x0a\x09| result |\x0a\x09result := self subclasses.\x0a\x09self subclasses do: [:each |\x0a\x09\x09result addAll: each allSubclasses].\x0a\x09^result",
-messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"],
+source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09| subclasses index |\x0a\x09\x0a\x09subclasses := self subclasses.\x0a\x09index := 1.\x0a\x09[ index > subclasses size ]\x0a\x09\x09whileFalse: [ subclasses addAll: (subclasses at: index) subclasses.\x0a\x09\x09\x09index := index + 1 ].\x0a\x0a\x09^ subclasses",
+messageSends: ["subclasses", "whileFalse:", "addAll:", "at:", "+", ">", "size"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -145,15 +152,14 @@ category: 'enumerating',
 fn: function (aBlock){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(self._subclasses())._do_((function(each){
+_st(self._allSubclasses())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(each);
-return _st(each)._allSubclassesDo_(aBlock);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+return _st(aBlock)._value_(each);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock},smalltalk.Behavior)})},
 args: ["aBlock"],
-source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a\x09self subclasses do: [ :each |\x0a    \x09aBlock value: each.\x0a        each allSubclassesDo: aBlock ].",
-messageSends: ["do:", "subclasses", "value:", "allSubclassesDo:"],
+source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a\x09self allSubclasses do: [ :each |\x0a    \x09aBlock value: each ]",
+messageSends: ["do:", "value:", "allSubclasses"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -182,7 +188,7 @@ return $3;
 }, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{},smalltalk.Behavior)})},
 args: [],
 source: "allSuperclasses\x0a\x09\x0a\x09self superclass ifNil: [ ^ #() ].\x0a\x09\x0a\x09^ (OrderedCollection with: self superclass)\x0a\x09\x09addAll: self superclass allSuperclasses;\x0a\x09\x09yourself",
-messageSends: ["ifNil:", "superclass", "addAll:", "with:", "allSuperclasses", "yourself"],
+messageSends: ["ifNil:", "superclass", "addAll:", "allSuperclasses", "with:", "yourself"],
 referencedClasses: ["OrderedCollection"]
 }),
 smalltalk.Behavior);
@@ -248,13 +254,13 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(self._superclass())._notNil())._and_((function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(self._superclass())._canUnderstand_(aSelector);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector},smalltalk.Behavior)})},
 args: ["aSelector"],
 source: "canUnderstand: aSelector\x0a\x09^(self methodDictionary keys includes: aSelector asString) or: [\x0a\x09\x09self superclass notNil and: [self superclass canUnderstand: aSelector]]",
-messageSends: ["or:", "includes:", "keys", "methodDictionary", "asString", "and:", "notNil", "superclass", "canUnderstand:"],
+messageSends: ["or:", "and:", "canUnderstand:", "superclass", "notNil", "includes:", "asString", "keys", "methodDictionary"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -288,8 +294,8 @@ selector: "comment:",
 category: 'accessing',
 fn: function (aString){
 var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassCommentChanged(){return smalltalk.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 self._basicAt_put_("comment",aString);
@@ -300,8 +306,8 @@ _st(_st($SystemAnnouncer())._current())._announce_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString},smalltalk.Behavior)})},
 args: ["aString"],
 source: "comment: aString\x0a\x09self basicAt: 'comment' put: aString.\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassCommentChanged new\x0a\x09\x09\x09theClass: self;\x0a\x09\x09\x09yourself)",
-messageSends: ["basicAt:put:", "announce:", "current", "theClass:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassCommentChanged"]
+messageSends: ["basicAt:put:", "announce:", "theClass:", "new", "yourself", "current"],
+referencedClasses: ["ClassCommentChanged", "SystemAnnouncer"]
 }),
 smalltalk.Behavior);
 
@@ -409,12 +415,12 @@ var $1;
 $1=_st(self.__eq_eq(aClass))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._inheritsFrom_(aClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"includesBehavior:",{aClass:aClass},smalltalk.Behavior)})},
 args: ["aClass"],
 source: "includesBehavior: aClass\x0a\x09^ self == aClass or: [\x0a\x09\x09\x09self inheritsFrom: aClass ]",
-messageSends: ["or:", "==", "inheritsFrom:"],
+messageSends: ["or:", "inheritsFrom:", "=="],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -454,12 +460,12 @@ $1;
 $2=_st(_st(aClass).__eq_eq(self._superclass()))._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._superclass())._inheritsFrom_(aClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass},smalltalk.Behavior)})},
 args: ["aClass"],
 source: "inheritsFrom: aClass\x0a\x09self superclass ifNil: [ ^ false ].\x0a\x0a\x09^ aClass == self superclass or: [ \x0a\x09\x09self superclass inheritsFrom: aClass ]",
-messageSends: ["ifNil:", "superclass", "or:", "==", "inheritsFrom:"],
+messageSends: ["ifNil:", "superclass", "or:", "inheritsFrom:", "=="],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -511,7 +517,7 @@ lookupClass=self;
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(lookupClass).__eq(nil);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
 $1=_st(lookupClass)._includesSelector_(selector);
 if(smalltalk.assert($1)){
@@ -520,14 +526,14 @@ throw $early=[$2];
 };
 lookupClass=_st(lookupClass)._superclass();
 return lookupClass;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return nil;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector,lookupClass:lookupClass},smalltalk.Behavior)})},
 args: ["selector"],
 source: "lookupSelector: selector\x0a\x09\x22Look up the given selector in my methodDictionary.\x0a\x09Return the corresponding method if found.\x0a\x09Otherwise chase the superclass chain and try again.\x0a\x09Return nil if no method is found.\x22\x0a\x09\x0a\x09| lookupClass |\x0a\x09\x0a\x09lookupClass := self.\x0a\x09[ lookupClass = nil ] whileFalse: [\x0a\x09\x09(lookupClass includesSelector: selector)\x0a\x09\x09\x09\x09ifTrue: [ ^ lookupClass methodAt: selector ].\x0a\x09\x09\x09lookupClass := lookupClass superclass ].\x0a\x09^ nil",
-messageSends: ["whileFalse:", "=", "ifTrue:", "includesSelector:", "methodAt:", "superclass"],
+messageSends: ["whileFalse:", "ifTrue:", "methodAt:", "includesSelector:", "superclass", "="],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -642,12 +648,12 @@ var $1;
 $1=_st(_st(self._methodDictionary())._values())._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString},smalltalk.Behavior)})},
 args: ["aString"],
 source: "methodsInProtocol: aString\x0a\x09^ self methodDictionary values select: [ :each | each protocol = aString ]",
-messageSends: ["select:", "values", "methodDictionary", "=", "protocol"],
+messageSends: ["select:", "=", "protocol", "values", "methodDictionary"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -704,6 +710,52 @@ referencedClasses: []
 }),
 smalltalk.Behavior);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "ownMethods",
+category: 'accessing',
+fn: function (){
+var self=this;
+function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(self._ownProtocols())._inject_into_(_st($OrderedCollection())._new(),(function(acc,each){
+return smalltalk.withContext(function($ctx2) {
+return _st(acc).__comma(self._methodsInProtocol_(each));
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})})))._sorted_((function(a,b){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(a)._selector()).__lt_eq(_st(b)._selector());
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"ownMethods",{},smalltalk.Behavior)})},
+args: [],
+source: "ownMethods\x0a\x09\x22Answer the methods of the receiver that are not package extensions\x22\x0a\x0a\x09^ (self ownProtocols \x0a\x09\x09inject: OrderedCollection new\x0a\x09\x09into: [ :acc :each | acc, (self methodsInProtocol: each) ])\x0a\x09\x09\x09sorted: [ :a :b | a selector <= b selector ]",
+messageSends: ["sorted:", "<=", "selector", "inject:into:", "new", ",", "methodsInProtocol:", "ownProtocols"],
+referencedClasses: ["OrderedCollection"]
+}),
+smalltalk.Behavior);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "ownProtocols",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self._protocols())._reject_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._match_("^\x5c*");
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"ownProtocols",{},smalltalk.Behavior)})},
+args: [],
+source: "ownProtocols\x0a\x09\x22Answer the protocols of the receiver that are not package extensions\x22\x0a\x0a\x09^ self protocols reject: [ :each |\x0a\x09\x09each match: '^\x5c*' ]",
+messageSends: ["reject:", "match:", "protocols"],
+referencedClasses: []
+}),
+smalltalk.Behavior);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "protocols",
@@ -738,16 +790,16 @@ return smalltalk.withContext(function($ctx2) {
 return _st(_st(methodsByCategory)._at_ifAbsentPut_(_st(m)._category(),(function(){
 return smalltalk.withContext(function($ctx3) {
 return _st($Array())._new();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._add_(m);
-}, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1,1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})})))._add_(m);
+}, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1)})}));
 _st(self._protocols())._do_((function(category){
 return smalltalk.withContext(function($ctx2) {
 return _st(aBlock)._value_value_(category,_st(methodsByCategory)._at_(category));
-}, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByCategory:methodsByCategory},smalltalk.Behavior)})},
 args: ["aBlock"],
 source: "protocolsDo: aBlock\x0a\x09\x22Execute aBlock for each method category with\x0a\x09its collection of methods in the sort order of category name.\x22\x0a\x0a\x09| methodsByCategory |\x0a\x09methodsByCategory := HashedCollection new.\x0a\x09self methodDictionary values do: [:m |\x0a\x09\x09(methodsByCategory at: m category ifAbsentPut: [Array new])\x0a\x09\x09\x09add: m].\x0a\x09self protocols do: [:category |\x0a\x09\x09aBlock value: category value: (methodsByCategory at: category)]",
-messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"],
+messageSends: ["new", "do:", "add:", "at:ifAbsentPut:", "category", "values", "methodDictionary", "value:value:", "at:", "protocols"],
 referencedClasses: ["HashedCollection", "Array"]
 }),
 smalltalk.Behavior);
@@ -793,18 +845,18 @@ selector: "removeCompiledMethod:",
 category: 'compiling',
 fn: function (aMethod){
 var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $MethodRemoved(){return smalltalk.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 self._basicRemoveCompiledMethod_(aMethod);
 _st(self._methods())._detect_ifNone_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._protocol()).__eq(_st(aMethod)._protocol());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._organization())._removeElement_(_st(aMethod)._protocol());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 $1=_st($MethodRemoved())._new();
 _st($1)._method_(aMethod);
 $2=_st($1)._yourself();
@@ -812,8 +864,8 @@ _st(_st($SystemAnnouncer())._current())._announce_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod},smalltalk.Behavior)})},
 args: ["aMethod"],
 source: "removeCompiledMethod: aMethod\x0a\x09self basicRemoveCompiledMethod: aMethod.\x0a\x09\x0a\x09self methods\x0a\x09\x09detect: [ :each | each protocol = aMethod protocol ]\x0a\x09\x09ifNone: [ self organization removeElement: aMethod protocol ].\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (MethodRemoved new\x0a\x09\x09\x09method: aMethod;\x0a\x09\x09\x09yourself)",
-messageSends: ["basicRemoveCompiledMethod:", "detect:ifNone:", "methods", "=", "protocol", "removeElement:", "organization", "announce:", "current", "method:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "MethodRemoved"]
+messageSends: ["basicRemoveCompiledMethod:", "detect:ifNone:", "=", "protocol", "removeElement:", "organization", "methods", "announce:", "method:", "new", "yourself", "current"],
+referencedClasses: ["MethodRemoved", "SystemAnnouncer"]
 }),
 smalltalk.Behavior);
 
@@ -842,11 +894,11 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-return smalltalk.subclasses(self);
+self._subclassResponsibility();
 return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Behavior)})},
 args: [],
-source: "subclasses\x0a\x09<return smalltalk.subclasses(self)>",
-messageSends: [],
+source: "subclasses\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -920,7 +972,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{},smalltalk.Behavior)})},
 args: [],
 source: "withAllSubclasses\x0a\x09^(Array with: self) addAll: self allSubclasses; yourself",
-messageSends: ["addAll:", "with:", "allSubclasses", "yourself"],
+messageSends: ["addAll:", "allSubclasses", "with:", "yourself"],
 referencedClasses: ["Array"]
 }),
 smalltalk.Behavior);
@@ -965,7 +1017,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.Class)})},
 args: [],
 source: "category\x0a\x09^self package ifNil: ['Unclassified'] ifNotNil: [self package name]",
-messageSends: ["ifNil:ifNotNil:", "package", "name"],
+messageSends: ["ifNil:ifNotNil:", "name", "package"],
 referencedClasses: []
 }),
 smalltalk.Class);
@@ -991,22 +1043,22 @@ $3;
 _st(self._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
 return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}),(function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
 $4=stream;
 _st($4)._nextPutAll_(_st("'".__comma(_st($String())._lf())).__comma(_st($String())._tab()));
 _st($4)._nextPutAll_("package: '");
 _st($4)._nextPutAll_(self._category());
 $5=_st($4)._nextPutAll_("'");
 return $5;
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Class)})},
 args: [],
 source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: self superclass asString;\x0a\x09\x09\x09nextPutAll: ' subclass: #';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: '''', String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self category;\x0a\x09\x09\x09nextPutAll: '''' ]",
-messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category"],
+messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "tab", "lf", "do:separatedBy:", "instanceVariableNames", "category"],
 referencedClasses: ["String"]
 }),
 smalltalk.Class);
@@ -1052,8 +1104,8 @@ category: 'accessing',
 fn: function (aPackage){
 var self=this;
 var oldPackage;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassMoved(){return smalltalk.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3,$4;
 $1=_st(self._package()).__eq(aPackage);
@@ -1073,8 +1125,8 @@ _st(_st($SystemAnnouncer())._current())._announce_($4);
 return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage},smalltalk.Class)})},
 args: ["aPackage"],
 source: "package: aPackage\x0a\x09| oldPackage |\x0a\x09\x0a\x09self package = aPackage ifTrue: [ ^ self ].\x0a\x09\x0a\x09oldPackage := self package.\x0a\x09\x0a\x09self basicAt: 'pkg' put: aPackage.\x0a\x09oldPackage organization removeElement: self.\x0a\x09aPackage organization addElement: self.\x0a\x0a\x09SystemAnnouncer current announce: (ClassMoved new\x0a\x09\x09theClass: self;\x0a\x09\x09oldPackage: oldPackage;\x0a\x09\x09yourself)",
-messageSends: ["ifTrue:", "=", "package", "basicAt:put:", "removeElement:", "organization", "addElement:", "announce:", "current", "theClass:", "new", "oldPackage:", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassMoved"]
+messageSends: ["ifTrue:", "=", "package", "basicAt:put:", "removeElement:", "organization", "addElement:", "announce:", "theClass:", "new", "oldPackage:", "yourself", "current"],
+referencedClasses: ["ClassMoved", "SystemAnnouncer"]
 }),
 smalltalk.Class);
 
@@ -1180,11 +1232,27 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3},smalltalk.Class)})},
 args: ["aString", "aString2", "aString3"],
 source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09^ClassBuilder new\x0a\x09\x09superclass: self subclass: aString asString instanceVariableNames: aString2 package: aString3",
-messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"],
+messageSends: ["superclass:subclass:instanceVariableNames:package:", "asString", "new"],
 referencedClasses: ["ClassBuilder"]
 }),
 smalltalk.Class);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "subclasses",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.subclasses._copy();
+return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Class)})},
+args: [],
+source: "subclasses\x0a\x09<return self.subclasses._copy()>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Class);
+
 
 
 smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel-Classes');
@@ -1225,12 +1293,12 @@ $3;
 _st(self._instanceVariableNames())._do_separatedBy_((function(each){
 return smalltalk.withContext(function($ctx3) {
 return _st(stream)._nextPutAll_(each);
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}),(function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
 return _st(stream)._nextPutAll_("'");
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Metaclass)})},
 args: [],
@@ -1308,6 +1376,30 @@ referencedClasses: []
 }),
 smalltalk.Metaclass);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "subclasses",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(_st(_st(self._instanceClass())._subclasses())._select_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(each)._isMetaclass())._not();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._collect_((function(each){
+return smalltalk.withContext(function($ctx2) {
+return _st(each)._theMetaClass();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Metaclass)})},
+args: [],
+source: "subclasses\x0a\x09^ (self instanceClass subclasses \x0a\x09\x09select: [ :each | each isMetaclass not ])\x0a\x09\x09collect: [ :each | each theMetaClass ]",
+messageSends: ["collect:", "theMetaClass", "select:", "not", "isMetaclass", "subclasses", "instanceClass"],
+referencedClasses: []
+}),
+smalltalk.Metaclass);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "theMetaClass",
@@ -1376,7 +1468,7 @@ return $4;
 }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,theClass:theClass,thePackage:thePackage},smalltalk.ClassBuilder)})},
 args: ["aClass", "className", "aCollection", "packageName"],
 source: "addSubclassOf: aClass named: className instanceVariableNames: aCollection package: packageName\x0a\x09| theClass thePackage |\x0a\x09\x0a\x09theClass := Smalltalk current at: className.\x0a\x09thePackage := self createPackageNamed: packageName.\x0a\x09\x0a\x09theClass ifNotNil: [\x0a\x09\x09theClass package: thePackage.\x0a\x09\x09theClass superclass == aClass ifFalse: [\x0a\x09\x09\x09^ self\x0a\x09\x09\x09\x09migrateClassNamed: className\x0a\x09\x09\x09\x09superclass: aClass\x0a\x09\x09\x09\x09instanceVariableNames: aCollection\x0a\x09\x09\x09\x09package: packageName ] ].\x0a\x09\x09\x0a\x09^ self\x0a\x09\x09basicAddSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName",
-messageSends: ["at:", "current", "createPackageNamed:", "ifNotNil:", "package:", "ifFalse:", "==", "superclass", "migrateClassNamed:superclass:instanceVariableNames:package:", "basicAddSubclassOf:named:instanceVariableNames:package:"],
+messageSends: ["at:", "current", "createPackageNamed:", "ifNotNil:", "package:", "ifFalse:", "migrateClassNamed:superclass:instanceVariableNames:package:", "==", "superclass", "basicAddSubclassOf:named:instanceVariableNames:package:"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.ClassBuilder);
@@ -1432,7 +1524,7 @@ _st(aClass)._basicAt_put_("iVarNames",aCollection);
 return self}, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariables:",{aClass:aClass,aCollection:aCollection},smalltalk.ClassBuilder)})},
 args: ["aClass", "aCollection"],
 source: "basicClass: aClass instanceVariables: aCollection\x0a\x0a\x09aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].\x0a\x09aClass basicAt: 'iVarNames' put: aCollection",
-messageSends: ["ifFalse:", "isMetaclass", "error:", ",", "name", "basicAt:put:"],
+messageSends: ["ifFalse:", "error:", ",", "name", "isMetaclass", "basicAt:put:"],
 referencedClasses: []
 }),
 smalltalk.ClassBuilder);
@@ -1499,8 +1591,8 @@ selector: "class:instanceVariableNames:",
 category: 'class definition',
 fn: function (aClass,ivarNames){
 var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassDefinitionChanged(){return smalltalk.ClassDefinitionChanged||(typeof ClassDefinitionChanged=="undefined"?nil:ClassDefinitionChanged)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 self._basicClass_instanceVariableNames_(aClass,ivarNames);
@@ -1512,8 +1604,8 @@ _st(_st($SystemAnnouncer())._current())._announce_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"class:instanceVariableNames:",{aClass:aClass,ivarNames:ivarNames},smalltalk.ClassBuilder)})},
 args: ["aClass", "ivarNames"],
 source: "class: aClass instanceVariableNames: ivarNames\x0a\x09self basicClass: aClass instanceVariableNames: ivarNames.\x0a\x09self setupClass: aClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassDefinitionChanged new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
-messageSends: ["basicClass:instanceVariableNames:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassDefinitionChanged"]
+messageSends: ["basicClass:instanceVariableNames:", "setupClass:", "announce:", "theClass:", "new", "yourself", "current"],
+referencedClasses: ["ClassDefinitionChanged", "SystemAnnouncer"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1524,8 +1616,8 @@ category: 'copying',
 fn: function (aClass,className){
 var self=this;
 var newClass;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3;
 newClass=self._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),className,_st(aClass)._instanceVariableNames(),_st(_st(aClass)._package())._name());
@@ -1539,8 +1631,8 @@ return $3;
 }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass},smalltalk.ClassBuilder)})},
 args: ["aClass", "className"],
 source: "copyClass: aClass named: className\x0a\x09| newClass |\x0a\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: className\x0a\x09\x09instanceVariableNames: aClass instanceVariableNames\x0a\x09\x09package: aClass package name.\x0a\x0a\x09self copyClass: aClass to: newClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^newClass",
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "copyClass:to:", "announce:", "current", "theClass:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassAdded"]
+messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "copyClass:to:", "announce:", "theClass:", "new", "yourself", "current"],
+referencedClasses: ["ClassAdded", "SystemAnnouncer"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1556,17 +1648,17 @@ _st(anotherClass)._comment_(_st(aClass)._comment());
 _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st($Compiler())._new())._install_forClass_category_(_st(each)._source(),anotherClass,_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 self._basicClass_instanceVariables_(_st(anotherClass)._class(),_st(_st(aClass)._class())._instanceVariableNames());
 _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st($Compiler())._new())._install_forClass_category_(_st(each)._source(),_st(anotherClass)._class(),_st(each)._category());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 self._setupClass_(anotherClass);
 return self}, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass},smalltalk.ClassBuilder)})},
 args: ["aClass", "anotherClass"],
 source: "copyClass: aClass to: anotherClass\x0a\x0a\x09anotherClass comment: aClass comment.\x0a\x0a\x09aClass methodDictionary values do: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass category: each category ].\x0a\x0a\x09self basicClass: anotherClass class instanceVariables: aClass class instanceVariableNames.\x0a\x0a\x09aClass class methodDictionary values do: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass class category: each category ].\x0a\x0a\x09self setupClass: anotherClass",
-messageSends: ["comment:", "comment", "do:", "values", "methodDictionary", "install:forClass:category:", "new", "source", "category", "basicClass:instanceVariables:", "class", "instanceVariableNames", "setupClass:"],
+messageSends: ["comment:", "comment", "do:", "install:forClass:category:", "source", "category", "new", "values", "methodDictionary", "basicClass:instanceVariables:", "class", "instanceVariableNames", "setupClass:"],
 referencedClasses: ["Compiler"]
 }),
 smalltalk.ClassBuilder);
@@ -1577,20 +1669,20 @@ selector: "createPackageNamed:",
 category: 'private',
 fn: function (aString){
 var self=this;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
 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;
 $1=_st($Package())._named_ifAbsent_(aString,(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st($Smalltalk())._current())._createPackage_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"createPackageNamed:",{aString:aString},smalltalk.ClassBuilder)})},
 args: ["aString"],
 source: "createPackageNamed: aString\x0a\x09^ Package named: aString ifAbsent: [\x0a\x09\x09Smalltalk current createPackage: aString ]",
 messageSends: ["named:ifAbsent:", "createPackage:", "current"],
-referencedClasses: ["Package", "Smalltalk"]
+referencedClasses: ["Smalltalk", "Package"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1626,12 +1718,12 @@ var $1;
 $1=_st(_st(aString)._tokenize_(" "))._reject_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._isEmpty();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aString:aString},smalltalk.ClassBuilder)})},
 args: ["aString"],
 source: "instanceVariableNamesFor: aString\x0a\x09^(aString tokenize: ' ') reject: [ :each | each isEmpty ]",
-messageSends: ["reject:", "tokenize:", "isEmpty"],
+messageSends: ["reject:", "isEmpty", "tokenize:"],
 referencedClasses: []
 }),
 smalltalk.ClassBuilder);
@@ -1663,8 +1755,8 @@ var self=this;
 var oldClass,newClass,tmp;
 function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassMigrated(){return smalltalk.ClassMigrated||(typeof ClassMigrated=="undefined"?nil:ClassMigrated)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3,$4,$5,$6,$7;
 tmp="new*".__comma(className);
@@ -1674,21 +1766,21 @@ self._basicSwapClassNames_with_(oldClass,newClass);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._copyClass_to_(oldClass,newClass);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(exception){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(exception){
 return smalltalk.withContext(function($ctx2) {
 $1=self;
 _st($1)._basicSwapClassNames_with_(oldClass,newClass);
 $2=_st($1)._basicRemoveClass_(newClass);
 $2;
 return _st(exception)._signal();
-}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1)})}));
 $3=self;
 _st($3)._rawRenameClass_to_(oldClass,tmp);
 $4=_st($3)._rawRenameClass_to_(newClass,className);
 _st(_st(oldClass)._subclasses())._do_displayingProgress_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return self._migrateClass_superclass_(each,newClass);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}),_st("Recompiling ".__comma(_st(newClass)._name())).__comma("..."));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),_st("Recompiling ".__comma(_st(newClass)._name())).__comma("..."));
 self._basicRemoveClass_(oldClass);
 $5=_st($ClassMigrated())._new();
 _st($5)._theClass_(newClass);
@@ -1700,8 +1792,8 @@ return $7;
 }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp},smalltalk.ClassBuilder)})},
 args: ["className", "aClass", "aCollection", "packageName"],
 source: "migrateClassNamed: className superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09| oldClass newClass tmp |\x0a\x09\x0a\x09tmp := 'new*', className.\x0a\x09oldClass := Smalltalk current at: className.\x0a\x09\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: tmp\x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09self basicSwapClassNames: oldClass with: newClass.\x0a\x0a\x09[ self copyClass: oldClass to: newClass ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :exception |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09basicSwapClassNames: oldClass with: newClass;\x0a\x09\x09\x09\x09basicRemoveClass: newClass.\x0a\x09\x09\x09exception signal ].\x0a\x0a\x09self\x0a\x09\x09rawRenameClass: oldClass to: tmp;\x0a\x09\x09rawRenameClass: newClass to: className.\x0a\x0a\x09oldClass subclasses \x0a\x09\x09do: [ :each | self migrateClass: each superclass: newClass ]\x0a\x09\x09displayingProgress: 'Recompiling ', newClass name, '...'.\x0a\x0a\x09self basicRemoveClass: oldClass.\x0a\x09\x0a\x09SystemAnnouncer current announce: (ClassMigrated new\x0a\x09\x09theClass: newClass;\x0a\x09\x09oldClass: oldClass;\x0a\x09\x09yourself).\x0a\x09\x0a\x09^newClass",
-messageSends: [",", "at:", "current", "addSubclassOf:named:instanceVariableNames:package:", "basicSwapClassNames:with:", "on:do:", "copyClass:to:", "basicRemoveClass:", "signal", "rawRenameClass:to:", "do:displayingProgress:", "subclasses", "migrateClass:superclass:", "name", "announce:", "theClass:", "new", "oldClass:", "yourself"],
-referencedClasses: ["Smalltalk", "Error", "SystemAnnouncer", "ClassMigrated"]
+messageSends: [",", "at:", "current", "addSubclassOf:named:instanceVariableNames:package:", "basicSwapClassNames:with:", "on:do:", "basicRemoveClass:", "signal", "copyClass:to:", "rawRenameClass:to:", "do:displayingProgress:", "migrateClass:superclass:", "name", "subclasses", "announce:", "theClass:", "new", "oldClass:", "yourself"],
+referencedClasses: ["Smalltalk", "Error", "ClassMigrated", "SystemAnnouncer"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1729,8 +1821,8 @@ selector: "renameClass:to:",
 category: 'class migration',
 fn: function (aClass,className){
 var self=this;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassRenamed(){return smalltalk.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 self._basicRenameClass_to_(aClass,className);
@@ -1742,8 +1834,8 @@ _st(_st($SystemAnnouncer())._current())._announce_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className},smalltalk.ClassBuilder)})},
 args: ["aClass", "className"],
 source: "renameClass: aClass to: className\x0a\x09self basicRenameClass: aClass to: className.\x0a\x09\x0a\x09\x22Recompile the class to fix potential issues with super sends\x22\x0a\x09aClass recompile.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassRenamed new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
-messageSends: ["basicRenameClass:to:", "recompile", "announce:", "current", "theClass:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassRenamed"]
+messageSends: ["basicRenameClass:to:", "recompile", "announce:", "theClass:", "new", "yourself", "current"],
+referencedClasses: ["ClassRenamed", "SystemAnnouncer"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1788,8 +1880,8 @@ category: 'class definition',
 fn: function (aClass,className,ivarNames,packageName){
 var self=this;
 var newClass;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 function $ClassAdded(){return smalltalk.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
+function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3,$4,$6,$5,$7,$8,$9;
 $1=self;
@@ -1813,8 +1905,8 @@ return $9;
 }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:instanceVariableNames:package:",{aClass:aClass,className:className,ivarNames:ivarNames,packageName:packageName,newClass:newClass},smalltalk.ClassBuilder)})},
 args: ["aClass", "className", "ivarNames", "packageName"],
 source: "superclass: aClass subclass: className instanceVariableNames: ivarNames package: packageName\x0a\x09| newClass |\x0a\x09\x0a\x09newClass := self addSubclassOf: aClass\x0a\x09\x09named: className instanceVariableNames: (self instanceVariableNamesFor: ivarNames)\x0a\x09\x09package: (packageName ifNil: ['unclassified']).\x0a\x09self setupClass: newClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^newClass",
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"],
-referencedClasses: ["SystemAnnouncer", "ClassAdded"]
+messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "theClass:", "new", "yourself", "current"],
+referencedClasses: ["ClassAdded", "SystemAnnouncer"]
 }),
 smalltalk.ClassBuilder);
 
@@ -1886,15 +1978,15 @@ return smalltalk.withContext(function($ctx2) {
 chunk=_st(aChunkParser)._nextChunk();
 chunk;
 return _st(chunk)._isEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._compileMethod_(chunk);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 _st(_st($ClassBuilder())._new())._setupClass_(self["@class"]);
 return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},smalltalk.ClassCategoryReader)})},
 args: ["aChunkParser"],
 source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty] whileFalse: [\x0a\x09\x09self compileMethod: chunk].\x0a\x09ClassBuilder new setupClass: class",
-messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:", "setupClass:", "new"],
+messageSends: ["whileFalse:", "compileMethod:", "nextChunk", "isEmpty", "setupClass:", "new"],
 referencedClasses: ["ClassBuilder"]
 }),
 smalltalk.ClassCategoryReader);
@@ -1952,7 +2044,7 @@ self._setComment_(chunk);
 return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},smalltalk.ClassCommentReader)})},
 args: ["aChunkParser"],
 source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ifFalse: [\x0a\x09\x09self setComment: chunk].",
-messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"],
+messageSends: ["nextChunk", "ifFalse:", "setComment:", "isEmpty"],
 referencedClasses: []
 }),
 smalltalk.ClassCommentReader);
@@ -1997,15 +2089,15 @@ return _st(children)._add_(each);
 } else {
 return _st(others)._add_(each);
 };
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 self["@nodes"]=_st(children)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st($ClassSorterNode())._on_classes_level_(each,others,_st(self._level()).__plus((1)));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},smalltalk.ClassSorterNode)})},
 args: ["aCollection"],
 source: "getNodesFrom: aCollection\x0a\x09| children others |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09aCollection do: [:each |\x0a\x09\x09(each superclass = self theClass)\x0a\x09\x09\x09ifTrue: [children add: each]\x0a\x09\x09\x09ifFalse: [others add: each]].\x0a\x09nodes:= children collect: [:each |\x0a\x09\x09ClassSorterNode on: each classes: others level: self level + 1]",
-messageSends: ["do:", "ifTrue:ifFalse:", "=", "superclass", "theClass", "add:", "collect:", "on:classes:level:", "+", "level"],
+messageSends: ["do:", "ifTrue:ifFalse:", "add:", "=", "theClass", "superclass", "collect:", "on:classes:level:", "+", "level"],
 referencedClasses: ["ClassSorterNode"]
 }),
 smalltalk.ClassSorterNode);
@@ -2107,14 +2199,14 @@ _st(aCollection)._add_(self._theClass());
 _st(_st(self._nodes())._sorted_((function(a,b){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)})})))._do_((function(aNode){
+}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(aNode){
 return smalltalk.withContext(function($ctx2) {
 return _st(aNode)._traverseClassesWith_(aCollection);
-}, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:",{aCollection:aCollection},smalltalk.ClassSorterNode)})},
 args: ["aCollection"],
 source: "traverseClassesWith: aCollection\x0a\x09\x22sort classes alphabetically Issue #143\x22\x0a\x0a\x09aCollection add: self theClass.\x0a\x09(self nodes sorted: [:a :b | a theClass name <= b theClass name ]) do: [:aNode |\x0a\x09\x09aNode traverseClassesWith: aCollection ].",
-messageSends: ["add:", "theClass", "do:", "sorted:", "nodes", "<=", "name", "traverseClassesWith:"],
+messageSends: ["add:", "theClass", "do:", "traverseClassesWith:", "sorted:", "<=", "name", "nodes"],
 referencedClasses: []
 }),
 smalltalk.ClassSorterNode);
@@ -2143,4 +2235,4 @@ referencedClasses: []
 }),
 smalltalk.ClassSorterNode.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 4301
js/Kernel-Collections.deploy.js

@@ -1,4301 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Collections');
-
-smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (anAssociation){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._class()).__eq(_st(anAssociation)._class()))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._key()).__eq(_st(anAssociation)._key()))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self._value()).__eq(_st(anAssociation)._value());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"=",{anAssociation:anAssociation},smalltalk.Association)})},
-messageSends: ["and:", "=", "class", "key", "value"]}),
-smalltalk.Association);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@key"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"key",{},smalltalk.Association)})},
-messageSends: []}),
-smalltalk.Association);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@key"]=aKey;
-return self}, function($ctx1) {$ctx1.fill(self,"key:",{aKey:aKey},smalltalk.Association)})},
-messageSends: []}),
-smalltalk.Association);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._key())._printOn_(aStream);
-_st(aStream)._nextPutAll_(" -> ");
-_st(self._value())._printOn_(aStream);
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Association)})},
-messageSends: ["printOn:", "key", "nextPutAll:", "value"]}),
-smalltalk.Association);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@value"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.Association)})},
-messageSends: []}),
-smalltalk.Association);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (aValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@value"]=aValue;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{aValue:aValue},smalltalk.Association)})},
-messageSends: []}),
-smalltalk.Association);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "key:value:",
-fn: function (aKey,aValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._key_(aKey);
-_st($2)._value_(aValue);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"key:value:",{aKey:aKey,aValue:aValue},smalltalk.Association.klass)})},
-messageSends: ["key:", "new", "value:", "yourself"]}),
-smalltalk.Association.klass);
-
-
-smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: ",",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._copy();
-_st($2)._addAll_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,",",{aCollection:aCollection},smalltalk.Collection)})},
-messageSends: ["addAll:", "copy", "yourself"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},smalltalk.Collection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=aCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection},smalltalk.Collection)})},
-messageSends: ["do:", "add:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asArray",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Array())._withAll_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asArray",{},smalltalk.Collection)})},
-messageSends: ["withAll:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._asArray())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._asJSON();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Collection)})},
-messageSends: ["collect:", "asArray", "asJSON"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asOrderedCollection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._asArray();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asOrderedCollection",{},smalltalk.Collection)})},
-messageSends: ["asArray"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSet",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Set())._withAll_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asSet",{},smalltalk.Collection)})},
-messageSends: ["withAll:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collect:",
-fn: function (aBlock){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-stream=_st(_st(self._class())._new())._writeStream();
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPut_(_st(aBlock)._value_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=_st(stream)._contents();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,stream:stream},smalltalk.Collection)})},
-messageSends: ["writeStream", "new", "class", "do:", "nextPut:", "value:", "contents"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contains:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(aBlock)._value_(each);
-if(smalltalk.assert($1)){
-throw $early=[true];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return false;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"contains:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["do:", "ifTrue:", "value:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyWith:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._copy();
-_st($2)._add_(anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copyWith:",{anObject:anObject},smalltalk.Collection)})},
-messageSends: ["add:", "copy", "yourself"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyWithAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._copy();
-_st($2)._addAll_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copyWithAll:",{aCollection:aCollection},smalltalk.Collection)})},
-messageSends: ["addAll:", "copy", "yourself"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyWithoutAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aCollection)._includes_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:",{aCollection:aCollection},smalltalk.Collection)})},
-messageSends: ["reject:", "includes:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "detect:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._detect_ifNone_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._errorNotFound();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"detect:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["detect:ifNone:", "errorNotFound"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "detect:ifNone:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Collection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:separatedBy:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-var actionBeforeElement;
-return smalltalk.withContext(function($ctx1) { 
-actionBeforeElement=(function(){
-return smalltalk.withContext(function($ctx2) {
-actionBeforeElement=anotherBlock;
-return actionBeforeElement;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-_st(actionBeforeElement)._value();
-return _st(aBlock)._value_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"do:separatedBy:",{aBlock:aBlock,anotherBlock:anotherBlock,actionBeforeElement:actionBeforeElement},smalltalk.Collection)})},
-messageSends: ["do:", "value", "value:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorNotFound",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("Object is not in the collection");
-return self}, function($ctx1) {$ctx1.fill(self,"errorNotFound",{},smalltalk.Collection)})},
-messageSends: ["error:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifEmpty:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isEmpty();
-if(smalltalk.assert($2)){
-$1=_st(aBlock)._value();
-} else {
-$1=self;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifEmpty:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["ifTrue:ifFalse:", "isEmpty", "value"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotEmpty:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._notEmpty();
-_st($1)._ifTrue_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["ifTrue:", "notEmpty"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includes:",
-fn: function (anObject){
-var self=this;
-var sentinel;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-sentinel=_st($Object())._new();
-$1=_st(self._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(anObject);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return sentinel;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))).__tild_eq(sentinel);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject,sentinel:sentinel},smalltalk.Collection)})},
-messageSends: ["new", "~=", "detect:ifNone:", "="]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inject:into:",
-fn: function (anObject,aBlock){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-result=anObject;
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-result=_st(aBlock)._value_value_(result,each);
-return result;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inject:into:",{anObject:anObject,aBlock:aBlock,result:result},smalltalk.Collection)})},
-messageSends: ["do:", "value:value:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "intersection:",
-fn: function (aCollection){
-var self=this;
-var set,outputSet;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-set=self._asSet();
-outputSet=_st($Set())._new();
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(set)._includes_(each))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(outputSet)._includes_(each))._not();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-if(smalltalk.assert($1)){
-return _st(outputSet)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=_st(self._class())._withAll_(_st(outputSet)._asArray());
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"intersection:",{aCollection:aCollection,set:set,outputSet:outputSet},smalltalk.Collection)})},
-messageSends: ["asSet", "new", "do:", "ifTrue:", "and:", "includes:", "not", "add:", "withAll:", "class", "asArray"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isEmpty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._size()).__eq((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isEmpty",{},smalltalk.Collection)})},
-messageSends: ["=", "size"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "notEmpty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isEmpty())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"notEmpty",{},smalltalk.Collection)})},
-messageSends: ["not", "isEmpty"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "occurrencesOf:",
-fn: function (anObject){
-var self=this;
-var tally;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-tally=(0);
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(anObject).__eq(each);
-if(smalltalk.assert($1)){
-tally=_st(tally).__plus((1));
-return tally;
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=tally;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"occurrencesOf:",{anObject:anObject,tally:tally},smalltalk.Collection)})},
-messageSends: ["do:", "ifTrue:", "=", "+"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "putOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._putOn_(aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},smalltalk.Collection)})},
-messageSends: ["do:", "putOn:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reject:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(aBlock)._value_(each)).__eq(false);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["select:", "=", "value:"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._remove_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._errorNotFound();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject},smalltalk.Collection)})},
-messageSends: ["remove:ifAbsent:", "errorNotFound"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.Collection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "select:",
-fn: function (aBlock){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-stream=_st(_st(self._class())._new())._writeStream();
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(aBlock)._value_(each);
-if(smalltalk.assert($1)){
-return _st(stream)._nextPut_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=_st(stream)._contents();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,stream:stream},smalltalk.Collection)})},
-messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.Collection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.Collection);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "collection";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Collection.klass)})},
-messageSends: []}),
-smalltalk.Collection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger},smalltalk.Collection.klass)})},
-messageSends: ["new"]}),
-smalltalk.Collection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._add_(anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},smalltalk.Collection.klass)})},
-messageSends: ["add:", "new", "yourself"]}),
-smalltalk.Collection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:with:",
-fn: function (anObject,anotherObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._add_(anObject);
-_st($2)._add_(anotherObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anotherObject:anotherObject},smalltalk.Collection.klass)})},
-messageSends: ["add:", "new", "yourself"]}),
-smalltalk.Collection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:with:with:",
-fn: function (firstObject,secondObject,thirdObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._add_(firstObject);
-_st($2)._add_(secondObject);
-_st($2)._add_(thirdObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:with:with:",{firstObject:firstObject,secondObject:secondObject,thirdObject:thirdObject},smalltalk.Collection.klass)})},
-messageSends: ["add:", "new", "yourself"]}),
-smalltalk.Collection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._addAll_(aCollection);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection},smalltalk.Collection.klass)})},
-messageSends: ["addAll:", "new", "yourself"]}),
-smalltalk.Collection.klass);
-
-
-smalltalk.addClass('IndexableCollection', smalltalk.Collection, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:",
-fn: function (anIndex){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_ifAbsent_(anIndex,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._errorNotFound();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:",{anIndex:anIndex},smalltalk.IndexableCollection)})},
-messageSends: ["at:ifAbsent:", "errorNotFound"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (anIndex,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassReponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},smalltalk.IndexableCollection)})},
-messageSends: ["subclassReponsibility"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:",
-fn: function (anIndex,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_ifPresent_ifAbsent_(anIndex,aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{anIndex:anIndex,aBlock:aBlock},smalltalk.IndexableCollection)})},
-messageSends: ["at:ifPresent:ifAbsent:"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:ifAbsent:",
-fn: function (anIndex,aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.IndexableCollection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (anIndex,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassReponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},smalltalk.IndexableCollection)})},
-messageSends: ["subclassReponsibility"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._indexOf_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._errorNotFound();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"indexOf:",{anObject:anObject},smalltalk.IndexableCollection)})},
-messageSends: ["indexOf:ifAbsent:", "errorNotFound"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.IndexableCollection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:do:",
-fn: function (anotherCollection,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._withIndexDo_((function(each,index){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_value_(each,_st(anotherCollection)._at_(index));
-}, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock},smalltalk.IndexableCollection)})},
-messageSends: ["withIndexDo:", "value:value:", "at:"]}),
-smalltalk.IndexableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withIndexDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassReponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},smalltalk.IndexableCollection)})},
-messageSends: ["subclassReponsibility"]}),
-smalltalk.IndexableCollection);
-
-
-
-smalltalk.addClass('HashedCollection', smalltalk.IndexableCollection, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: ",",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,",",{aCollection:aCollection},smalltalk.HashedCollection)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aHashedCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._class()).__eq(_st(aHashedCollection)._class());
-if(! smalltalk.assert($1)){
-return false;
-};
-$2=_st(self._size()).__eq(_st(aHashedCollection)._size());
-if(! smalltalk.assert($2)){
-return false;
-};
-$3=_st(self._associations()).__eq(_st(aHashedCollection)._associations());
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"=",{aHashedCollection:aHashedCollection},smalltalk.HashedCollection)})},
-messageSends: ["ifFalse:", "=", "class", "size", "associations"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anAssociation){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._at_put_(_st(anAssociation)._key(),_st(anAssociation)._value());
-return self}, function($ctx1) {$ctx1.fill(self,"add:",{anAssociation:anAssociation},smalltalk.HashedCollection)})},
-messageSends: ["at:put:", "key", "value"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addAll:",
-fn: function (aHashedCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-smalltalk.HashedCollection.superclass.fn.prototype._addAll_.apply(_st(self), [_st(aHashedCollection)._associations()]);
-$1=aHashedCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"addAll:",{aHashedCollection:aHashedCollection},smalltalk.HashedCollection)})},
-messageSends: ["addAll:", "associations"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asDictionary",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Dictionary())._from_(self._associations());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asDictionary",{},smalltalk.HashedCollection)})},
-messageSends: ["from:", "associations"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-var c;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-c=_st(self._class())._new();
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(c)._at_put_(key,_st(value)._asJSON());
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$1=c;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{c:c},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "asJSON"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "associations",
-fn: function (){
-var self=this;
-var associations;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-associations=[];
-self._associationsDo_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(associations)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=associations;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"associations",{associations:associations},smalltalk.HashedCollection)})},
-messageSends: ["associationsDo:", "add:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "associationsDo:",
-fn: function (aBlock){
-var self=this;
-function $Association(){return smalltalk.Association||(typeof Association=="undefined"?nil:Association)}
-return smalltalk.withContext(function($ctx1) { 
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(_st($Association())._key_value_(key,value));
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"associationsDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["keysAndValuesDo:", "value:", "key:value:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._includesKey_(aKey);
-$1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._basicAt_(aKey);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["ifTrue:ifFalse:", "includesKey:", "basicAt:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsentPut:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_ifAbsent_(aKey,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._at_put_(aKey,_st(aBlock)._value());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:",{aKey:aKey,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["at:ifAbsent:", "at:put:", "value"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:ifAbsent:",
-fn: function (aKey,aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._includesKey_(aKey);
-$1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(self._at_(aKey));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),anotherBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aKey:aKey,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.HashedCollection)})},
-messageSends: ["ifTrue:ifFalse:", "includesKey:", "value:", "at:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (aKey,aValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_put_(aKey,aValue);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue},smalltalk.HashedCollection)})},
-messageSends: ["basicAt:put:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collect:",
-fn: function (aBlock){
-var self=this;
-var newDict;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-newDict=_st(self._class())._new();
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(newDict)._at_put_(key,_st(aBlock)._value_(value));
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$1=newDict;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,newDict:newDict},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-var copy;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-copy=_st(self._class())._new();
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(copy)._at_put_(key,_st(value)._deepCopy());
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$1=copy;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{copy:copy},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "deepCopy"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "detect:ifNone:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._values())._detect_ifNone_(aBlock,anotherBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.HashedCollection)})},
-messageSends: ["detect:ifNone:", "values"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._valuesDo_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["valuesDo:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includes:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._values())._includes_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},smalltalk.HashedCollection)})},
-messageSends: ["includes:", "values"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesKey:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.hasOwnProperty(aKey);
-return self}, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},smalltalk.HashedCollection)})},
-messageSends: []}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._keys())._detect_ifNone_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._at_(each)).__eq(anObject);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["detect:ifNone:", "keys", "=", "at:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyAtValue:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._keyAtValue_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._errorNotFound();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyAtValue:",{anObject:anObject},smalltalk.HashedCollection)})},
-messageSends: ["keyAtValue:ifAbsent:", "errorNotFound"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keyAtValue:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._indexOf_ifAbsent_(anObject,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keyAtValue:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["indexOf:ifAbsent:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keys",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if ('function'===typeof Object.keys) return Object.keys(self);
-		var keys = [];
-		for(var i in self) {
-			if(self.hasOwnProperty(i)) {
-				keys.push(i);
-			}
-		};
-		return keys;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"keys",{},smalltalk.HashedCollection)})},
-messageSends: []}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keysAndValuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._keysDo_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_value_(each,self._at_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["keysDo:", "value:value:", "at:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keysDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._keys())._do_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["do:", "keys"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.HashedCollection.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-_st(aStream)._nextPutAll_(" (");
-_st(self._associations())._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._printOn_(aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" , ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(aStream)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.HashedCollection)})},
-messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:", "associations"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._removeKey_ifAbsent_(aKey,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["removeKey:ifAbsent:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeKey:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._remove_(aKey);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"removeKey:",{aKey:aKey},smalltalk.HashedCollection)})},
-messageSends: ["remove:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeKey:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._includesKey_(aKey);
-if(smalltalk.assert($2)){
-$1=self._basicDelete_(aKey);
-} else {
-$1=_st(aBlock)._value();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["ifFalse:ifTrue:", "includesKey:", "value", "basicDelete:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "select:",
-fn: function (aBlock){
-var self=this;
-var newDict;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-newDict=_st(self._class())._new();
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(aBlock)._value_(value);
-if(smalltalk.assert($1)){
-return _st(newDict)._at_put_(key,value);
-};
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$2=newDict;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,newDict:newDict},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-var copy;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-copy=_st(self._class())._new();
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(copy)._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-$1=copy;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{copy:copy},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "at:put:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._keys())._size();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.HashedCollection)})},
-messageSends: ["size", "keys"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "values",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._keys())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._at_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.HashedCollection)})},
-messageSends: ["collect:", "keys", "at:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["keysAndValuesDo:", "value:"]}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withIndexDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._keysAndValuesDo_((function(key,value){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_value_(value,key);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["keysAndValuesDo:", "value:value:"]}),
-smalltalk.HashedCollection);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "from:",
-fn: function (aCollection){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-newCollection=self._new();
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"from:",{aCollection:aCollection,newCollection:newCollection},smalltalk.HashedCollection.klass)})},
-messageSends: ["new", "do:", "add:"]}),
-smalltalk.HashedCollection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromPairs:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._from_(aCollection);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromPairs:",{aCollection:aCollection},smalltalk.HashedCollection.klass)})},
-messageSends: ["from:"]}),
-smalltalk.HashedCollection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newFromPairs:",
-fn: function (aCollection){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aCollection)._size())._even();
-if(! smalltalk.assert($1)){
-self._error_("#newFromPairs only accepts arrays of an even length");
-};
-newCollection=self._new();
-_st((1)._to_by_(_st(aCollection)._size(),(2)))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._at_put_(_st(aCollection)._at_(each),_st(aCollection)._at_(_st(each).__plus((1))));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
-$2=newCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"newFromPairs:",{aCollection:aCollection,newCollection:newCollection},smalltalk.HashedCollection.klass)})},
-messageSends: ["ifFalse:", "even", "size", "error:", "new", "do:", "to:by:", "at:put:", "at:", "+"]}),
-smalltalk.HashedCollection.klass);
-
-
-smalltalk.addClass('Dictionary', smalltalk.HashedCollection, ['keys', 'values'], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asHashedCollection",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($HashedCollection())._from_(self._associations());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{},smalltalk.Dictionary)})},
-messageSends: ["from:", "associations"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._asHashedCollection())._asJSON();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Dictionary)})},
-messageSends: ["asJSON", "asHashedCollection"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var index = self._positionOfKey_(aKey);
-		return index >=0 ? self['@values'][index] : aBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.Dictionary)})},
-messageSends: []}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (aKey,aValue){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var index = self._positionOfKey_(aKey);
-		if(index === -1) {
-			var keys = self['@keys'];
-			index = keys.length;
-			keys.push(aKey);
-		}
-
-		return self['@values'][index] = aValue;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue},smalltalk.Dictionary)})},
-messageSends: []}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesKey:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self._positionOfKey_(aKey) >= 0; ;
-return self}, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},smalltalk.Dictionary)})},
-messageSends: []}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-var index;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-index=_st(self["@values"])._indexOf_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-return (0);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=_st(index).__eq((0));
-if(smalltalk.assert($2)){
-$1=_st(aBlock)._value();
-} else {
-$1=_st(self["@keys"])._at_(index);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index},smalltalk.Dictionary)})},
-messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "=", "value", "at:"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Dictionary.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@keys"]=[];
-self["@values"]=[];
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Dictionary)})},
-messageSends: ["initialize"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keys",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@keys"])._copy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keys",{},smalltalk.Dictionary)})},
-messageSends: ["copy"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keysAndValuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@keys"])._with_do_(self["@values"],aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
-messageSends: ["with:do:"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keysDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@keys"])._do_(aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
-messageSends: ["do:"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "positionOfKey:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var keys = self['@keys'];
-		for(var i=0;i<keys.length;i++){
-			if(keys[i].__eq(anObject)) { return i;}
-		}
-		return -1;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"positionOfKey:",{anObject:anObject},smalltalk.Dictionary)})},
-messageSends: []}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeKey:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var index = self._positionOfKey_(aKey);
-		if(index === -1) {
-			return aBlock._value()
-		} else {
-			var keys = self['@keys'], values = self['@values'];
-			var value = values[index], l = keys.length;
-			keys[index] = keys[l-1];
-			keys.pop();
-			values[index] = values[l-1];
-			values.pop();
-			return value;
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.Dictionary)})},
-messageSends: []}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "values",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@values"])._copy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.Dictionary)})},
-messageSends: ["copy"]}),
-smalltalk.Dictionary);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@values"])._do_(aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
-messageSends: ["do:"]}),
-smalltalk.Dictionary);
-
-
-
-smalltalk.addClass('SequenceableCollection', smalltalk.IndexableCollection, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-$1=_st(_st(self._class()).__eq(_st(aCollection)._class()))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._size()).__eq(_st(aCollection)._size());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(! smalltalk.assert($1)){
-return false;
-};
-self._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-$2=_st(_st(aCollection)._at_(i)).__eq(each);
-if(! smalltalk.assert($2)){
-throw $early=[false];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)})}));
-return true;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["ifFalse:", "and:", "=", "class", "size", "withIndexDo:", "at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addLast:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._add_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"addLast:",{anObject:anObject},smalltalk.SequenceableCollection)})},
-messageSends: ["add:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allButFirst",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._copyFrom_to_((2),self._size());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allButFirst",{},smalltalk.SequenceableCollection)})},
-messageSends: ["copyFrom:to:", "size"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allButLast",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._copyFrom_to_((1),_st(self._size()).__minus((1)));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allButLast",{},smalltalk.SequenceableCollection)})},
-messageSends: ["copyFrom:to:", "-", "size"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atRandom",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_(_st(self._size())._atRandom());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atRandom",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:", "atRandom", "size"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyFrom:to:",
-fn: function (anIndex,anotherIndex){
-var self=this;
-var range,newCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-range=_st(anIndex)._to_(anotherIndex);
-newCollection=_st(self._class())._new_(_st(range)._size());
-_st(range)._withIndexDo_((function(each,i){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._at_put_(i,self._at_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)})}));
-$1=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex,range:range,newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["to:", "new:", "class", "size", "withIndexDo:", "at:put:", "at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-newCollection=_st(self._class())._new_(self._size());
-self._withIndexDo_((function(each,index){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._at_put_(index,_st(each)._deepCopy());
-}, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)})}));
-$1=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:", "deepCopy"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "detect:ifNone:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		for(var i = 0; i < self.length; i++)
-			if(aBlock._value_(self[i]))
-				return self[i];
-		return anotherBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-for(var i=0;i<self.length;i++){aBlock._value_(self[i]);};
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:displayingProgress:",
-fn: function (aBlock,aString){
-var self=this;
-function $ProgressHandler(){return smalltalk.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($ProgressHandler())._current())._do_on_displaying_(aBlock,self,aString);
-return self}, function($ctx1) {$ctx1.fill(self,"do:displayingProgress:",{aBlock:aBlock,aString:aString},smalltalk.SequenceableCollection)})},
-messageSends: ["do:on:displaying:", "current"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "first",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_((1));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"first",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "first:",
-fn: function (n){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._copyFrom_to_((1),n);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"first:",{n:n},smalltalk.SequenceableCollection)})},
-messageSends: ["copyFrom:to:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fourth",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_((4));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fourth",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includes:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._indexOf_ifAbsent_(anObject,(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},smalltalk.SequenceableCollection)})},
-messageSends: ["notNil", "indexOf:ifAbsent:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		for(var i=0;i<self.length;i++) {
-			if(self[i].__eq(anObject)) {return i+1}
-		};
-		return aBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:startingAt:",
-fn: function (anObject,start){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
-return smalltalk.withContext(function($ctx2) {
-return (0);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:",{anObject:anObject,start:start},smalltalk.SequenceableCollection)})},
-messageSends: ["indexOf:startingAt:ifAbsent:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "indexOf:startingAt:ifAbsent:",
-fn: function (anObject,start,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		for(var i=start-1;i<self.length;i++){
-			if(self[i].__eq(anObject)) {return i+1}
-		}
-		return aBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "last",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_(self._size());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"last",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:", "size"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newStream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._streamClass())._on_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newStream",{},smalltalk.SequenceableCollection)})},
-messageSends: ["on:", "streamClass"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "readStream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._stream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"readStream",{},smalltalk.SequenceableCollection)})},
-messageSends: ["stream"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeLast",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"removeLast",{},smalltalk.SequenceableCollection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reversed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"reversed",{},smalltalk.SequenceableCollection)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "second",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_((2));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"second",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-newCollection=_st(self._class())._new_(self._size());
-self._withIndexDo_((function(each,index){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._at_put_(index,each);
-}, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)})}));
-$1=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "stream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newStream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"stream",{},smalltalk.SequenceableCollection)})},
-messageSends: ["newStream"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "streamClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._streamClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"streamClass",{},smalltalk.SequenceableCollection)})},
-messageSends: ["streamClass", "class"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "third",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_((3));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"third",{},smalltalk.SequenceableCollection)})},
-messageSends: ["at:"]}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:do:",
-fn: function (anotherCollection,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-for(var i=0;i<self.length;i++){aBlock._value_value_(self[i], anotherCollection[i]);};
-return self}, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withIndexDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-for(var i=0;i<self.length;i++){aBlock._value_value_(self[i], i+1);};
-return self}, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},smalltalk.SequenceableCollection)})},
-messageSends: []}),
-smalltalk.SequenceableCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "writeStream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._stream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"writeStream",{},smalltalk.SequenceableCollection)})},
-messageSends: ["stream"]}),
-smalltalk.SequenceableCollection);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "streamClass",
-fn: function (){
-var self=this;
-function $Stream(){return smalltalk.Stream||(typeof Stream=="undefined"?nil:Stream)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Stream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"streamClass",{},smalltalk.SequenceableCollection.klass)})},
-messageSends: []}),
-smalltalk.SequenceableCollection.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "streamContents:",
-fn: function (aBlock){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-stream=_st(self._streamClass())._on_(self._new());
-_st(aBlock)._value_(stream);
-$1=_st(stream)._contents();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"streamContents:",{aBlock:aBlock,stream:stream},smalltalk.SequenceableCollection.klass)})},
-messageSends: ["on:", "streamClass", "new", "value:", "contents"]}),
-smalltalk.SequenceableCollection.klass);
-
-
-smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.push(anObject); return anObject;;
-return self}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addFirst:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.unshift(anObject); return anObject;;
-return self}, function($ctx1) {$ctx1.fill(self,"addFirst:",{anObject:anObject},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("[".__comma(_st(self._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._asJavascript();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._join_(", "))).__comma("]");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.Array)})},
-messageSends: [",", "join:", "collect:", "asJavascript"]}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (anIndex,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if((anIndex < 1) || (self.length < anIndex)) {return aBlock._value()};
-		return self[anIndex - 1];
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:ifAbsent:",
-fn: function (anIndex,aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return anIndex < 1 || self.length < anIndex ? anotherBlock._value() : aBlock._value_(self[anIndex - 1]);;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (anIndex,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self[anIndex - 1] = anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "join:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.join(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"join:",{aString:aString},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Array.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-_st(aStream)._nextPutAll_(" (");
-self._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._printOn_(aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(aStream)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Array)})},
-messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		for(var i=0;i<self.length;i++) {
-			if(_st(self[i]).__eq(anObject)) {
-				self.splice(i,1);
-				return self;
-			}
-		};
-		aBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeFrom:to:",
-fn: function (aNumber,anotherNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.splice(aNumber -1, anotherNumber - aNumber + 1);
-return self}, function($ctx1) {$ctx1.fill(self,"removeFrom:to:",{aNumber:aNumber,anotherNumber:anotherNumber},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeIndex:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.splice(anInteger - 1, 1);
-return self}, function($ctx1) {$ctx1.fill(self,"removeIndex:",{anInteger:anInteger},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeLast",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.pop();;
-return self}, function($ctx1) {$ctx1.fill(self,"removeLast",{},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reversed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self._copy().reverse();
-return self}, function($ctx1) {$ctx1.fill(self,"reversed",{},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.length;
-return self}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sort",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicPerform_("sort");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sort",{},smalltalk.Array)})},
-messageSends: ["basicPerform:"]}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sort:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		return self.sort(function(a, b) {
-			if(aBlock._value_value_(a,b)) {return -1} else {return 1}
-		})
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"sort:",{aBlock:aBlock},smalltalk.Array)})},
-messageSends: []}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sorted",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._copy())._sort();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sorted",{},smalltalk.Array)})},
-messageSends: ["sort", "copy"]}),
-smalltalk.Array);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sorted:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._copy())._sort_(aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sorted:",{aBlock:aBlock},smalltalk.Array)})},
-messageSends: ["sort:", "copy"]}),
-smalltalk.Array);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return new Array(anInteger);
-return self}, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger},smalltalk.Array.klass)})},
-messageSends: []}),
-smalltalk.Array.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new_((1));
-_st($2)._at_put_((1),anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},smalltalk.Array.klass)})},
-messageSends: ["at:put:", "new:", "yourself"]}),
-smalltalk.Array.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:with:",
-fn: function (anObject,anObject2){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new_((2));
-_st($2)._at_put_((1),anObject);
-_st($2)._at_put_((2),anObject2);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anObject2:anObject2},smalltalk.Array.klass)})},
-messageSends: ["at:put:", "new:", "yourself"]}),
-smalltalk.Array.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "with:with:with:",
-fn: function (anObject,anObject2,anObject3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new_((3));
-_st($2)._at_put_((1),anObject);
-_st($2)._at_put_((2),anObject2);
-_st($2)._at_put_((3),anObject3);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"with:with:with:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.Array.klass)})},
-messageSends: ["at:put:", "new:", "yourself"]}),
-smalltalk.Array.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withAll:",
-fn: function (aCollection){
-var self=this;
-var instance,index;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-index=(1);
-instance=self._new_(_st(aCollection)._size());
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-_st(instance)._at_put_(index,each);
-index=_st(index).__plus((1));
-return index;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=instance;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection,instance:instance,index:index},smalltalk.Array.klass)})},
-messageSends: ["new:", "size", "do:", "at:put:", "+"]}),
-smalltalk.Array.klass);
-
-
-smalltalk.addClass('CharacterArray', smalltalk.SequenceableCollection, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: ",",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._asString()).__comma(_st(aString)._asString());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,",",{aString:aString},smalltalk.CharacterArray)})},
-messageSends: [",", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._errorReadOnly();
-return self}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},smalltalk.CharacterArray)})},
-messageSends: ["errorReadOnly"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asLowercase",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._fromString_(_st(self._asString())._asLowercase());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asLowercase",{},smalltalk.CharacterArray)})},
-messageSends: ["fromString:", "class", "asLowercase", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._asString())._asNumber();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asNumber",{},smalltalk.CharacterArray)})},
-messageSends: ["asNumber", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclassResponsibility();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.CharacterArray)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSymbol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._asString();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asSymbol",{},smalltalk.CharacterArray)})},
-messageSends: ["asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asUppercase",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._fromString_(_st(self._asString())._asUppercase());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asUppercase",{},smalltalk.CharacterArray)})},
-messageSends: ["fromString:", "class", "asUppercase", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (anIndex,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._errorReadOnly();
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},smalltalk.CharacterArray)})},
-messageSends: ["errorReadOnly"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorReadOnly",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("Object is read-only");
-return self}, function($ctx1) {$ctx1.fill(self,"errorReadOnly",{},smalltalk.CharacterArray)})},
-messageSends: ["error:"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._asString())._printOn_(aStream);
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.CharacterArray)})},
-messageSends: ["printOn:", "asString"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "putOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutString_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},smalltalk.CharacterArray)})},
-messageSends: ["nextPutString:"]}),
-smalltalk.CharacterArray);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._errorReadOnly();
-return self}, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.CharacterArray)})},
-messageSends: ["errorReadOnly"]}),
-smalltalk.CharacterArray);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},smalltalk.CharacterArray.klass)})},
-messageSends: ["subclassResponsibility"]}),
-smalltalk.CharacterArray.klass);
-
-
-smalltalk.addClass('String', smalltalk.CharacterArray, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: ",",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self + aString;
-return self}, function($ctx1) {$ctx1.fill(self,",",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(self) < aString._asString();
-return self}, function($ctx1) {$ctx1.fill(self,"<",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<=",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(self) <= aString._asString();
-return self}, function($ctx1) {$ctx1.fill(self,"<=",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(typeof aString === 'undefined') { return false }
-		if(!aString._isString || ! aString._isString()) {
-			return false;
-		}
-		return String(self) === String(aString)
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"=",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "==",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__eq(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"==",{aString:aString},smalltalk.String)})},
-messageSends: ["="]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(self) > aString._asString();
-return self}, function($ctx1) {$ctx1.fill(self,">",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">=",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(self) >= aString._asString();
-return self}, function($ctx1) {$ctx1.fill(self,">=",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)
-			return "\"" + self.replace(/[\x00-\x1f"\\\x7f-\x9f]/g, function(ch){var c=ch.charCodeAt(0);return "\\x"+("0"+c.toString(16)).slice(-2)}) + "\"";
-		else
-			return "\"" + self + "\"";
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asLowercase",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toLowerCase();
-return self}, function($ctx1) {$ctx1.fill(self,"asLowercase",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Number(self);
-return self}, function($ctx1) {$ctx1.fill(self,"asNumber",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asRegexp",
-fn: function (){
-var self=this;
-function $RegularExpression(){return smalltalk.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($RegularExpression())._fromString_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asRegexp",{},smalltalk.String)})},
-messageSends: ["fromString:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSelector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.selector(self);
-return self}, function($ctx1) {$ctx1.fill(self,"asSelector",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSymbol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asSymbol",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asUppercase",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toUpperCase();
-return self}, function($ctx1) {$ctx1.fill(self,"asUppercase",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asciiValue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.charCodeAt(0);;
-return self}, function($ctx1) {$ctx1.fill(self,"asciiValue",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (anIndex,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(self).charAt(anIndex - 1) || aBlock._value();
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:ifAbsent:",
-fn: function (anIndex,aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var result = String(self).charAt(anIndex - 1);
-		return result ? aBlock._value_(result) : anotherBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "charCodeAt:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self.charCodeAt(anInteger - 1) ;
-return self}, function($ctx1) {$ctx1.fill(self,"charCodeAt:",{anInteger:anInteger},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyFrom:to:",
-fn: function (anIndex,anotherIndex){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.substring(anIndex - 1, anotherIndex);
-return self}, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "crlfSanitized",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._lines())._join_(_st($String())._lf());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"crlfSanitized",{},smalltalk.String)})},
-messageSends: ["join:", "lines", "lf"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._shallowCopy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{},smalltalk.String)})},
-messageSends: ["shallowCopy"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-for(var i=0;i<self.length;i++){aBlock._value_(self.charAt(i));};
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "escaped",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return escape(self);
-return self}, function($ctx1) {$ctx1.fill(self,"escaped",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesSubString:",
-fn: function (subString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self.indexOf(subString) != -1 ;
-return self}, function($ctx1) {$ctx1.fill(self,"includesSubString:",{subString:subString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isString",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isVowel",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._size()).__eq((1)))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "aeiou"._includes_(self._asLowercase());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isVowel",{},smalltalk.String)})},
-messageSends: ["and:", "=", "size", "includes:", "asLowercase"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "join:",
-fn: function (aCollection){
-var self=this;
-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(aCollection)._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(_st(each)._asString());
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(self);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"join:",{aCollection:aCollection},smalltalk.String)})},
-messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lineIndicesDo:",
-fn: function (aBlock){
-var self=this;
-var cr,lf,start,sz,nextLF,nextCR;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-var $early={};
-try {
-start=(1);
-sz=self._size();
-cr=_st($String())._cr();
-nextCR=self._indexOf_startingAt_(cr,(1));
-lf=_st($String())._lf();
-nextLF=self._indexOf_startingAt_(lf,(1));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(start).__lt_eq(sz);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(_st(nextLF).__eq((0)))._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(nextCR).__eq((0));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-if(smalltalk.assert($1)){
-_st(aBlock)._value_value_value_(start,sz,sz);
-$2=self;
-throw $early=[$2];
-};
-$3=_st(_st(nextCR).__eq((0)))._or_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st((0).__lt(nextLF))._and_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(nextLF).__lt(nextCR);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-if(smalltalk.assert($3)){
-_st(aBlock)._value_value_value_(start,_st(nextLF).__minus((1)),nextLF);
-start=(1).__plus(nextLF);
-start;
-nextLF=self._indexOf_startingAt_(lf,start);
-return nextLF;
-} else {
-$4=_st((1).__plus(nextCR)).__eq(nextLF);
-if(smalltalk.assert($4)){
-_st(aBlock)._value_value_value_(start,_st(nextCR).__minus((1)),nextLF);
-start=(1).__plus(nextLF);
-start;
-nextCR=self._indexOf_startingAt_(cr,start);
-nextCR;
-nextLF=self._indexOf_startingAt_(lf,start);
-return nextLF;
-} else {
-_st(aBlock)._value_value_value_(start,_st(nextCR).__minus((1)),nextCR);
-start=(1).__plus(nextCR);
-start;
-nextCR=self._indexOf_startingAt_(cr,start);
-return nextCR;
-};
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"lineIndicesDo:",{aBlock:aBlock,cr:cr,lf:lf,start:start,sz:sz,nextLF:nextLF,nextCR:nextCR},smalltalk.String)})},
-messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", "<=", "ifTrue:", "and:", "=", "value:value:value:", "ifTrue:ifFalse:", "or:", "<", "-", "+"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lineNumber:",
-fn: function (anIndex){
-var self=this;
-var lineCount;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-lineCount=(0);
-self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
-return smalltalk.withContext(function($ctx2) {
-lineCount=_st(lineCount).__plus((1));
-$1=_st(lineCount).__eq(anIndex);
-if(smalltalk.assert($1)){
-$2=self._copyFrom_to_(start,endWithoutDelimiters);
-throw $early=[$2];
-};
-}, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)})}));
-return nil;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"lineNumber:",{anIndex:anIndex,lineCount:lineCount},smalltalk.String)})},
-messageSends: ["lineIndicesDo:", "ifTrue:", "=", "+", "copyFrom:to:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lines",
-fn: function (){
-var self=this;
-var lines;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-lines=_st($Array())._new();
-self._linesDo_((function(aLine){
-return smalltalk.withContext(function($ctx2) {
-return _st(lines)._add_(aLine);
-}, function($ctx2) {$ctx2.fillBlock({aLine:aLine},$ctx1,1)})}));
-$1=lines;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"lines",{lines:lines},smalltalk.String)})},
-messageSends: ["new", "linesDo:", "add:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "linesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(self._copyFrom_to_(start,endWithoutDelimiters));
-}, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"linesDo:",{aBlock:aBlock},smalltalk.String)})},
-messageSends: ["lineIndicesDo:", "value:", "copyFrom:to:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "match:",
-fn: function (aRegexp){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.search(aRegexp) != -1;
-return self}, function($ctx1) {$ctx1.fill(self,"match:",{aRegexp:aRegexp},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "matchesOf:",
-fn: function (aRegularExpression){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.match(aRegularExpression);
-return self}, function($ctx1) {$ctx1.fill(self,"matchesOf:",{aRegularExpression:aRegularExpression},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printNl",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-console.log(self);
-return self}, function($ctx1) {$ctx1.fill(self,"printNl",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aStream;
-_st($1)._nextPutAll_("'");
-_st($1)._nextPutAll_(self);
-$2=_st($1)._nextPutAll_("'");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.String)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "replace:with:",
-fn: function (aString,anotherString){
-var self=this;
-function $RegularExpression(){return smalltalk.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._replaceRegexp_with_(_st($RegularExpression())._fromString_flag_(aString,"g"),anotherString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"replace:with:",{aString:aString,anotherString:anotherString},smalltalk.String)})},
-messageSends: ["replaceRegexp:with:", "fromString:flag:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "replaceRegexp:with:",
-fn: function (aRegexp,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.replace(aRegexp, aString);
-return self}, function($ctx1) {$ctx1.fill(self,"replaceRegexp:with:",{aRegexp:aRegexp,aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reversed",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.split("").reverse().join("");
-return self}, function($ctx1) {$ctx1.fill(self,"reversed",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._fromString_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},smalltalk.String)})},
-messageSends: ["fromString:", "class"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.length;
-return self}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subStrings:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._tokenize_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subStrings:",{aString:aString},smalltalk.String)})},
-messageSends: ["tokenize:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tokenize:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.split(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"tokenize:",{aString:aString},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimBoth",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._trimBoth_("\x5cs");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimBoth",{},smalltalk.String)})},
-messageSends: ["trimBoth:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimBoth:",
-fn: function (separators){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._trimLeft_(separators))._trimRight_(separators);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimBoth:",{separators:separators},smalltalk.String)})},
-messageSends: ["trimRight:", "trimLeft:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimLeft",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._trimLeft_("\x5cs");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimLeft",{},smalltalk.String)})},
-messageSends: ["trimLeft:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimLeft:",
-fn: function (separators){
-var self=this;
-function $RegularExpression(){return smalltalk.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._replaceRegexp_with_(_st($RegularExpression())._fromString_flag_(_st("^[".__comma(separators)).__comma("]+"),"g"),"");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimLeft:",{separators:separators},smalltalk.String)})},
-messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimRight",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._trimRight_("\x5cs");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimRight",{},smalltalk.String)})},
-messageSends: ["trimRight:"]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "trimRight:",
-fn: function (separators){
-var self=this;
-function $RegularExpression(){return smalltalk.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._replaceRegexp_with_(_st($RegularExpression())._fromString_flag_(_st("[".__comma(separators)).__comma("]+$"),"g"),"");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"trimRight:",{separators:separators},smalltalk.String)})},
-messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "unescaped",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return unescape(self);
-return self}, function($ctx1) {$ctx1.fill(self,"unescaped",{},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withIndexDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-for(var i=0;i<self.length;i++){aBlock._value_value_(self.charAt(i), i+1);};
-return self}, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},smalltalk.String)})},
-messageSends: []}),
-smalltalk.String);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cr",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return '\r';
-return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "crlf",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return '\r\n';
-return self}, function($ctx1) {$ctx1.fill(self,"crlf",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "esc",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._fromCharCode_((27));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"esc",{},smalltalk.String.klass)})},
-messageSends: ["fromCharCode:"]}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromCharCode:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String.fromCharCode(anInteger);
-return self}, function($ctx1) {$ctx1.fill(self,"fromCharCode:",{anInteger:anInteger},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lf",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return '\n';
-return self}, function($ctx1) {$ctx1.fill(self,"lf",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "random",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (Math.random()*(22/32)+(10/32)).toString(32).slice(2);;
-return self}, function($ctx1) {$ctx1.fill(self,"random",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "randomNotIn:",
-fn: function (aString){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-result=self._random();
-result;
-return _st(aString)._includesSubString_(result);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue();
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"randomNotIn:",{aString:aString,result:result},smalltalk.String.klass)})},
-messageSends: ["whileTrue", "random", "includesSubString:"]}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "space",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return ' ';
-return self}, function($ctx1) {$ctx1.fill(self,"space",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "streamClass",
-fn: function (){
-var self=this;
-function $StringStream(){return smalltalk.StringStream||(typeof StringStream=="undefined"?nil:StringStream)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$StringStream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"streamClass",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tab",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return '\t';
-return self}, function($ctx1) {$ctx1.fill(self,"tab",{},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (aUTFCharCode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return String.fromCharCode(aUTFCharCode);;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{aUTFCharCode:aUTFCharCode},smalltalk.String.klass)})},
-messageSends: []}),
-smalltalk.String.klass);
-
-
-smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-var $early={};
-try {
-$1=_st(self._class()).__eq(_st(aCollection)._class());
-if(! smalltalk.assert($1)){
-return false;
-};
-$2=_st(self._size()).__eq(_st(aCollection)._size());
-if(! smalltalk.assert($2)){
-return false;
-};
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$3=_st(aCollection)._includes_(each);
-if(! smalltalk.assert($3)){
-throw $early=[false];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
-return true;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection},smalltalk.Set)})},
-messageSends: ["ifFalse:", "=", "class", "size", "do:", "includes:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "add:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var found;
-		for(var i=0; i < self['@elements'].length; i++) {
-			if(_st(anObject).__eq(self['@elements'][i])) {
-				found = true;
-				break;
-			}
-		}
-		if(!found) {self['@elements'].push(anObject)}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},smalltalk.Set)})},
-messageSends: []}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asArray",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@elements"])._copy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asArray",{},smalltalk.Set)})},
-messageSends: ["copy"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collect:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._withAll_(_st(self["@elements"])._collect_(aBlock));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock},smalltalk.Set)})},
-messageSends: ["withAll:", "class", "collect:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "detect:ifNone:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@elements"])._detect_ifNone_(aBlock,anotherBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Set)})},
-messageSends: ["detect:ifNone:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@elements"])._do_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.Set)})},
-messageSends: ["do:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includes:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@elements"])._includes_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},smalltalk.Set)})},
-messageSends: ["includes:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Set.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@elements"]=[];
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Set)})},
-messageSends: ["initialize"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Set.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-_st(aStream)._nextPutAll_(" (");
-self._do_separatedBy_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._printOn_(aStream);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st(aStream)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Set)})},
-messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@elements"])._remove_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject},smalltalk.Set)})},
-messageSends: ["remove:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "remove:ifAbsent:",
-fn: function (anObject,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@elements"])._remove_ifAbsent_(anObject,aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.Set)})},
-messageSends: ["remove:ifAbsent:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "select:",
-fn: function (aBlock){
-var self=this;
-var collection;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-collection=_st(self._class())._new();
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(aBlock)._value_(each);
-if(smalltalk.assert($1)){
-return _st(collection)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$2=collection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,collection:collection},smalltalk.Set)})},
-messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]}),
-smalltalk.Set);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@elements"])._size();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.Set)})},
-messageSends: ["size"]}),
-smalltalk.Set);
-
-
-
-smalltalk.addClass('Queue', smalltalk.Object, ['read', 'readIndex', 'write'], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.Queue.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@read"]=_st($OrderedCollection())._new();
-self["@write"]=_st($OrderedCollection())._new();
-self["@readIndex"]=(1);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Queue)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.Queue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._nextIfAbsent_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("Cannot read from empty Queue.");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.Queue)})},
-messageSends: ["nextIfAbsent:", "error:"]}),
-smalltalk.Queue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextIfAbsent:",
-fn: function (aBlock){
-var self=this;
-var result;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-var $early={};
-try {
-result=_st(self["@read"])._at_ifAbsent_(self["@readIndex"],(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self["@write"])._isEmpty();
-if(smalltalk.assert($1)){
-$2=_st(self["@readIndex"]).__gt((1));
-if(smalltalk.assert($2)){
-self["@read"]=[];
-self["@read"];
-self["@readIndex"]=(1);
-self["@readIndex"];
-};
-$3=_st(aBlock)._value();
-throw $early=[$3];
-};
-self["@read"]=self["@write"];
-self["@read"];
-self["@readIndex"]=(1);
-self["@readIndex"];
-self["@write"]=_st($OrderedCollection())._new();
-self["@write"];
-return _st(self["@read"])._first();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(self["@read"])._at_put_(self["@readIndex"],nil);
-self["@readIndex"]=_st(self["@readIndex"]).__plus((1));
-$4=result;
-return $4;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"nextIfAbsent:",{aBlock:aBlock,result:result},smalltalk.Queue)})},
-messageSends: ["at:ifAbsent:", "ifTrue:", "isEmpty", ">", "value", "new", "first", "at:put:", "+"]}),
-smalltalk.Queue);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPut:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@write"])._add_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},smalltalk.Queue)})},
-messageSends: ["add:"]}),
-smalltalk.Queue);
-
-
-
-smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compile:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.compile(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},smalltalk.RegularExpression)})},
-messageSends: []}),
-smalltalk.RegularExpression);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exec:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.exec(aString) || nil;
-return self}, function($ctx1) {$ctx1.fill(self,"exec:",{aString:aString},smalltalk.RegularExpression)})},
-messageSends: []}),
-smalltalk.RegularExpression);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "test:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.test(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"test:",{aString:aString},smalltalk.RegularExpression)})},
-messageSends: []}),
-smalltalk.RegularExpression);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._fromString_flag_(aString,"");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},smalltalk.RegularExpression.klass)})},
-messageSends: ["fromString:flag:"]}),
-smalltalk.RegularExpression.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:flag:",
-fn: function (aString,anotherString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return new RegExp(aString, anotherString);
-return self}, function($ctx1) {$ctx1.fill(self,"fromString:flag:",{aString:aString,anotherString:anotherString},smalltalk.RegularExpression.klass)})},
-messageSends: []}),
-smalltalk.RegularExpression.klass);
-
-
-smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<<",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._write_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"<<",{anObject:anObject},smalltalk.Stream)})},
-messageSends: ["write:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._position()).__eq(self._size());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.Stream)})},
-messageSends: ["=", "position", "size"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atStart",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._position()).__eq((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atStart",{},smalltalk.Stream)})},
-messageSends: ["=", "position"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "close",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"close",{},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@collection"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collection())._copyFrom_to_((1),self._streamSize());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contents",{},smalltalk.Stream)})},
-messageSends: ["copyFrom:to:", "collection", "streamSize"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._atEnd();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(self._next());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.Stream)})},
-messageSends: ["whileFalse:", "atEnd", "value:", "next"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "flush",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"flush",{},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isEmpty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._size()).__eq((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isEmpty",{},smalltalk.Stream)})},
-messageSends: ["=", "size"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._atEnd();
-if(smalltalk.assert($2)){
-$1=nil;
-} else {
-self._position_(_st(self._position()).__plus((1)));
-$1=_st(self["@collection"])._at_(self._position());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.Stream)})},
-messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", "+", "position", "at:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next:",
-fn: function (anInteger){
-var self=this;
-var tempCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-tempCollection=_st(_st(self._collection())._class())._new();
-_st(anInteger)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self._atEnd();
-if(! smalltalk.assert($1)){
-return _st(tempCollection)._add_(self._next());
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=tempCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},smalltalk.Stream)})},
-messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPut:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._position_(_st(self._position()).__plus((1)));
-_st(self._collection())._at_put_(self._position(),anObject);
-self._setStreamSize_(_st(self._streamSize())._max_(self._position()));
-return self}, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},smalltalk.Stream)})},
-messageSends: ["position:", "+", "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutAll:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._nextPut_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aCollection:aCollection},smalltalk.Stream)})},
-messageSends: ["do:", "nextPut:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._nextPut_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},smalltalk.Stream)})},
-messageSends: ["nextPut:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "peek",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._atEnd();
-if(! smalltalk.assert($2)){
-$1=_st(self._collection())._at_(_st(self._position()).__plus((1)));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"peek",{},smalltalk.Stream)})},
-messageSends: ["ifFalse:", "atEnd", "at:", "collection", "+", "position"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "position",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@position"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@position"]=(0);
-$1=self["@position"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"position",{},smalltalk.Stream)})},
-messageSends: ["ifNil:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "position:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@position"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"position:",{anInteger:anInteger},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reset",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._position_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"reset",{},smalltalk.Stream)})},
-messageSends: ["position:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetContents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._reset();
-self._setStreamSize_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"resetContents",{},smalltalk.Stream)})},
-messageSends: ["reset", "setStreamSize:"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setCollection:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@collection"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"setCollection:",{aCollection:aCollection},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setStreamSize:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@streamSize"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"setStreamSize:",{anInteger:anInteger},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setToEnd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._position_(self._size());
-return self}, function($ctx1) {$ctx1.fill(self,"setToEnd",{},smalltalk.Stream)})},
-messageSends: ["position:", "size"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._streamSize();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.Stream)})},
-messageSends: ["streamSize"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "skip:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._position_(_st(_st(self._position()).__plus(anInteger))._min_max_(self._size(),(0)));
-return self}, function($ctx1) {$ctx1.fill(self,"skip:",{anInteger:anInteger},smalltalk.Stream)})},
-messageSends: ["position:", "min:max:", "+", "position", "size"]}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "streamSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@streamSize"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"streamSize",{},smalltalk.Stream)})},
-messageSends: []}),
-smalltalk.Stream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "write:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(anObject)._putOn_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"write:",{anObject:anObject},smalltalk.Stream)})},
-messageSends: ["putOn:"]}),
-smalltalk.Stream);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._setCollection_(aCollection);
-_st($2)._setStreamSize_(_st(aCollection)._size());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.Stream.klass)})},
-messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]}),
-smalltalk.Stream.klass);
-
-
-smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel-Collections');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cr",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._nextPutAll_(_st($String())._cr());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:", "cr"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "crlf",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._nextPutAll_(_st($String())._crlf());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"crlf",{},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:", "crlf"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lf",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._nextPutAll_(_st($String())._lf());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"lf",{},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:", "lf"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next:",
-fn: function (anInteger){
-var self=this;
-var tempCollection;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-tempCollection=_st(_st(self._collection())._class())._new();
-_st(anInteger)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self._atEnd();
-if(! smalltalk.assert($1)){
-tempCollection=_st(tempCollection).__comma(self._next());
-return tempCollection;
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$2=tempCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},smalltalk.StringStream)})},
-messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", ",", "next"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPut:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._nextPutAll_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutAll:",
-fn: function (aString){
-var self=this;
-var pre,post;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._atEnd();
-if(smalltalk.assert($1)){
-self._setCollection_(_st(self._collection()).__comma(aString));
-} else {
-pre=_st(self._collection())._copyFrom_to_((1),self._position());
-pre;
-post=_st(self._collection())._copyFrom_to_(_st(_st(self._position()).__plus((1))).__plus(_st(aString)._size()),_st(self._collection())._size());
-post;
-self._setCollection_(_st(_st(pre).__comma(aString)).__comma(post));
-};
-self._position_(_st(self._position()).__plus(_st(aString)._size()));
-self._setStreamSize_(_st(self._streamSize())._max_(self._position()));
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString,pre:pre,post:post},smalltalk.StringStream)})},
-messageSends: ["ifTrue:ifFalse:", "atEnd", "setCollection:", ",", "collection", "copyFrom:to:", "position", "+", "size", "position:", "setStreamSize:", "max:", "streamSize"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextPutString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._nextPutAll_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "space",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._nextPut_(" ");
-return self}, function($ctx1) {$ctx1.fill(self,"space",{},smalltalk.StringStream)})},
-messageSends: ["nextPut:"]}),
-smalltalk.StringStream);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tab",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._nextPutAll_(_st($String())._tab());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tab",{},smalltalk.StringStream)})},
-messageSends: ["nextPutAll:", "tab"]}),
-smalltalk.StringStream);
-
-
-})(global_smalltalk,global_nil,global__st);

File diff suppressed because it is too large
+ 215 - 140
js/Kernel-Collections.js


+ 0 - 455
js/Kernel-Exceptions.deploy.js

@@ -1,455 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Exceptions');
-
-smalltalk.addClass('Error', smalltalk.Object, ['messageText'], 'Kernel-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.context;
-return self}, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._messageText_("Errorclass: ".__comma(_st(self._class())._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Error)})},
-messageSends: ["messageText:", ",", "name", "class"]}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSmalltalkError",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.smalltalkError === true;
-return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsStack",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.stack;
-return self}, function($ctx1) {$ctx1.fill(self,"jsStack",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@messageText"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@messageText"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"messageText:",{aString:aString},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resignal",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-throw(self);
-return self}, function($ctx1) {$ctx1.fill(self,"resignal",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "signal",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
-return self}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error)})},
-messageSends: []}),
-smalltalk.Error);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "signal:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._messageText_(aString);
-self._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error)})},
-messageSends: ["messageText:", "signal"]}),
-smalltalk.Error);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "exception";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Error.klass)})},
-messageSends: []}),
-smalltalk.Error.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "signal",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._signal();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"signal",{},smalltalk.Error.klass)})},
-messageSends: ["signal", "new"]}),
-smalltalk.Error.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "signal:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._new())._signal_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},smalltalk.Error.klass)})},
-messageSends: ["signal:", "new"]}),
-smalltalk.Error.klass);
-
-
-smalltalk.addClass('JavaScriptException', smalltalk.Error, ['exception'], 'Kernel-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.context = aMethodContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},smalltalk.JavaScriptException)})},
-messageSends: []}),
-smalltalk.JavaScriptException);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exception",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@exception"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"exception",{},smalltalk.JavaScriptException)})},
-messageSends: []}),
-smalltalk.JavaScriptException);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exception:",
-fn: function (anException){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@exception"]=anException;
-return self}, function($ctx1) {$ctx1.fill(self,"exception:",{anException:anException},smalltalk.JavaScriptException)})},
-messageSends: []}),
-smalltalk.JavaScriptException);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return 'JavaScript exception: ' + self["@exception"].toString();
-return self}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.JavaScriptException)})},
-messageSends: []}),
-smalltalk.JavaScriptException);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anException){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._exception_(anException);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException},smalltalk.JavaScriptException.klass)})},
-messageSends: ["exception:", "new", "yourself"]}),
-smalltalk.JavaScriptException.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:context:",
-fn: function (anException,aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._exception_(anException);
-_st($2)._context_(aMethodContext);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext},smalltalk.JavaScriptException.klass)})},
-messageSends: ["exception:", "new", "context:", "yourself"]}),
-smalltalk.JavaScriptException.klass);
-
-
-smalltalk.addClass('MessageNotUnderstood', smalltalk.Error, ['message', 'receiver'], 'Kernel-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@message"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"message",{},smalltalk.MessageNotUnderstood)})},
-messageSends: []}),
-smalltalk.MessageNotUnderstood);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "message:",
-fn: function (aMessage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@message"]=aMessage;
-return self}, function($ctx1) {$ctx1.fill(self,"message:",{aMessage:aMessage},smalltalk.MessageNotUnderstood)})},
-messageSends: []}),
-smalltalk.MessageNotUnderstood);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageText",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(self._receiver())._asString()).__comma(" does not understand #")).__comma(_st(self._message())._selector());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
-messageSends: [",", "asString", "receiver", "selector", "message"]}),
-smalltalk.MessageNotUnderstood);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@receiver"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageNotUnderstood)})},
-messageSends: []}),
-smalltalk.MessageNotUnderstood);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageNotUnderstood)})},
-messageSends: []}),
-smalltalk.MessageNotUnderstood);
-
-
-
-smalltalk.addClass('NonBooleanReceiver', smalltalk.Error, ['object'], 'Kernel-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "object",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@object"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"object",{},smalltalk.NonBooleanReceiver)})},
-messageSends: []}),
-smalltalk.NonBooleanReceiver);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "object:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@object"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"object:",{anObject:anObject},smalltalk.NonBooleanReceiver)})},
-messageSends: []}),
-smalltalk.NonBooleanReceiver);
-
-
-
-smalltalk.addClass('ErrorHandler', smalltalk.Object, [], 'Kernel-Exceptions');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "handleError:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anError)._context();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._logErrorContext_(_st(anError)._context());
-};
-self._logError_(anError);
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.ErrorHandler)})},
-messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"]}),
-smalltalk.ErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "log:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(console)._log_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},smalltalk.ErrorHandler)})},
-messageSends: ["log:"]}),
-smalltalk.ErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "logContext:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aContext)._home();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._logContext_(_st(aContext)._home());
-};
-self._log_(_st(aContext)._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"logContext:",{aContext:aContext},smalltalk.ErrorHandler)})},
-messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"]}),
-smalltalk.ErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "logError:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._log_(_st(anError)._messageText());
-return self}, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},smalltalk.ErrorHandler)})},
-messageSends: ["log:", "messageText"]}),
-smalltalk.ErrorHandler);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "logErrorContext:",
-fn: function (aContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aContext;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-$2=_st(aContext)._home();
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} else {
-self._logContext_(_st(aContext)._home());
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:",{aContext:aContext},smalltalk.ErrorHandler)})},
-messageSends: ["ifNotNil:", "home", "logContext:"]}),
-smalltalk.ErrorHandler);
-
-
-smalltalk.ErrorHandler.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=self._new();
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.ErrorHandler.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ErrorHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._register();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ErrorHandler.klass)})},
-messageSends: ["register"]}),
-smalltalk.ErrorHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register",
-fn: function (){
-var self=this;
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ErrorHandler())._setCurrent_(self._new());
-return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ErrorHandler.klass)})},
-messageSends: ["setCurrent:", "new"]}),
-smalltalk.ErrorHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setCurrent:",
-fn: function (anHandler){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@current"]=anHandler;
-return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ErrorHandler.klass)})},
-messageSends: []}),
-smalltalk.ErrorHandler.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Kernel-Exceptions.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Exceptions", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Exceptions');
+smalltalk.packages["Kernel-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Error', smalltalk.Object, ['messageText'], 'Kernel-Exceptions');
 smalltalk.Error.comment="From the ANSI standard:\x0a\x0aThis protocol describes the behavior of instances of class `Error`.\x0aThese are used to represent error conditions that prevent the normal continuation of processing.\x0aActual error exceptions used by an application may be subclasses of this class.\x0aAs `Error` is explicitly specified to be subclassable, conforming implementations must implement its behavior in a non-fragile manner.";
@@ -627,4 +628,4 @@ referencedClasses: []
 }),
 smalltalk.ErrorHandler.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1779
js/Kernel-Infrastructure.deploy.js

@@ -1,1779 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Infrastructure');
-
-smalltalk.addClass('InspectorHandler', smalltalk.Object, [], 'Kernel-Infrastructure');
-
-smalltalk.InspectorHandler.klass.iVarNames = ['inspector'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._inspector())._inspect_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.InspectorHandler.klass)})},
-messageSends: ["inspect:", "inspector"]}),
-smalltalk.InspectorHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspector",
-fn: function (){
-var self=this;
-function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@inspector"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@inspector"]=$Transcript();
-$1=self["@inspector"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inspector",{},smalltalk.InspectorHandler.klass)})},
-messageSends: ["ifNil:"]}),
-smalltalk.InspectorHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register:",
-fn: function (anInspector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@inspector"]=anInspector;
-return self}, function($ctx1) {$ctx1.fill(self,"register:",{anInspector:anInspector},smalltalk.InspectorHandler.klass)})},
-messageSends: []}),
-smalltalk.InspectorHandler.klass);
-
-
-smalltalk.addClass('InterfacingObject', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ajax:",
-fn: function (anObject){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PlatformInterface())._ajax_(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},smalltalk.InterfacingObject)})},
-messageSends: ["ajax:"]}),
-smalltalk.InterfacingObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alert:",
-fn: function (aString){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PlatformInterface())._alert_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},smalltalk.InterfacingObject)})},
-messageSends: ["alert:"]}),
-smalltalk.InterfacingObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:",
-fn: function (aString){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PlatformInterface())._confirm_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},smalltalk.InterfacingObject)})},
-messageSends: ["confirm:"]}),
-smalltalk.InterfacingObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "prompt:",
-fn: function (aString){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PlatformInterface())._prompt_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},smalltalk.InterfacingObject)})},
-messageSends: ["prompt:"]}),
-smalltalk.InterfacingObject);
-
-
-
-smalltalk.addClass('Environment', smalltalk.InterfacingObject, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addInstVarNamed:to:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st(_st(aClass)._instanceVariableNames())._copy();
-_st($1)._add_(aString);
-$2=_st($1)._yourself();
-_st(self._classBuilder())._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),_st(aClass)._name(),$2,_st(_st(aClass)._package())._name());
-return self}, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass},smalltalk.Environment)})},
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package", "classBuilder"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSelectors",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._at_("allSelectors"))._value();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.Environment)})},
-messageSends: ["value", "at:", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableClassNames",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},smalltalk.Environment)})},
-messageSends: ["collect:", "name", "classes", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availablePackageNames",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._packages())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._name();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},smalltalk.Environment)})},
-messageSends: ["collect:", "name", "packages", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "availableProtocolsFor:",
-fn: function (aClass){
-var self=this;
-var protocols;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-protocols=_st(aClass)._protocols();
-$1=_st(aClass)._superclass();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(protocols)._addAll_(self._availableProtocolsFor_(_st(aClass)._superclass()));
-};
-$2=_st(_st(protocols)._asSet())._asArray();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols},smalltalk.Environment)})},
-messageSends: ["protocols", "ifNotNil:", "addAll:", "availableProtocolsFor:", "superclass", "asArray", "asSet"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classBuilder",
-fn: function (){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($ClassBuilder())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classBuilder",{},smalltalk.Environment)})},
-messageSends: ["new"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classNamed:",
-fn: function (aString){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(_st($Smalltalk())._current())._at_(_st(aString)._asSymbol());
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._error_("Invalid class name");
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},smalltalk.Environment)})},
-messageSends: ["ifNil:", "error:", "at:", "asSymbol", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classes",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._classes();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Environment)})},
-messageSends: ["classes", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "commitPackage:",
-fn: function (aPackage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aPackage)._commit();
-return self}, function($ctx1) {$ctx1.fill(self,"commitPackage:",{aPackage:aPackage},smalltalk.Environment)})},
-messageSends: ["commit"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassComment:for:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aClass)._comment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass},smalltalk.Environment)})},
-messageSends: ["comment:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileClassDefinition:",
-fn: function (aString){
-var self=this;
-function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
-return smalltalk.withContext(function($ctx1) { 
-self._eval_on_(aString,_st($DoIt())._new());
-return self}, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString},smalltalk.Environment)})},
-messageSends: ["eval:on:", "new"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compileMethod:for:protocol:",
-fn: function (sourceCode,class_,protocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(class_)._compile_category_(sourceCode,protocol);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol},smalltalk.Environment)})},
-messageSends: ["compile:category:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClass:to:",
-fn: function (aClass,aClassName){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._at_(aClassName);
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._error_(_st("A class named ".__comma(aClassName)).__comma(" already exists"));
-};
-_st(_st($ClassBuilder())._new())._copyClass_named_(aClass,aClassName);
-return self}, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,aClassName:aClassName},smalltalk.Environment)})},
-messageSends: ["ifNotNil:", "error:", ",", "at:", "current", "copyClass:named:", "new"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "eval:on:",
-fn: function (aString,aReceiver){
-var self=this;
-var compiler;
-function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-var $early={};
-try {
-compiler=_st($Compiler())._new();
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(compiler)._parseExpression_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-$1=self._alert_(_st(ex)._messageText());
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-$2=_st(compiler)._evaluateExpression_on_(aString,aReceiver);
-return $2;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"eval:on:",{aString:aString,aReceiver:aReceiver,compiler:compiler},smalltalk.Environment)})},
-messageSends: ["new", "on:do:", "alert:", "messageText", "parseExpression:", "evaluateExpression:on:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "evaluate:on:do:",
-fn: function (aBlock,anErrorClass,exceptionBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._try_catch_(aBlock,(function(exception){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(exception)._isKindOf_(self._classNamed_(_st(anErrorClass)._name()));
-if(smalltalk.assert($1)){
-return _st(exceptionBlock)._value_(exception);
-} else {
-return _st(exception)._signal();
-};
-}, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"evaluate:on:do:",{aBlock:aBlock,anErrorClass:anErrorClass,exceptionBlock:exceptionBlock},smalltalk.Environment)})},
-messageSends: ["try:catch:", "ifTrue:ifFalse:", "value:", "signal", "isKindOf:", "classNamed:", "name"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-function $InspectorHandler(){return smalltalk.InspectorHandler||(typeof InspectorHandler=="undefined"?nil:InspectorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($InspectorHandler())._inspector())._inspect_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.Environment)})},
-messageSends: ["inspect:", "inspector"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveClass:toPackage:",
-fn: function (aClass,aPackageName){
-var self=this;
-var package_;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-package_=_st($Package())._named_(aPackageName);
-$1=package_;
-if(($receiver = $1) == nil || $receiver == undefined){
-self._error_("Invalid package name");
-} else {
-$1;
-};
-$2=_st(package_).__eq_eq(_st(aClass)._package());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(aClass)._package_(package_);
-return self}, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_},smalltalk.Environment)})},
-messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toClass:",
-fn: function (aMethod,aClassName){
-var self=this;
-var destinationClass;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-destinationClass=_st(_st($Smalltalk())._current())._at_(_st(aClassName)._asSymbol());
-$1=destinationClass;
-if(($receiver = $1) == nil || $receiver == undefined){
-self._error_("Invalid class name");
-} else {
-$1;
-};
-$2=_st(destinationClass).__eq_eq(_st(aMethod)._methodClass());
-if(smalltalk.assert($2)){
-$3=self;
-return $3;
-};
-_st(destinationClass)._compile_category_(_st(aMethod)._source(),_st(aMethod)._protocol());
-_st(_st(aMethod)._methodClass())._removeCompiledMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass},smalltalk.Environment)})},
-messageSends: ["at:", "asSymbol", "current", "ifNil:", "error:", "ifTrue:", "==", "methodClass", "compile:category:", "source", "protocol", "removeCompiledMethod:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "moveMethod:toProtocol:",
-fn: function (aMethod,aProtocol){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aMethod)._category_(aProtocol);
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},smalltalk.Environment)})},
-messageSends: ["category:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._packages();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.Environment)})},
-messageSends: ["packages", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerErrorHandler:",
-fn: function (anErrorHandler){
-var self=this;
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ErrorHandler())._setCurrent_(anErrorHandler);
-return self}, function($ctx1) {$ctx1.fill(self,"registerErrorHandler:",{anErrorHandler:anErrorHandler},smalltalk.Environment)})},
-messageSends: ["setCurrent:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerInspector:",
-fn: function (anInspector){
-var self=this;
-function $InspectorHandler(){return smalltalk.InspectorHandler||(typeof InspectorHandler=="undefined"?nil:InspectorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($InspectorHandler())._register_(anInspector);
-return self}, function($ctx1) {$ctx1.fill(self,"registerInspector:",{anInspector:anInspector},smalltalk.Environment)})},
-messageSends: ["register:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "registerProgressHandler:",
-fn: function (aProgressHandler){
-var self=this;
-function $ProgressHandler(){return smalltalk.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ProgressHandler())._setCurrent_(aProgressHandler);
-return self}, function($ctx1) {$ctx1.fill(self,"registerProgressHandler:",{aProgressHandler:aProgressHandler},smalltalk.Environment)})},
-messageSends: ["setCurrent:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-fn: function (aClass){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st($Smalltalk())._current())._removeClass_(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.Environment)})},
-messageSends: ["removeClass:", "current"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeMethod:",
-fn: function (aMethod){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(aMethod)._methodClass())._removeCompiledMethod_(aMethod);
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},smalltalk.Environment)})},
-messageSends: ["removeCompiledMethod:", "methodClass"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeProtocol:from:",
-fn: function (aString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(aClass)._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aClass)._removeCompiledMethod_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeProtocol:from:",{aString:aString,aClass:aClass},smalltalk.Environment)})},
-messageSends: ["do:", "removeCompiledMethod:", "select:", "=", "protocol", "methods"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameClass:to:",
-fn: function (aClass,aClassName){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._at_(aClassName);
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._error_(_st("A class named ".__comma(aClassName)).__comma(" already exists"));
-};
-_st(_st($ClassBuilder())._new())._renameClass_to_(aClass,aClassName);
-return self}, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,aClassName:aClassName},smalltalk.Environment)})},
-messageSends: ["ifNotNil:", "error:", ",", "at:", "current", "renameClass:to:", "new"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renameProtocol:to:in:",
-fn: function (aString,anotherString,aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(_st(aClass)._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(aString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._protocol_(anotherString);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renameProtocol:to:in:",{aString:aString,anotherString:anotherString,aClass:aClass},smalltalk.Environment)})},
-messageSends: ["do:", "protocol:", "select:", "=", "protocol", "methods"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setClassCommentOf:to:",
-fn: function (aClass,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aClass)._comment_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"setClassCommentOf:to:",{aClass:aClass,aString:aString},smalltalk.Environment)})},
-messageSends: ["comment:"]}),
-smalltalk.Environment);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "systemAnnouncer",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st($Smalltalk())._current())._at_("SystemAnnouncer"))._current();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},smalltalk.Environment)})},
-messageSends: ["current", "at:"]}),
-smalltalk.Environment);
-
-
-
-smalltalk.addClass('JSObjectProxy', smalltalk.Object, ['jsObject'], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addObjectVariablesTo:",
-fn: function (aDictionary){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		for(var i in self['@jsObject']) {
-			aDictionary._at_put_(i, self['@jsObject'][i]);
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"addObjectVariablesTo:",{aDictionary:aDictionary},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self['@jsObject'][aString];
-return self}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var obj = self['@jsObject'];
-		return aString in obj ? obj[aString] : aBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aBlock:aBlock},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:",
-fn: function (aString,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var obj = self['@jsObject'];
-		return aString in obj ? aBlock._value_(obj[aString]) : nil;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{aString:aString,aBlock:aBlock},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifPresent:ifAbsent:",
-fn: function (aString,aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var obj = self['@jsObject'];
-		return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aString:aString,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:put:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self['@jsObject'][aString] = anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doesNotUnderstand:",
-fn: function (aMessage){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._lookupProperty_(_st(_st(aMessage)._selector())._asJavaScriptSelector());
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=smalltalk.JSObjectProxy.superclass.fn.prototype._doesNotUnderstand_.apply(_st(self), [aMessage]);
-} else {
-var jsSelector;
-jsSelector=$receiver;
-$1=self._forwardMessage_withArguments_(jsSelector,_st(aMessage)._arguments());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},smalltalk.JSObjectProxy)})},
-messageSends: ["ifNil:ifNotNil:", "doesNotUnderstand:", "forwardMessage:withArguments:", "arguments", "lookupProperty:", "asJavaScriptSelector", "selector"]}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "forwardMessage:withArguments:",
-fn: function (aString,anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		return smalltalk.send(self._jsObject(), aString, anArray);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"forwardMessage:withArguments:",{aString:aString,anArray:anArray},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self._jsObject());
-_st(anInspector)._setLabel_(self._printString());
-self._addObjectVariablesTo_(variables);
-_st(anInspector)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.JSObjectProxy)})},
-messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "addObjectVariablesTo:", "setVariables:"]}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsObject",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@jsObject"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"jsObject",{},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsObject:",
-fn: function (aJSObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@jsObject"]=aJSObject;
-return self}, function($ctx1) {$ctx1.fill(self,"jsObject:",{aJSObject:aJSObject},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "keysAndValuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var o = self['@jsObject'];
-		for(var i in o) {
-			aBlock._value_value_(i, o[i]);
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lookupProperty:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return aString in self._jsObject() ? aString : nil;
-return self}, function($ctx1) {$ctx1.fill(self,"lookupProperty:",{aString:aString},smalltalk.JSObjectProxy)})},
-messageSends: []}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(_st(self._jsObject())._toString());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.JSObjectProxy)})},
-messageSends: ["nextPutAll:", "toString", "jsObject"]}),
-smalltalk.JSObjectProxy);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._at_ifAbsent_("value",(function(){
-return smalltalk.withContext(function($ctx2) {
-return smalltalk.JSObjectProxy.superclass.fn.prototype._value.apply(_st(self), []);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.JSObjectProxy)})},
-messageSends: ["at:ifAbsent:", "value"]}),
-smalltalk.JSObjectProxy);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aJSObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._jsObject_(aJSObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aJSObject:aJSObject},smalltalk.JSObjectProxy.klass)})},
-messageSends: ["jsObject:", "new", "yourself"]}),
-smalltalk.JSObjectProxy.klass);
-
-
-smalltalk.addClass('Organizer', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addElement:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.elements.addElement(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"addElement:",{anObject:anObject},smalltalk.Organizer)})},
-messageSends: []}),
-smalltalk.Organizer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "elements",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._basicAt_("elements"))._copy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"elements",{},smalltalk.Organizer)})},
-messageSends: ["copy", "basicAt:"]}),
-smalltalk.Organizer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeElement:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.elements.removeElement(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"removeElement:",{anObject:anObject},smalltalk.Organizer)})},
-messageSends: []}),
-smalltalk.Organizer);
-
-
-
-smalltalk.addClass('ClassOrganizer', smalltalk.Organizer, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addElement:",
-fn: function (aString){
-var self=this;
-function $ProtocolAdded(){return smalltalk.ProtocolAdded||(typeof ProtocolAdded=="undefined"?nil:ProtocolAdded)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.ClassOrganizer.superclass.fn.prototype._addElement_.apply(_st(self), [aString]);
-$1=_st($ProtocolAdded())._new();
-_st($1)._protocol_(aString);
-_st($1)._theClass_(self._theClass());
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"addElement:",{aString:aString},smalltalk.ClassOrganizer)})},
-messageSends: ["addElement:", "announce:", "protocol:", "new", "theClass:", "theClass", "yourself", "current"]}),
-smalltalk.ClassOrganizer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeElement:",
-fn: function (aString){
-var self=this;
-function $ProtocolRemoved(){return smalltalk.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.ClassOrganizer.superclass.fn.prototype._removeElement_.apply(_st(self), [aString]);
-$1=_st($ProtocolRemoved())._new();
-_st($1)._protocol_(aString);
-_st($1)._theClass_(self._theClass());
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"removeElement:",{aString:aString},smalltalk.ClassOrganizer)})},
-messageSends: ["removeElement:", "announce:", "protocol:", "new", "theClass:", "theClass", "yourself", "current"]}),
-smalltalk.ClassOrganizer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "theClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self.theClass ;
-return self}, function($ctx1) {$ctx1.fill(self,"theClass",{},smalltalk.ClassOrganizer)})},
-messageSends: []}),
-smalltalk.ClassOrganizer);
-
-
-
-smalltalk.addClass('PackageOrganizer', smalltalk.Organizer, [], 'Kernel-Infrastructure');
-
-
-smalltalk.addClass('Package', smalltalk.Object, ['extension'], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._organization())._elements();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Package)})},
-messageSends: ["elements", "organization"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isPackage",{},smalltalk.Package)})},
-messageSends: []}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "loadDependencies",
-fn: function (){
-var self=this;
-var classes,packages;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-classes=self._loadDependencyClasses();
-$2=_st(_st(classes)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._package();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
-_st($2)._remove_ifAbsent_(self,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"loadDependencies",{classes:classes,packages:packages},smalltalk.Package)})},
-messageSends: ["loadDependencyClasses", "remove:ifAbsent:", "asSet", "collect:", "package", "yourself"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "loadDependencyClasses",
-fn: function (){
-var self=this;
-var starCategoryName;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-starCategoryName="*".__comma(self._name());
-$2=_st(_st(self._classes())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._superclass();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._asSet();
-_st($2)._remove_ifAbsent_(nil,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st($2)._addAll_(_st(_st(_st($Smalltalk())._current())._classes())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocols())._includes_(starCategoryName);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"loadDependencyClasses",{starCategoryName:starCategoryName},smalltalk.Package)})},
-messageSends: [",", "name", "remove:ifAbsent:", "asSet", "collect:", "superclass", "classes", "addAll:", "select:", "includes:", "protocols", "current", "yourself"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.pkgName;
-return self}, function($ctx1) {$ctx1.fill(self,"name",{},smalltalk.Package)})},
-messageSends: []}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "name:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.pkgName = aString;
-return self}, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},smalltalk.Package)})},
-messageSends: []}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "organization",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("organization");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"organization",{},smalltalk.Package)})},
-messageSends: ["basicAt:"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.Package.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-$1=aStream;
-_st($1)._nextPutAll_(" (");
-_st($1)._nextPutAll_(self._name());
-$2=_st($1)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Package)})},
-messageSends: ["printOn:", "nextPutAll:", "name"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setupClasses",
-fn: function (){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._classes();
-_st($1)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($ClassBuilder())._new())._setupClass_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$2=_st($1)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._initialize();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupClasses",{},smalltalk.Package)})},
-messageSends: ["do:", "setupClass:", "new", "classes", "initialize"]}),
-smalltalk.Package);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sortedClasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._sortedClasses_(self._classes());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sortedClasses",{},smalltalk.Package)})},
-messageSends: ["sortedClasses:", "classes", "class"]}),
-smalltalk.Package);
-
-
-smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "load:",
-fn: function (aPackageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._deprecatedAPI();
-self._load_prefix_(aPackageName,_st(self._defaultCommitPathJs()).__comma("/"));
-return self}, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName},smalltalk.Package.klass)})},
-messageSends: ["deprecatedAPI", "load:prefix:", ",", "defaultCommitPathJs"]}),
-smalltalk.Package.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "load:prefix:",
-fn: function (aPackageName,aPrefix){
-var self=this;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-self._deprecatedAPI();
-_st($PlatformInterface())._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(_st(_st(aPrefix).__comma(aPackageName)).__comma(".js")),"dataType".__minus_gt("script"),"success".__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Package())._named_(aPackageName))._setupClasses();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"load:prefix:",{aPackageName:aPackageName,aPrefix:aPrefix},smalltalk.Package.klass)})},
-messageSends: ["deprecatedAPI", "ajax:", "->", ",", "setupClasses", "named:"]}),
-smalltalk.Package.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "named:",
-fn: function (aPackageName){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._packageAt_(aPackageName);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"named:",{aPackageName:aPackageName},smalltalk.Package.klass)})},
-messageSends: ["packageAt:", "current"]}),
-smalltalk.Package.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "named:ifAbsent:",
-fn: function (aPackageName,aBlock){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($Smalltalk())._current())._packageAt_ifAbsent_(aPackageName,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"named:ifAbsent:",{aPackageName:aPackageName,aBlock:aBlock},smalltalk.Package.klass)})},
-messageSends: ["packageAt:ifAbsent:", "current"]}),
-smalltalk.Package.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sortedClasses:",
-fn: function (classes){
-var self=this;
-var children,others,nodes,expandedClasses;
-function $ClassSorterNode(){return smalltalk.ClassSorterNode||(typeof ClassSorterNode=="undefined"?nil:ClassSorterNode)}
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-children=[];
-others=[];
-_st(classes)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(classes)._includes_(_st(each)._superclass());
-if(smalltalk.assert($1)){
-return _st(others)._add_(each);
-} else {
-return _st(children)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-nodes=_st(children)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st($ClassSorterNode())._on_classes_level_(each,others,(0));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-nodes=_st(nodes)._sorted_((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(a)._theClass())._name()).__lt_eq(_st(_st(b)._theClass())._name());
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})}));
-expandedClasses=_st($Array())._new();
-_st(nodes)._do_((function(aNode){
-return smalltalk.withContext(function($ctx2) {
-return _st(aNode)._traverseClassesWith_(expandedClasses);
-}, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1)})}));
-$2=expandedClasses;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"sortedClasses:",{classes:classes,children:children,others:others,nodes:nodes,expandedClasses:expandedClasses},smalltalk.Package.klass)})},
-messageSends: ["do:", "ifFalse:ifTrue:", "add:", "includes:", "superclass", "collect:", "on:classes:level:", "sorted:", "<=", "name", "theClass", "new", "traverseClassesWith:"]}),
-smalltalk.Package.klass);
-
-
-smalltalk.addClass('PlatformInterface', smalltalk.Object, [], 'Kernel-Infrastructure');
-
-smalltalk.PlatformInterface.klass.iVarNames = ['worker'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ajax:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@worker"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._error_("ajax: not available");
-} else {
-$1=_st(self["@worker"])._ajax_(anObject);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},smalltalk.PlatformInterface.klass)})},
-messageSends: ["ifNotNil:ifNil:", "ajax:", "error:"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "alert:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@worker"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._error_("alert: not available");
-} else {
-$1=_st(self["@worker"])._alert_(aString);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},smalltalk.PlatformInterface.klass)})},
-messageSends: ["ifNotNil:ifNil:", "alert:", "error:"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "confirm:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@worker"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._error_("confirm: not available");
-} else {
-$1=_st(self["@worker"])._confirm_(aString);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},smalltalk.PlatformInterface.klass)})},
-messageSends: ["ifNotNil:ifNil:", "confirm:", "error:"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "existsGlobal:",
-fn: function (aString){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($PlatformInterface())._globals())._at_ifPresent_ifAbsent_(aString,(function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"existsGlobal:",{aString:aString},smalltalk.PlatformInterface.klass)})},
-messageSends: ["at:ifPresent:ifAbsent:", "globals"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "globals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (new Function('return this'))();;
-return self}, function($ctx1) {$ctx1.fill(self,"globals",{},smalltalk.PlatformInterface.klass)})},
-messageSends: []}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-var candidate;
-function $BrowserInterface(){return smalltalk.BrowserInterface||(typeof BrowserInterface=="undefined"?nil:BrowserInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-smalltalk.PlatformInterface.klass.superclass.fn.prototype._initialize.apply(_st(self), []);
-$1=$BrowserInterface();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-candidate=_st($BrowserInterface())._new();
-candidate;
-$2=_st(candidate)._isAvailable();
-if(smalltalk.assert($2)){
-self._setWorker_(candidate);
-$3=self;
-return $3;
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{candidate:candidate},smalltalk.PlatformInterface.klass)})},
-messageSends: ["initialize", "ifNotNil:", "new", "ifTrue:", "setWorker:", "isAvailable"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "prompt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@worker"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._error_("prompt: not available");
-} else {
-$1=_st(self["@worker"])._prompt_(aString);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},smalltalk.PlatformInterface.klass)})},
-messageSends: ["ifNotNil:ifNil:", "prompt:", "error:"]}),
-smalltalk.PlatformInterface.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setWorker:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@worker"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"setWorker:",{anObject:anObject},smalltalk.PlatformInterface.klass)})},
-messageSends: []}),
-smalltalk.PlatformInterface.klass);
-
-
-smalltalk.addClass('ProgressHandler', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "do:on:displaying:",
-fn: function (aBlock,aCollection,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aCollection)._do_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString},smalltalk.ProgressHandler)})},
-messageSends: ["do:"]}),
-smalltalk.ProgressHandler);
-
-
-smalltalk.ProgressHandler.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@current"]=self._new();
-$1=self["@current"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.ProgressHandler.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ProgressHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._register();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ProgressHandler.klass)})},
-messageSends: ["register"]}),
-smalltalk.ProgressHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register",
-fn: function (){
-var self=this;
-function $ProgressHandler(){return smalltalk.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($ProgressHandler())._setCurrent_(self._new());
-return self}, function($ctx1) {$ctx1.fill(self,"register",{},smalltalk.ProgressHandler.klass)})},
-messageSends: ["setCurrent:", "new"]}),
-smalltalk.ProgressHandler.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setCurrent:",
-fn: function (anHandler){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@current"]=anHandler;
-return self}, function($ctx1) {$ctx1.fill(self,"setCurrent:",{anHandler:anHandler},smalltalk.ProgressHandler.klass)})},
-messageSends: []}),
-smalltalk.ProgressHandler.klass);
-
-
-smalltalk.addClass('Smalltalk', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addGlobalJsVariable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._globalJsVariables())._add_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"addGlobalJsVariable:",{aString:aString},smalltalk.Smalltalk)})},
-messageSends: ["add:", "globalJsVariables"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asSmalltalkException:",
-fn: function (anObject){
-var self=this;
-function $JavaScriptException(){return smalltalk.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self._isSmalltalkObject_(anObject))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(anObject)._isKindOf_($Error());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-if(smalltalk.assert($2)){
-$1=anObject;
-} else {
-$1=_st($JavaScriptException())._on_(anObject);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asSmalltalkException:",{anObject:anObject},smalltalk.Smalltalk)})},
-messageSends: ["ifTrue:ifFalse:", "on:", "and:", "isKindOf:", "isSmalltalkObject:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self[aString];
-return self}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "at:ifAbsent:",
-fn: function (aKey,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._includesKey_(aKey);
-$3=(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._at_(aKey);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-$1=_st($2)._ifTrue_ifFalse_($3,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.Smalltalk)})},
-messageSends: ["ifTrue:ifFalse:", "includesKey:", "at:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicParse:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.parser.parse(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"basicParse:",{aString:aString},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "classes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.classes();
-return self}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createPackage:",
-fn: function (packageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.addPackage(packageName);
-return self}, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createPackage:properties:",
-fn: function (packageName,aDict){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._deprecatedAPI();
-$1=_st(aDict)._isEmpty();
-if(! smalltalk.assert($1)){
-self._error_("createPackage:properties: called with nonempty properties");
-};
-$2=self._createPackage_(packageName);
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"createPackage:properties:",{packageName:packageName,aDict:aDict},smalltalk.Smalltalk)})},
-messageSends: ["deprecatedAPI", "ifFalse:", "error:", "isEmpty", "createPackage:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deleteClass:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.removeClass(aClass);
-return self}, function($ctx1) {$ctx1.fill(self,"deleteClass:",{aClass:aClass},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deleteGlobalJsVariable:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._globalJsVariables())._remove_ifAbsent_(aString,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"deleteGlobalJsVariable:",{aString:aString},smalltalk.Smalltalk)})},
-messageSends: ["remove:ifAbsent:", "globalJsVariables"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deletePackage:",
-fn: function (packageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-delete smalltalk.packages[packageName];
-return self}, function($ctx1) {$ctx1.fill(self,"deletePackage:",{packageName:packageName},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "globalJsVariables",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.globalJsVariables;
-return self}, function($ctx1) {$ctx1.fill(self,"globalJsVariables",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "includesKey:",
-fn: function (aKey){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.hasOwnProperty(aKey);
-return self}, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSmalltalkObject:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return typeof anObject.klass !== 'undefined';
-return self}, function($ctx1) {$ctx1.fill(self,"isSmalltalkObject:",{anObject:anObject},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packageAt:",
-fn: function (packageName){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.packages[packageName];
-return self}, function($ctx1) {$ctx1.fill(self,"packageAt:",{packageName:packageName},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packageAt:ifAbsent:",
-fn: function (packageName,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._packageAt_(packageName);
-$1=_st($2)._ifNil_(aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"packageAt:ifAbsent:",{packageName:packageName,aBlock:aBlock},smalltalk.Smalltalk)})},
-messageSends: ["ifNil:", "packageAt:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "packages",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.packages.all();
-return self}, function($ctx1) {$ctx1.fill(self,"packages",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parse:",
-fn: function (aString){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-self._try_catch_((function(){
-return smalltalk.withContext(function($ctx2) {
-result=self._basicParse_(aString);
-return result;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._parseError_parsing_(ex,aString))._signal();
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-$2=result;
-_st($2)._source_(aString);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString,result:result},smalltalk.Smalltalk)})},
-messageSends: ["try:catch:", "basicParse:", "signal", "parseError:parsing:", "source:", "yourself"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "parseError:parsing:",
-fn: function (anException,aString){
-var self=this;
-function $ParseError(){return smalltalk.ParseError||(typeof ParseError=="undefined"?nil:ParseError)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($ParseError())._new())._messageText_(_st(_st(_st(_st("Parse error on line ".__comma(_st(anException)._basicAt_("line"))).__comma(" column ")).__comma(_st(anException)._basicAt_("column"))).__comma(" : Unexpected character ")).__comma(_st(anException)._basicAt_("found")));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"parseError:parsing:",{anException:anException,aString:aString},smalltalk.Smalltalk)})},
-messageSends: ["messageText:", ",", "basicAt:", "new"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pseudoVariableNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=["self", "super", "nil", "true", "false", "thisContext"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"pseudoVariableNames",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "readJSObject:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.readJSObject(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"readJSObject:",{anObject:anObject},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removeClass:",
-fn: function (aClass){
-var self=this;
-function $ClassRemoved(){return smalltalk.ClassRemoved||(typeof ClassRemoved=="undefined"?nil:ClassRemoved)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(aClass)._isMetaclass();
-if(smalltalk.assert($1)){
-self._error_(_st(_st(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!"));
-};
-self._deleteClass_(aClass);
-$2=_st($ClassRemoved())._new();
-_st($2)._theClass_(aClass);
-$3=_st($2)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($3);
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},smalltalk.Smalltalk)})},
-messageSends: ["ifTrue:", "error:", ",", "asString", "isMetaclass", "deleteClass:", "announce:", "theClass:", "new", "yourself", "current"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "removePackage:",
-fn: function (packageName){
-var self=this;
-var pkg;
-return smalltalk.withContext(function($ctx1) { 
-pkg=self._packageAt_ifAbsent_(packageName,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("Missing package: ".__comma(packageName));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(pkg)._classes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._removeClass_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-self._deletePackage_(packageName);
-return self}, function($ctx1) {$ctx1.fill(self,"removePackage:",{packageName:packageName,pkg:pkg},smalltalk.Smalltalk)})},
-messageSends: ["packageAt:ifAbsent:", "error:", ",", "do:", "removeClass:", "classes", "deletePackage:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renamePackage:to:",
-fn: function (packageName,newName){
-var self=this;
-var pkg;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-pkg=self._packageAt_ifAbsent_(packageName,(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("Missing package: ".__comma(packageName));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$1=self._packageAt_(newName);
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-self._error_("Already exists a package called: ".__comma(newName));
-};
-_st(self._basicAt_("packages"))._at_put_(newName,pkg);
-_st(pkg)._name_(newName);
-self._deletePackage_(packageName);
-return self}, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{packageName:packageName,newName:newName,pkg:pkg},smalltalk.Smalltalk)})},
-messageSends: ["packageAt:ifAbsent:", "error:", ",", "ifNotNil:", "packageAt:", "at:put:", "basicAt:", "name:", "deletePackage:"]}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "reservedWords",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.reservedWords;
-return self}, function($ctx1) {$ctx1.fill(self,"reservedWords",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "version",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "0.11.0";
-}, function($ctx1) {$ctx1.fill(self,"version",{},smalltalk.Smalltalk)})},
-messageSends: []}),
-smalltalk.Smalltalk);
-
-
-smalltalk.Smalltalk.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk;
-return self}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Smalltalk.klass)})},
-messageSends: []}),
-smalltalk.Smalltalk.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavaScriptSelector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._replace_with_("^([a-zA-Z0-9]*).*$","$1");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavaScriptSelector",{},smalltalk.String)})},
-messageSends: ["replace:with:"]}),
-smalltalk.String);
-
-})(global_smalltalk,global_nil,global__st);

+ 188 - 57
js/Kernel-Infrastructure.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Infrastructure", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects", "amber_core/Kernel-Collections"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Infrastructure');
+smalltalk.packages["Kernel-Infrastructure"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('InspectorHandler', smalltalk.Object, [], 'Kernel-Infrastructure');
 smalltalk.InspectorHandler.comment="I am responsible for inspecting object.\x0a\x0aMy class-side `inspector` inst var holds the current inspector I'm delegating object inspection to.\x0a\x0aThe default inspector object is the transcript.";
@@ -66,7 +67,7 @@ smalltalk.InspectorHandler.klass);
 
 
 smalltalk.addClass('InterfacingObject', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.InterfacingObject.comment="I am superclass of all object that interface with user or environment. `Widget` and a few other classes are subclasses of me. I delegate all of the above APIs to `PlatformInterface`.\x0a\x0a## API\x0a\x0a    self alert: 'Hey, there is a problem'.\x0a    self confirm: 'Affirmative?'.\x0a    self prompt: 'Your name:'.\x0a\x0a    self ajax: #{\x0a        'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a    }.\x0a";
+smalltalk.InterfacingObject.comment="I am superclass of all object that interface with user or environment. `Widget` and a few other classes are subclasses of me. I delegate all of the above APIs to `PlatformInterface`.\x0a\x0a## API\x0a\x0a    self alert: 'Hey, there is a problem'.\x0a    self confirm: 'Affirmative?'.\x0a    self prompt: 'Your name:'.\x0a\x0a    self ajax: #{\x0a        'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a    }.";
 smalltalk.addMethod(
 smalltalk.method({
 selector: "ajax:",
@@ -1028,11 +1029,32 @@ category: 'printing',
 fn: function (aStream){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(_st(self._jsObject())._toString());
+_st(aStream)._nextPutAll_(self._printString());
 return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.JSObjectProxy)})},
 args: ["aStream"],
-source: "printOn: aStream\x0a\x09aStream nextPutAll: self jsObject toString",
-messageSends: ["nextPutAll:", "toString", "jsObject"],
+source: "printOn: aStream\x0a\x09aStream nextPutAll: self printString",
+messageSends: ["nextPutAll:", "printString"],
+referencedClasses: []
+}),
+smalltalk.JSObjectProxy);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "printString",
+category: 'printing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+
+		var js = self['@jsObject'];
+		return js.toString
+			? js.toString()
+			: Object.prototype.toString.call(js)
+	;
+return self}, function($ctx1) {$ctx1.fill(self,"printString",{},smalltalk.JSObjectProxy)})},
+args: [],
+source: "printString\x0a\x09<\x0a\x09\x09var js = self['@jsObject'];\x0a\x09\x09return js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09>",
+messageSends: [],
 referencedClasses: []
 }),
 smalltalk.JSObjectProxy);
@@ -1207,8 +1229,24 @@ smalltalk.addClass('PackageOrganizer', smalltalk.Organizer, [], 'Kernel-Infrastr
 smalltalk.PackageOrganizer.comment="I am an organizer specific to packages. I hold classes categorization information.";
 
 
-smalltalk.addClass('Package', smalltalk.Object, ['extension'], 'Kernel-Infrastructure');
+smalltalk.addClass('Package', smalltalk.Object, ['transport'], 'Kernel-Infrastructure');
 smalltalk.Package.comment="I am similar to a \x22class category\x22 typically found in other Smalltalks like Pharo or Squeak. Amber does not have class categories anymore, it had in the beginning but now each class in the system knows which package it belongs to.\x0a\x0aEach package has a name and can be queried for its classes, but it will then resort to a reverse scan of all classes to find them.\x0a\x0a## API\x0a\x0aPackages are manipulated through \x22Smalltalk current\x22, like for example finding one based on a name or with `Package class >> #name` directly:\x0a\x0a    Smalltalk current packageAt: 'Kernel'\x0a    Package named: 'Kernel'\x0a\x0aA package differs slightly from a Monticello package which can span multiple class categories using a naming convention based on hyphenation. But just as in Monticello a package supports \x22class extensions\x22 so a package can define behaviors in foreign classes using a naming convention for method categories where the category starts with an asterisk and then the name of the owning package follows.\x0a\x0aYou can fetch a package from the server:\x0a\x0a\x09Package load: 'Additional-Examples'";
+smalltalk.addMethod(
+smalltalk.method({
+selector: "basicTransport",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.transport;
+return self}, function($ctx1) {$ctx1.fill(self,"basicTransport",{},smalltalk.Package)})},
+args: [],
+source: "basicTransport\x0a\x09\x22Answer the transport literal JavaScript object as setup in the JavaScript file, if any\x22\x0a\x09\x0a\x09<return self.transport>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "classes",
@@ -1217,12 +1255,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._organization())._elements();
+$1=_st(_st(_st(self._organization())._elements())._asSet())._asArray();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Package)})},
 args: [],
-source: "classes\x0a\x09^ self organization elements",
-messageSends: ["elements", "organization"],
+source: "classes\x0a\x09^ self organization elements asSet asArray",
+messageSends: ["asArray", "asSet", "elements", "organization"],
 referencedClasses: []
 }),
 smalltalk.Package);
@@ -1413,53 +1451,58 @@ $1=_st(self._class())._sortedClasses_(self._classes());
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sortedClasses",{},smalltalk.Package)})},
 args: [],
-source: "sortedClasses\x0a\x09\x22Answer all classes in the receiver, sorted by superclass/subclasses and by class name for common subclasses (Issue #143).\x22\x0a\x0a\x09^self class sortedClasses: self classes",
+source: "sortedClasses\x0a\x09\x22Answer all classes in the receiver, sorted by superclass/subclasses and by class name for common subclasses (Issue #143).\x22\x0a\x0a\x09^ self class sortedClasses: self classes",
 messageSends: ["sortedClasses:", "classes", "class"],
 referencedClasses: []
 }),
 smalltalk.Package);
 
-
-smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
 smalltalk.method({
-selector: "load:",
-category: 'loading-storing',
-fn: function (aPackageName){
+selector: "transport",
+category: 'accessing',
+fn: function (){
 var self=this;
+function $PackageTransport(){return smalltalk.PackageTransport||(typeof PackageTransport=="undefined"?nil:PackageTransport)}
 return smalltalk.withContext(function($ctx1) { 
-self._deprecatedAPI();
-self._load_prefix_(aPackageName,_st(self._defaultCommitPathJs()).__comma("/"));
-return self}, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName},smalltalk.Package.klass)})},
-args: ["aPackageName"],
-source: "load: aPackageName\x0a\x09self deprecatedAPI.\x0a\x09self load: aPackageName prefix: self defaultCommitPathJs, '/'",
-messageSends: ["deprecatedAPI", "load:prefix:", ",", "defaultCommitPathJs"],
-referencedClasses: []
+var $2,$3,$4,$1;
+$2=self["@transport"];
+if(($receiver = $2) == nil || $receiver == undefined){
+$3=_st($PackageTransport())._fromJson_(self._basicTransport());
+_st($3)._package_(self);
+$4=_st($3)._yourself();
+self["@transport"]=$4;
+$1=self["@transport"];
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"transport",{},smalltalk.Package)})},
+args: [],
+source: "transport\x0a\x09^ transport ifNil: [ \x0a\x09\x09transport := (PackageTransport fromJson: self basicTransport)\x0a\x09\x09\x09package: self;\x0a\x09\x09\x09yourself ]",
+messageSends: ["ifNil:", "package:", "fromJson:", "basicTransport", "yourself"],
+referencedClasses: ["PackageTransport"]
 }),
-smalltalk.Package.klass);
+smalltalk.Package);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "load:prefix:",
-category: 'loading-storing',
-fn: function (aPackageName,aPrefix){
+selector: "transport:",
+category: 'accessing',
+fn: function (aPackageTransport){
 var self=this;
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
 return smalltalk.withContext(function($ctx1) { 
-self._deprecatedAPI();
-_st($PlatformInterface())._ajax_(smalltalk.HashedCollection._from_(["url".__minus_gt(_st(_st(aPrefix).__comma(aPackageName)).__comma(".js")),"dataType".__minus_gt("script"),"success".__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Package())._named_(aPackageName))._setupClasses();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"load:prefix:",{aPackageName:aPackageName,aPrefix:aPrefix},smalltalk.Package.klass)})},
-args: ["aPackageName", "aPrefix"],
-source: "load: aPackageName prefix: aPrefix\x0a\x09self deprecatedAPI.\x0a\x09PlatformInterface ajax: #{\x0a\x09\x09'url' -> (aPrefix , aPackageName , '.js').\x0a\x09\x09'dataType' -> 'script'.\x0a\x09\x09'success' -> [\x0a\x09\x09\x09(Package named: aPackageName) setupClasses ]\x0a\x09}",
-messageSends: ["deprecatedAPI", "ajax:", "->", ",", "setupClasses", "named:"],
-referencedClasses: ["Package", "PlatformInterface"]
+self["@transport"]=aPackageTransport;
+return self}, function($ctx1) {$ctx1.fill(self,"transport:",{aPackageTransport:aPackageTransport},smalltalk.Package)})},
+args: ["aPackageTransport"],
+source: "transport: aPackageTransport\x0a\x09transport := aPackageTransport",
+messageSends: [],
+referencedClasses: []
 }),
-smalltalk.Package.klass);
+smalltalk.Package);
 
+
+smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
 smalltalk.method({
 selector: "named:",
@@ -1545,7 +1588,7 @@ smalltalk.Package.klass);
 
 
 smalltalk.addClass('PlatformInterface', smalltalk.Object, [], 'Kernel-Infrastructure');
-smalltalk.PlatformInterface.comment="I am single entry point to UI and environment interface.\x0aMy `initialize` tries several options (for now, browser environment only) to set myself up.\x0a\x0a## API\x0a\x0a    PlatformInterface alert: 'Hey, there is a problem'.\x0a    PlatformInterface confirm: 'Affirmative?'.\x0a    PlatformInterface prompt: 'Your name:'.\x0a\x0a    PlatformInterface ajax: #{\x0a        'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a    }.\x0a";
+smalltalk.PlatformInterface.comment="I am single entry point to UI and environment interface.\x0aMy `initialize` tries several options (for now, browser environment only) to set myself up.\x0a\x0a## API\x0a\x0a    PlatformInterface alert: 'Hey, there is a problem'.\x0a    PlatformInterface confirm: 'Affirmative?'.\x0a    PlatformInterface prompt: 'Your name:'.\x0a\x0a    PlatformInterface ajax: #{\x0a        'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a    }.";
 
 smalltalk.PlatformInterface.klass.iVarNames = ['worker'];
 smalltalk.addMethod(
@@ -1842,6 +1885,24 @@ referencedClasses: []
 }),
 smalltalk.Smalltalk);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "amdRequire",
+category: 'accessing amd',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self._at_("amdRequire");
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"amdRequire",{},smalltalk.Smalltalk)})},
+args: [],
+source: "amdRequire\x0a\x09^ self at: 'amdRequire'",
+messageSends: ["at:"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "asSmalltalkException:",
@@ -1877,11 +1938,31 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-return self[aString];
-return self}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.Smalltalk)})},
+var $1;
+$1=self._basicAt_(aString);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.Smalltalk)})},
 args: ["aString"],
-source: "at: aString\x0a\x09<return self[aString]>",
-messageSends: [],
+source: "at: aString\x0a\x09^ self basicAt: aString",
+messageSends: ["basicAt:"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "at:put:",
+category: 'accessing',
+fn: function (aString,anObject){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self._basicAt_put_(aString,anObject);
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject},smalltalk.Smalltalk)})},
+args: ["aString", "anObject"],
+source: "at: aString put: anObject\x0a\x09^ self basicAt: aString put: anObject",
+messageSends: ["basicAt:put:"],
 referencedClasses: []
 }),
 smalltalk.Smalltalk);
@@ -1951,7 +2032,7 @@ return smalltalk.withContext(function($ctx1) {
 return smalltalk.addPackage(packageName);
 return self}, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName},smalltalk.Smalltalk)})},
 args: ["packageName"],
-source: "createPackage: packageName\x0a\x09\x22Create and bind a new package with given name and return it.\x22\x0a\x09<return smalltalk.addPackage(packageName)>",
+source: "createPackage: packageName\x0a\x09\x22Create and bind a new bare package with given name and return it.\x22\x0a\x09<return smalltalk.addPackage(packageName)>",
 messageSends: [],
 referencedClasses: []
 }),
@@ -1980,10 +2061,44 @@ referencedClasses: []
 }),
 smalltalk.Smalltalk);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "defaultAmdNamespace",
+category: 'accessing amd',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self._at_("defaultAmdNamespace");
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace",{},smalltalk.Smalltalk)})},
+args: [],
+source: "defaultAmdNamespace\x0a\x09^ self at: 'defaultAmdNamespace'",
+messageSends: ["at:"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "defaultAmdNamespace:",
+category: 'accessing amd',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._at_put_("defaultAmdNamespace",aString);
+return self}, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace:",{aString:aString},smalltalk.Smalltalk)})},
+args: ["aString"],
+source: "defaultAmdNamespace: aString\x0a\x09self at: 'defaultAmdNamespace' put: aString",
+messageSends: ["at:put:"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "deleteClass:",
-category: 'classes',
+category: 'private',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
@@ -2017,14 +2132,14 @@ smalltalk.Smalltalk);
 smalltalk.addMethod(
 smalltalk.method({
 selector: "deletePackage:",
-category: 'packages',
+category: 'private',
 fn: function (packageName){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-delete smalltalk.packages[packageName];
+delete self.packages[packageName];
 return self}, function($ctx1) {$ctx1.fill(self,"deletePackage:",{packageName:packageName},smalltalk.Smalltalk)})},
 args: ["packageName"],
-source: "deletePackage: packageName\x0a\x09\x22Deletes a package by deleting its binding, but does not check if it contains classes etc.\x0a\x09To remove a package, use #removePackage instead.\x22\x0a\x0a\x09<delete smalltalk.packages[packageName]>",
+source: "deletePackage: packageName\x0a\x09\x22Deletes a package by deleting its binding, but does not check if it contains classes etc.\x0a\x09To remove a package, use #removePackage instead.\x22\x0a\x0a\x09<delete self.packages[packageName]>",
 messageSends: [],
 referencedClasses: []
 }),
@@ -2181,7 +2296,7 @@ smalltalk.Smalltalk);
 smalltalk.addMethod(
 smalltalk.method({
 selector: "pseudoVariableNames",
-category: 'packages',
+category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
@@ -2283,13 +2398,13 @@ $1;
 } else {
 self._error_("Already exists a package called: ".__comma(newName));
 };
-_st(self._basicAt_("packages"))._at_put_(newName,pkg);
+_st(self._at_("packages"))._at_put_(newName,pkg);
 _st(pkg)._name_(newName);
 self._deletePackage_(packageName);
 return self}, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{packageName:packageName,newName:newName,pkg:pkg},smalltalk.Smalltalk)})},
 args: ["packageName", "newName"],
-source: "renamePackage: packageName to: newName\x0a\x09\x22Rename a package.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [self error: 'Missing package: ', packageName].\x0a\x09(self packageAt: newName) ifNotNil: [self error: 'Already exists a package called: ', newName].\x0a\x09(self basicAt: 'packages') at: newName put: pkg.\x0a\x09pkg name: newName.\x0a\x09self deletePackage: packageName.",
-messageSends: ["packageAt:ifAbsent:", "error:", ",", "ifNotNil:", "packageAt:", "at:put:", "basicAt:", "name:", "deletePackage:"],
+source: "renamePackage: packageName to: newName\x0a\x09\x22Rename a package.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [self error: 'Missing package: ', packageName].\x0a\x09(self packageAt: newName) ifNotNil: [self error: 'Already exists a package called: ', newName].\x0a\x09(self at: 'packages') at: newName put: pkg.\x0a\x09pkg name: newName.\x0a\x09self deletePackage: packageName.",
+messageSends: ["packageAt:ifAbsent:", "error:", ",", "ifNotNil:", "packageAt:", "at:put:", "at:", "name:", "deletePackage:"],
 referencedClasses: []
 }),
 smalltalk.Smalltalk);
@@ -2317,17 +2432,16 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-return "0.11.0";
+return "0.12.0-pre";
 }, function($ctx1) {$ctx1.fill(self,"version",{},smalltalk.Smalltalk)})},
 args: [],
-source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.11.0'",
+source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.12.0-pre'",
 messageSends: [],
 referencedClasses: []
 }),
 smalltalk.Smalltalk);
 
 
-smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.addMethod(
 smalltalk.method({
 selector: "current",
@@ -2344,6 +2458,23 @@ referencedClasses: []
 }),
 smalltalk.Smalltalk.klass);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "do:displayingProgress:",
+category: '*Kernel-Infrastructure',
+fn: function (aBlock,aString){
+var self=this;
+function $ProgressHandler(){return smalltalk.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
+return smalltalk.withContext(function($ctx1) { 
+_st(_st($ProgressHandler())._current())._do_on_displaying_(aBlock,self,aString);
+return self}, function($ctx1) {$ctx1.fill(self,"do:displayingProgress:",{aBlock:aBlock,aString:aString},smalltalk.SequenceableCollection)})},
+args: ["aBlock", "aString"],
+source: "do: aBlock displayingProgress: aString\x0a\x09ProgressHandler current\x0a\x09\x09do: aBlock on: self displaying: aString",
+messageSends: ["do:on:displaying:", "current"],
+referencedClasses: ["ProgressHandler"]
+}),
+smalltalk.SequenceableCollection);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "asJavaScriptSelector",
@@ -2362,4 +2493,4 @@ referencedClasses: []
 }),
 smalltalk.String);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 1390
js/Kernel-Methods.deploy.js

@@ -1,1390 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Methods');
-
-smalltalk.addClass('BlockClosure', smalltalk.Object, [], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "applyTo:arguments:",
-fn: function (anObject,aCollection){
-var self=this;
-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)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asCompiledMethod:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.method({selector:aString, fn:self});;
-return self}, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compiledSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toString();
-return self}, function($ctx1) {$ctx1.fill(self,"compiledSource",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "currySelf",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		return function () {
-			var args = [ this ];
-			args.push.apply(args, arguments);
-			return self.apply(null, args);
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"currySelf",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ensure:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-try{return self._value()}finally{aBlock._value()};
-return self}, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fork",
-fn: function (){
-var self=this;
-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)})},
-messageSends: ["fork:", "default"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return new self();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newValue:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newWithValues_([anObject]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
-messageSends: ["newWithValues:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newValue:value:",
-fn: function (anObject,anObject2){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newWithValues_([anObject,anObject2]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
-messageSends: ["newWithValues:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newValue:value:value:",
-fn: function (anObject,anObject2,anObject3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._newWithValues_([anObject,anObject2,anObject3]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
-messageSends: ["newWithValues:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newWithValues:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var constructor = function() {};
-		constructor.prototype = self.prototype;
-		var object = new constructor;
-		var result = self.apply(object, aCollection);
-		return typeof result === "object" ? result : object;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"newWithValues:",{aCollection:aCollection},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "numArgs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.length;
-return self}, function($ctx1) {$ctx1.fill(self,"numArgs",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:do:",
-fn: function (anErrorClass,aBlock){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$1=self._try_catch_(self,(function(error){
-var smalltalkError;
-return smalltalk.withContext(function($ctx2) {
-smalltalkError=_st(_st($Smalltalk())._current())._asSmalltalkException_(error);
-smalltalkError;
-$2=_st(smalltalkError)._isKindOf_(anErrorClass);
-if(smalltalk.assert($2)){
-return _st(aBlock)._value_(smalltalkError);
-} else {
-return _st(smalltalkError)._resignal();
-};
-}, function($ctx2) {$ctx2.fillBlock({error:error,smalltalkError:smalltalkError},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock},smalltalk.BlockClosure)})},
-messageSends: ["try:catch:", "asSmalltalkException:", "current", "ifTrue:ifFalse:", "isKindOf:", "value:", "resignal"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "timeToRun",
-fn: function (){
-var self=this;
-function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Date())._millisecondsToRun_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"timeToRun",{},smalltalk.BlockClosure)})},
-messageSends: ["millisecondsToRun:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self();;
-return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (anArg){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self(anArg);;
-return self}, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:",
-fn: function (firstArg,secondArg){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self(firstArg, secondArg);;
-return self}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:value:",
-fn: function (firstArg,secondArg,thirdArg){
-var self=this;
-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)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueWithInterval:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var interval = setInterval(self, aNumber);
-		return smalltalk.Timeout._on_(interval);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"valueWithInterval:",{aNumber:aNumber},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueWithPossibleArguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.apply(null, aCollection);;
-return self}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueWithTimeout:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var timeout = setTimeout(self, aNumber);
-		return smalltalk.Timeout._on_(timeout);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:",{aNumber:aNumber},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileFalse",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
-messageSends: ["whileFalse:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileFalse:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-while(!smalltalk.assert(self._value())) {aBlock._value()};
-return self}, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileTrue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
-messageSends: ["whileTrue:"]}),
-smalltalk.BlockClosure);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "whileTrue:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-while(smalltalk.assert(self._value())) {aBlock._value()};
-return self}, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},smalltalk.BlockClosure)})},
-messageSends: []}),
-smalltalk.BlockClosure);
-
-
-
-smalltalk.addClass('CompiledMethod', smalltalk.Object, [], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.args || [];
-return self}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.CompiledMethod)})},
-messageSends: []}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._basicAt_("category");
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._defaultCategory();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.CompiledMethod)})},
-messageSends: ["ifNil:", "basicAt:", "defaultCategory"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category:",
-fn: function (aString){
-var self=this;
-var oldProtocol;
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-oldProtocol=self._protocol();
-self._basicAt_put_("category",aString);
-$1=_st($MethodMoved())._new();
-_st($1)._method_(self);
-_st($1)._oldProtocol_(oldProtocol);
-$2=_st($1)._yourself();
-_st(_st($SystemAnnouncer())._current())._announce_($2);
-$3=self._methodClass();
-if(($receiver = $3) == nil || $receiver == undefined){
-$3;
-} else {
-_st(_st(self._methodClass())._organization())._addElement_(aString);
-_st(_st(_st(self._methodClass())._methods())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(oldProtocol);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._methodClass())._organization())._removeElement_(oldProtocol);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldProtocol:oldProtocol},smalltalk.CompiledMethod)})},
-messageSends: ["protocol", "basicAt:put:", "announce:", "current", "method:", "new", "oldProtocol:", "yourself", "ifNotNil:", "methodClass", "addElement:", "organization", "ifEmpty:", "select:", "methods", "=", "removeElement:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultCategory",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "as yet unclassified";
-}, function($ctx1) {$ctx1.fill(self,"defaultCategory",{},smalltalk.CompiledMethod)})},
-messageSends: []}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fn",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("fn");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fn",{},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fn:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._basicAt_put_("fn",aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:put:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCompiledMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isCompiledMethod",{},smalltalk.CompiledMethod)})},
-messageSends: []}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverridden",
-fn: function (){
-var self=this;
-var selector;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-var $early={};
-try {
-selector=self._selector();
-_st(self._methodClass())._allSubclassesDo_((function(each){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(each)._includesSelector_(selector);
-if(smalltalk.assert($1)){
-throw $early=[true];
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return false;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"isOverridden",{selector:selector},smalltalk.CompiledMethod)})},
-messageSends: ["selector", "allSubclassesDo:", "methodClass", "ifTrue:", "includesSelector:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isOverride",
-fn: function (){
-var self=this;
-var superclass;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-superclass=_st(self._methodClass())._superclass();
-$1=superclass;
-if(($receiver = $1) == nil || $receiver == undefined){
-return false;
-} else {
-$1;
-};
-$2=_st(_st(_st(self._methodClass())._superclass())._lookupSelector_(self._selector()))._notNil();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass},smalltalk.CompiledMethod)})},
-messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "messageSends",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("messageSends");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("methodClass");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodClass",{},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._category();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"protocol",{},smalltalk.CompiledMethod)})},
-messageSends: ["category"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "protocol:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._category_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString},smalltalk.CompiledMethod)})},
-messageSends: ["category:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "referencedClasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("referencedClasses");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicAt_("selector");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._basicAt_put_("selector",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:put:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendTo:arguments:",
-fn: function (anObject,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._fn())._applyTo_arguments_(anObject,aCollection);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendTo:arguments:",{anObject:anObject,aCollection:aCollection},smalltalk.CompiledMethod)})},
-messageSends: ["applyTo:arguments:", "fn"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._basicAt_("source");
-if(($receiver = $2) == nil || $receiver == undefined){
-$1="";
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"source",{},smalltalk.CompiledMethod)})},
-messageSends: ["ifNil:", "basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "source:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._basicAt_put_("source",aString);
-return self}, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},smalltalk.CompiledMethod)})},
-messageSends: ["basicAt:put:"]}),
-smalltalk.CompiledMethod);
-
-
-
-smalltalk.addClass('ForkPool', smalltalk.Object, ['poolSize', 'maxPoolSize', 'queue', 'worker'], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addWorker",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@worker"])._valueWithTimeout_((0));
-self["@poolSize"]=_st(self["@poolSize"]).__plus((1));
-return self}, function($ctx1) {$ctx1.fill(self,"addWorker",{},smalltalk.ForkPool)})},
-messageSends: ["valueWithTimeout:", "+"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultMaxPoolSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._defaultMaxPoolSize();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool)})},
-messageSends: ["defaultMaxPoolSize", "class"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fork:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@poolSize"]).__lt(self._maxPoolSize());
-if(smalltalk.assert($1)){
-self._addWorker();
-};
-_st(self["@queue"])._nextPut_(aBlock);
-return self}, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock},smalltalk.ForkPool)})},
-messageSends: ["ifTrue:", "<", "maxPoolSize", "addWorker", "nextPut:"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Queue(){return smalltalk.Queue||(typeof Queue=="undefined"?nil:Queue)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.ForkPool.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@poolSize"]=(0);
-self["@queue"]=_st($Queue())._new();
-self["@worker"]=self._makeWorker();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ForkPool)})},
-messageSends: ["initialize", "new", "makeWorker"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "makeWorker",
-fn: function (){
-var self=this;
-var sentinel;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-sentinel=_st($Object())._new();
-$1=(function(){
-var block;
-return smalltalk.withContext(function($ctx2) {
-self["@poolSize"]=_st(self["@poolSize"]).__minus((1));
-self["@poolSize"];
-block=_st(self["@queue"])._nextIfAbsent_((function(){
-return smalltalk.withContext(function($ctx3) {
-return sentinel;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-block;
-$2=_st(block).__eq_eq(sentinel);
-if(! smalltalk.assert($2)){
-return _st((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(block)._value();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._addWorker();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
-};
-}, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1,1)})});
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel},smalltalk.ForkPool)})},
-messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "==", "ensure:", "value", "addWorker"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "maxPoolSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@maxPoolSize"];
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=self._defaultMaxPoolSize();
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"maxPoolSize",{},smalltalk.ForkPool)})},
-messageSends: ["ifNil:", "defaultMaxPoolSize"]}),
-smalltalk.ForkPool);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "maxPoolSize:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@maxPoolSize"]=anInteger;
-return self}, function($ctx1) {$ctx1.fill(self,"maxPoolSize:",{anInteger:anInteger},smalltalk.ForkPool)})},
-messageSends: []}),
-smalltalk.ForkPool);
-
-
-smalltalk.ForkPool.klass.iVarNames = ['default'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "default",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
-self["@default"]=self._new();
-$1=self["@default"];
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"default",{},smalltalk.ForkPool.klass)})},
-messageSends: ["ifNil:", "new"]}),
-smalltalk.ForkPool.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultMaxPoolSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return (100);
-}, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},smalltalk.ForkPool.klass)})},
-messageSends: []}),
-smalltalk.ForkPool.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resetDefault",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@default"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"resetDefault",{},smalltalk.ForkPool.klass)})},
-messageSends: []}),
-smalltalk.ForkPool.klass);
-
-
-smalltalk.addClass('Message', smalltalk.Object, ['selector', 'arguments'], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@arguments"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.Message)})},
-messageSends: []}),
-smalltalk.Message);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments:",
-fn: function (anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@arguments"]=anArray;
-return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray},smalltalk.Message)})},
-messageSends: []}),
-smalltalk.Message);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.Message.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-$1=aStream;
-_st($1)._nextPutAll_("(");
-_st($1)._nextPutAll_(self._selector());
-$2=_st($1)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Message)})},
-messageSends: ["printOn:", "nextPutAll:", "selector"]}),
-smalltalk.Message);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@selector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.Message)})},
-messageSends: []}),
-smalltalk.Message);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@selector"]=aString;
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.Message)})},
-messageSends: []}),
-smalltalk.Message);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sendTo:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anObject)._perform_withArguments_(self._selector(),self._arguments());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},smalltalk.Message)})},
-messageSends: ["perform:withArguments:", "selector", "arguments"]}),
-smalltalk.Message);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:arguments:",
-fn: function (aString,anArray){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._selector_(aString);
-_st($2)._arguments_(anArray);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector:arguments:",{aString:aString,anArray:anArray},smalltalk.Message.klass)})},
-messageSends: ["selector:", "new", "arguments:", "yourself"]}),
-smalltalk.Message.klass);
-
-
-smalltalk.addClass('MessageSend', smalltalk.Object, ['receiver', 'message'], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@message"])._arguments();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"arguments",{},smalltalk.MessageSend)})},
-messageSends: ["arguments"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "arguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@message"])._arguments_(aCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},smalltalk.MessageSend)})},
-messageSends: ["arguments:"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Message(){return smalltalk.Message||(typeof Message=="undefined"?nil:Message)}
-return smalltalk.withContext(function($ctx1) { 
-smalltalk.MessageSend.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@message"]=_st($Message())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.MessageSend)})},
-messageSends: ["initialize", "new"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.MessageSend.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-$1=aStream;
-_st($1)._nextPutAll_("(");
-_st($1)._nextPutAll_(self._receiver());
-_st($1)._nextPutAll_(" >> ");
-_st($1)._nextPutAll_(self._selector());
-$2=_st($1)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.MessageSend)})},
-messageSends: ["printOn:", "nextPutAll:", "receiver", "selector"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@receiver"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MessageSend)})},
-messageSends: []}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiver"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.MessageSend)})},
-messageSends: []}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@message"])._selector();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.MessageSend)})},
-messageSends: ["selector"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@message"])._selector_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},smalltalk.MessageSend)})},
-messageSends: ["selector:"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@message"])._sendTo_(self._receiver());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.MessageSend)})},
-messageSends: ["sendTo:", "receiver"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self["@message"];
-_st($2)._arguments_([anObject]);
-$3=_st($2)._sendTo_(self._receiver());
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject},smalltalk.MessageSend)})},
-messageSends: ["arguments:", "sendTo:", "receiver"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:",
-fn: function (firstArgument,secondArgument){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self["@message"];
-_st($2)._arguments_([firstArgument,secondArgument]);
-$3=_st($2)._sendTo_(self._receiver());
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument},smalltalk.MessageSend)})},
-messageSends: ["arguments:", "sendTo:", "receiver"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value:value:value:",
-fn: function (firstArgument,secondArgument,thirdArgument){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self["@message"];
-_st($2)._arguments_([firstArgument,secondArgument,thirdArgument]);
-$3=_st($2)._sendTo_(self._receiver());
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument},smalltalk.MessageSend)})},
-messageSends: ["arguments:", "sendTo:", "receiver"]}),
-smalltalk.MessageSend);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valueWithPossibleArguments:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._arguments_(aCollection);
-$1=self._value();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},smalltalk.MessageSend)})},
-messageSends: ["arguments:", "value"]}),
-smalltalk.MessageSend);
-
-
-
-smalltalk.addClass('MethodContext', smalltalk.Object, [], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isBlockContext();
-if(smalltalk.assert($2)){
-$1=_st("a block (in ".__comma(_st(self._methodContext())._asString())).__comma(")");
-} else {
-$1=_st(_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ")).__comma(self._selector());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.MethodContext)})},
-messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "name", "class", "receiver", "selector"]}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "home",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.homeContext;
-return self}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "index",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.index || 0;
-return self}, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBlockContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._selector())._isNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.MethodContext)})},
-messageSends: ["isNil", "selector"]}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "locals",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.locals || {};
-return self}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "method",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._methodContext();
-if(($receiver = $2) == nil || $receiver == undefined){
-$1=$2;
-} else {
-$1=_st(_st(_st(self._methodContext())._receiver())._class())._lookupSelector_(_st(self._methodContext())._selector());
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
-messageSends: ["ifNotNil:", "methodContext", "lookupSelector:", "class", "receiver", "selector"]}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "methodContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
-$1=self._isBlockContext();
-if(! smalltalk.assert($1)){
-$2=self;
-return $2;
-};
-$4=self._outerContext();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=$4;
-} else {
-var outer;
-outer=$receiver;
-$3=_st(outer)._methodContext();
-};
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"methodContext",{},smalltalk.MethodContext)})},
-messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"]}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "outerContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.outerContext || self.homeContext;
-return self}, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.pc;
-return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.MethodContext.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
-$1=aStream;
-_st($1)._nextPutAll_("(");
-_st($1)._nextPutAll_(self._asString());
-$2=_st($1)._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.MethodContext)})},
-messageSends: ["printOn:", "nextPutAll:", "asString"]}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "receiver",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.receiver;
-return self}, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self.selector) {
-			return smalltalk.convertSelector(self.selector);
-		} else {
-			return nil;
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.MethodContext)})},
-messageSends: []}),
-smalltalk.MethodContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "temps",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._deprecatedAPI();
-$1=self._locals();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"temps",{},smalltalk.MethodContext)})},
-messageSends: ["deprecatedAPI", "locals"]}),
-smalltalk.MethodContext);
-
-
-
-smalltalk.addClass('NativeFunction', smalltalk.Object, [], 'Kernel-Methods');
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "constructor:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var native=eval(aString);
-		return new native();
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"constructor:",{aString:aString},smalltalk.NativeFunction.klass)})},
-messageSends: []}),
-smalltalk.NativeFunction.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "constructor:value:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var native=eval(aString);
-		return new native(anObject);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:",{aString:aString,anObject:anObject},smalltalk.NativeFunction.klass)})},
-messageSends: []}),
-smalltalk.NativeFunction.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "constructor:value:value:",
-fn: function (aString,anObject,anObject2){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var native=eval(aString);
-		return new native(anObject,anObject2);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},smalltalk.NativeFunction.klass)})},
-messageSends: []}),
-smalltalk.NativeFunction.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "constructor:value:value:value:",
-fn: function (aString,anObject,anObject2,anObject3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var native=eval(aString);
-		return new native(anObject,anObject2, anObject3);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"constructor:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.NativeFunction.klass)})},
-messageSends: []}),
-smalltalk.NativeFunction.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "exists:",
-fn: function (aString){
-var self=this;
-function $PlatformInterface(){return smalltalk.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($PlatformInterface())._existsGlobal_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString},smalltalk.NativeFunction.klass)})},
-messageSends: ["existsGlobal:"]}),
-smalltalk.NativeFunction.klass);
-
-
-smalltalk.addClass('Timeout', smalltalk.Object, ['rawTimeout'], 'Kernel-Methods');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearInterval",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var interval = self["@rawTimeout"];
-		clearInterval(interval);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"clearInterval",{},smalltalk.Timeout)})},
-messageSends: []}),
-smalltalk.Timeout);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clearTimeout",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var timeout = self["@rawTimeout"];
-		clearTimeout(timeout);
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"clearTimeout",{},smalltalk.Timeout)})},
-messageSends: []}),
-smalltalk.Timeout);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rawTimeout:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@rawTimeout"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"rawTimeout:",{anObject:anObject},smalltalk.Timeout)})},
-messageSends: []}),
-smalltalk.Timeout);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._rawTimeout_(anObject);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject},smalltalk.Timeout.klass)})},
-messageSends: ["rawTimeout:", "new", "yourself"]}),
-smalltalk.Timeout.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Kernel-Methods.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Methods", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Methods');
+smalltalk.packages["Kernel-Methods"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('BlockClosure', smalltalk.Object, [], 'Kernel-Methods');
 smalltalk.BlockClosure.comment="I represent a lexical closure.\x0aI am is directly mapped to JavaScript Function.\x0a\x0a## API\x0a\x0a1. Evaluation\x0a\x0a    My instances get evaluated with the `#value*` methods in the 'evaluating' protocol.\x0a\x0a    Example: ` [ :x | x + 1 ] value: 3 \x22Answers 4\x22 `\x0a\x0a2. Control structures\x0a\x0a    Blocks are used (together with `Boolean`) for control structures (methods in the `controlling` protocol).\x0a\x0a    Example: `aBlock whileTrue: [ ... ]`\x0a\x0a3. Error handling\x0a\x0a    I provide the `#on:do:` method for handling exceptions.\x0a\x0a    Example: ` aBlock on: MessageNotUnderstood do: [ :ex | ... ] `";
@@ -1880,4 +1881,4 @@ referencedClasses: []
 }),
 smalltalk.Timeout.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 2672
js/Kernel-Objects.deploy.js

@@ -1,2672 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Objects');
-
-smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "->",
-fn: function (anObject){
-var self=this;
-function $Association(){return smalltalk.Association||(typeof Association=="undefined"?nil:Association)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Association())._key_value_(self,anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"->",{anObject:anObject},smalltalk.Object)})},
-messageSends: ["key:value:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__eq_eq(anObject);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject},smalltalk.Object)})},
-messageSends: ["=="]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "==",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._identityHash()).__eq(_st(anObject)._identityHash());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject},smalltalk.Object)})},
-messageSends: ["=", "identityHash"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-var variables;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-variables=_st($HashedCollection())._new();
-_st(_st(self._class())._allInstanceVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(each,_st(self._instVarAt_(each))._asJSON());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=variables;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{variables:variables},smalltalk.Object)})},
-messageSends: ["new", "do:", "allInstanceVariableNames", "class", "at:put:", "asJSON", "instVarAt:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSONString",
-fn: function (){
-var self=this;
-function $JSON(){return smalltalk.JSON||(typeof JSON=="undefined"?nil:JSON)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($JSON())._stringify_(self._asJSON());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSONString",{},smalltalk.Object)})},
-messageSends: ["stringify:", "asJSON"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._asString();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.Object)})},
-messageSends: ["asString"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._printString();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.Object)})},
-messageSends: ["printString"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self[aString];
-return self}, function($ctx1) {$ctx1.fill(self,"basicAt:",{aString:aString},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicAt:put:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self[aString] = anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"basicAt:put:",{aString:aString,anObject:anObject},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicDelete:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-delete self[aString]; return aString;
-return self}, function($ctx1) {$ctx1.fill(self,"basicDelete:",{aString:aString},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicPerform:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._basicPerform_withArguments_(aString,[]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"basicPerform:",{aString:aString},smalltalk.Object)})},
-messageSends: ["basicPerform:withArguments:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "basicPerform:withArguments:",
-fn: function (aString,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self[aString].apply(self, aCollection);;
-return self}, function($ctx1) {$ctx1.fill(self,"basicPerform:withArguments:",{aString:aString,aCollection:aCollection},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "class",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.klass;
-return self}, function($ctx1) {$ctx1.fill(self,"class",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._shallowCopy())._postCopy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copy",{},smalltalk.Object)})},
-messageSends: ["postCopy", "shallowCopy"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var copy = self.klass._new();
-		for(var i in self) {
-		if(/^@.+/.test(i)) {
-			copy[i] = self[i]._deepCopy();
-		}
-		}
-		return copy;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"deepCopy",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deprecatedAPI",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(console)._warn_(_st(_st(_st(_st(smalltalk.getThisContext()._home())._asString()).__comma(" is deprecated! (in ")).__comma(_st(_st(smalltalk.getThisContext()._home())._home())._asString())).__comma(")"));
-return self}, function($ctx1) {$ctx1.fill(self,"deprecatedAPI",{},smalltalk.Object)})},
-messageSends: ["warn:", ",", "asString", "home"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "doesNotUnderstand:",
-fn: function (aMessage){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($MessageNotUnderstood())._new();
-_st($1)._receiver_(self);
-_st($1)._message_(aMessage);
-$2=_st($1)._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},smalltalk.Object)})},
-messageSends: ["receiver:", "new", "message:", "signal"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "error:",
-fn: function (aString){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-_st($Error())._signal_(aString);
-return self}, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString},smalltalk.Object)})},
-messageSends: ["signal:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "halt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("Halt encountered");
-return self}, function($ctx1) {$ctx1.fill(self,"halt",{},smalltalk.Object)})},
-messageSends: ["error:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "identityHash",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-	var hash=self.identityHash;
-	if (hash) return hash;
-	hash=smalltalk.nextId();
-	Object.defineProperty(self, 'identityHash', {value:hash});
-	return hash;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"identityHash",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:",{aBlock:aBlock},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:ifNotNil:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anotherBlock)._value_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Object)})},
-messageSends: ["value:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aBlock)._value_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock},smalltalk.Object)})},
-messageSends: ["value:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:ifNil:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aBlock)._value_(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Object)})},
-messageSends: ["value:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect",
-fn: function (){
-var self=this;
-function $InspectorHandler(){return smalltalk.InspectorHandler||(typeof InspectorHandler=="undefined"?nil:InspectorHandler)}
-return smalltalk.withContext(function($ctx1) { 
-_st($InspectorHandler())._inspect_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect",{},smalltalk.Object)})},
-messageSends: ["inspect:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspectOn:",
-fn: function (anInspector){
-var self=this;
-var variables;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-variables=_st($Dictionary())._new();
-_st(variables)._at_put_("#self",self);
-_st(_st(self._class())._allInstanceVariableNames())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(each,self._instVarAt_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-$1=anInspector;
-_st($1)._setLabel_(self._printString());
-$2=_st($1)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.Object)})},
-messageSends: ["new", "at:put:", "do:", "allInstanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instVarAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self['@'+aString] ;
-return self}, function($ctx1) {$ctx1.fill(self,"instVarAt:",{aString:aString},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "instVarAt:put:",
-fn: function (aString,anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- self['@' + aString] = anObject ;
-return self}, function($ctx1) {$ctx1.fill(self,"instVarAt:put:",{aString:aString,anObject:anObject},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBehavior",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBehavior",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBoolean",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isBoolean",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isClass",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCompiledMethod",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isCompiledMethod",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isKindOf:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isMemberOf_(aClass);
-if(smalltalk.assert($2)){
-$1=true;
-} else {
-$1=_st(self._class())._inheritsFrom_(aClass);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isKindOf:",{aClass:aClass},smalltalk.Object)})},
-messageSends: ["ifTrue:ifFalse:", "isMemberOf:", "inheritsFrom:", "class"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMemberOf:",
-fn: function (aClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class()).__eq(aClass);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isMemberOf:",{aClass:aClass},smalltalk.Object)})},
-messageSends: ["=", "class"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isMetaclass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isMetaclass",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isNil",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isNumber",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isPackage",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isPackage",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isParseFailure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isParseFailure",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isString",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isSymbol",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isSymbol",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "notNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._isNil())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"notNil",{},smalltalk.Object)})},
-messageSends: ["not", "isNil"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "perform:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._perform_withArguments_(aString,[]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"perform:",{aString:aString},smalltalk.Object)})},
-messageSends: ["perform:withArguments:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "perform:withArguments:",
-fn: function (aString,aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return smalltalk.send(self, aString._asSelector(), aCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"perform:withArguments:",{aString:aString,aCollection:aCollection},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "postCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"postCopy",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2;
-$1=aStream;
-$3=_st(_st(_st(self._class())._name())._first())._isVowel();
-if(smalltalk.assert($3)){
-$2="an ";
-} else {
-$2="a ";
-};
-_st($1)._nextPutAll_($2);
-_st(aStream)._nextPutAll_(_st(self._class())._name());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Object)})},
-messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isVowel", "first", "name", "class"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printString",
-fn: function (){
-var self=this;
-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 self._printOn_(stream);
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"printString",{},smalltalk.Object)})},
-messageSends: ["streamContents:", "printOn:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "putOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPut_(self);
-return self}, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},smalltalk.Object)})},
-messageSends: ["nextPut:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "respondsTo:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._canUnderstand_(aSelector);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"respondsTo:",{aSelector:aSelector},smalltalk.Object)})},
-messageSends: ["canUnderstand:", "class"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var copy = self.klass._new();
-		for(var i in self) {
-		if(/^@.+/.test(i)) {
-			copy[i] = self[i];
-		}
-		}
-		return copy;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldNotImplement",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("This method should not be implemented in ".__comma(_st(self._class())._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"shouldNotImplement",{},smalltalk.Object)})},
-messageSends: ["error:", ",", "name", "class"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "size",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("Object not indexable");
-return self}, function($ctx1) {$ctx1.fill(self,"size",{},smalltalk.Object)})},
-messageSends: ["error:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclassResponsibility",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("This method is a responsibility of a subclass");
-return self}, function($ctx1) {$ctx1.fill(self,"subclassResponsibility",{},smalltalk.Object)})},
-messageSends: ["error:"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "test",
-fn: function (){
-var self=this;
-var a;
-return smalltalk.withContext(function($ctx1) { 
-a=(1);
-self._halt();
-return self}, function($ctx1) {$ctx1.fill(self,"test",{a:a},smalltalk.Object)})},
-messageSends: ["halt"]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "throw:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- throw anObject ;
-return self}, function($ctx1) {$ctx1.fill(self,"throw:",{anObject:anObject},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "try:catch:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-try{return aBlock._value()} catch(e) {return anotherBlock._value_(e)};
-return self}, function($ctx1) {$ctx1.fill(self,"try:catch:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "value",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.valueOf();
-return self}, function($ctx1) {$ctx1.fill(self,"value",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "yourself",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"yourself",{},smalltalk.Object)})},
-messageSends: []}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "~=",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self.__eq(anObject)).__eq(false);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"~=",{anObject:anObject},smalltalk.Object)})},
-messageSends: ["="]}),
-smalltalk.Object);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "~~",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self.__eq_eq(anObject)).__eq(false);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"~~",{anObject:anObject},smalltalk.Object)})},
-messageSends: ["=", "=="]}),
-smalltalk.Object);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "class";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Object.klass)})},
-messageSends: []}),
-smalltalk.Object.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Object.klass)})},
-messageSends: []}),
-smalltalk.Object.klass);
-
-
-smalltalk.addClass('Boolean', smalltalk.Object, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "&",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self == true) {
-		return aBoolean;
-		} else {
-		return false;
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"&",{aBoolean:aBoolean},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(! aBoolean._isBoolean || ! aBoolean._isBoolean()) {
-			return false;
-		}
-		return Boolean(self == true) == aBoolean
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"=",{aBoolean:aBoolean},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "==",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__eq(aBoolean);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"==",{aBoolean:aBoolean},smalltalk.Boolean)})},
-messageSends: ["="]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "and:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self.__eq(true);
-$1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"and:",{aBlock:aBlock},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:", "="]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asBit",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self;
-if(smalltalk.assert($2)){
-$1=(1);
-} else {
-$1=(0);
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asBit",{},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:"]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return self.toString() ;
-return self}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifFalse:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self;
-$1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifFalse:",{aBlock:aBlock},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:"]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifFalse:ifTrue:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self;
-$1=_st($2)._ifTrue_ifFalse_(anotherBlock,aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:"]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifTrue:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self;
-$1=_st($2)._ifTrue_ifFalse_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifTrue:",{aBlock:aBlock},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:"]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifTrue:ifFalse:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self == true) {
-		return aBlock._value();
-		} else {
-		return anotherBlock._value();
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isBoolean",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isBoolean",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "not",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__eq(false);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"not",{},smalltalk.Boolean)})},
-messageSends: ["="]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "or:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self.__eq(true);
-$1=_st($2)._ifTrue_ifFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"or:",{aBlock:aBlock},smalltalk.Boolean)})},
-messageSends: ["ifTrue:ifFalse:", "="]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(self._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Boolean)})},
-messageSends: ["nextPutAll:", "asString"]}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "|",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self == true) {
-		return true;
-		} else {
-		return aBoolean;
-		}
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"|",{aBoolean:aBoolean},smalltalk.Boolean)})},
-messageSends: []}),
-smalltalk.Boolean);
-
-
-
-smalltalk.addClass('Date', smalltalk.Object, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "+",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self + aDate;
-return self}, function($ctx1) {$ctx1.fill(self,"+",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "-",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self - aDate;
-return self}, function($ctx1) {$ctx1.fill(self,"-",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self < aDate;
-return self}, function($ctx1) {$ctx1.fill(self,"<",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<=",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self <= aDate;
-return self}, function($ctx1) {$ctx1.fill(self,"<=",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self > aDate;
-return self}, function($ctx1) {$ctx1.fill(self,">",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">=",
-fn: function (aDate){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self >= aDate;
-return self}, function($ctx1) {$ctx1.fill(self,">=",{aDate:aDate},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asDateString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toDateString();
-return self}, function($ctx1) {$ctx1.fill(self,"asDateString",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asLocaleString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toLocaleString();
-return self}, function($ctx1) {$ctx1.fill(self,"asLocaleString",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asMilliseconds",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._time();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asMilliseconds",{},smalltalk.Date)})},
-messageSends: ["time"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._asMilliseconds();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asNumber",{},smalltalk.Date)})},
-messageSends: ["asMilliseconds"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toString();
-return self}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asTimeString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toTimeString();
-return self}, function($ctx1) {$ctx1.fill(self,"asTimeString",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "day",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._dayOfWeek();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"day",{},smalltalk.Date)})},
-messageSends: ["dayOfWeek"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "day:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._dayOfWeek_(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"day:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: ["dayOfWeek:"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dayOfMonth",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getDate();
-return self}, function($ctx1) {$ctx1.fill(self,"dayOfMonth",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dayOfMonth:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setDate(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"dayOfMonth:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dayOfWeek",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getDay() + 1;
-return self}, function($ctx1) {$ctx1.fill(self,"dayOfWeek",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "dayOfWeek:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.setDay(aNumber - 1);
-return self}, function($ctx1) {$ctx1.fill(self,"dayOfWeek:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hours",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getHours();
-return self}, function($ctx1) {$ctx1.fill(self,"hours",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "hours:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setHours(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"hours:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "milliseconds",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getMilliseconds();
-return self}, function($ctx1) {$ctx1.fill(self,"milliseconds",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "milliseconds:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setMilliseconds(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"milliseconds:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "minutes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getMinutes();
-return self}, function($ctx1) {$ctx1.fill(self,"minutes",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "minutes:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setMinutes(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"minutes:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "month",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getMonth() + 1;
-return self}, function($ctx1) {$ctx1.fill(self,"month",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "month:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setMonth(aNumber - 1);
-return self}, function($ctx1) {$ctx1.fill(self,"month:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(self._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Date)})},
-messageSends: ["nextPutAll:", "asString"]}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "seconds",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getSeconds();
-return self}, function($ctx1) {$ctx1.fill(self,"seconds",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "seconds:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setSeconds(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"seconds:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "time",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getTime();
-return self}, function($ctx1) {$ctx1.fill(self,"time",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "time:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setTime(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"time:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "year",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.getFullYear();
-return self}, function($ctx1) {$ctx1.fill(self,"year",{},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "year:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self.setFullYear(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"year:",{aNumber:aNumber},smalltalk.Date)})},
-messageSends: []}),
-smalltalk.Date);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromMilliseconds:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._new_(aNumber);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromMilliseconds:",{aNumber:aNumber},smalltalk.Date.klass)})},
-messageSends: ["new:"]}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromSeconds:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._fromMilliseconds_(_st(aNumber).__star((1000)));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromSeconds:",{aNumber:aNumber},smalltalk.Date.klass)})},
-messageSends: ["fromMilliseconds:", "*"]}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fromString:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._new_(aString);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},smalltalk.Date.klass)})},
-messageSends: ["new:"]}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "magnitude";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Date.klass)})},
-messageSends: []}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "millisecondsToRun:",
-fn: function (aBlock){
-var self=this;
-var t;
-function $Date(){return smalltalk.Date||(typeof Date=="undefined"?nil:Date)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-t=_st($Date())._now();
-_st(aBlock)._value();
-$1=_st(_st($Date())._now()).__minus(t);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"millisecondsToRun:",{aBlock:aBlock,t:t},smalltalk.Date.klass)})},
-messageSends: ["now", "value", "-"]}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return new Date(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"new:",{anObject:anObject},smalltalk.Date.klass)})},
-messageSends: []}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "now",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._today();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"now",{},smalltalk.Date.klass)})},
-messageSends: ["today"]}),
-smalltalk.Date.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "today",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"today",{},smalltalk.Date.klass)})},
-messageSends: ["new"]}),
-smalltalk.Date.klass);
-
-
-smalltalk.addClass('Number', smalltalk.Object, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "&",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self & aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"&",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "*",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self * aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"*",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "+",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self + aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "-",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self - aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"-",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "/",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self / aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"/",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self < aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"<",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "<=",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self <= aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"<=",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(! aNumber._isNumber || ! aNumber._isNumber()) {
-			return false;
-		}
-		return Number(self) == aNumber
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"=",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self > aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,">",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: ">=",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self >= aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,">=",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "@",
-fn: function (aNumber){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(self,aNumber);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"@",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: ["x:y:"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "\x5c\x5c",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self % aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"\x5c\x5c",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "abs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.abs(self);;
-return self}, function($ctx1) {$ctx1.fill(self,"abs",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("(".__comma(self._printString())).__comma(")");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJavascript",{},smalltalk.Number)})},
-messageSends: [",", "printString"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asNumber",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asPoint",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(self,self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asPoint",{},smalltalk.Number)})},
-messageSends: ["x:y:"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
- return String(self) ;
-return self}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "atRandom",
-fn: function (){
-var self=this;
-function $Random(){return smalltalk.Random||(typeof Random=="undefined"?nil:Random)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(_st(_st($Random())._new())._next()).__star(self))._truncated()).__plus((1));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atRandom",{},smalltalk.Number)})},
-messageSends: ["+", "truncated", "*", "next", "new"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ceiling",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.ceil(self);;
-return self}, function($ctx1) {$ctx1.fill(self,"ceiling",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copy",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._copy();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{},smalltalk.Number)})},
-messageSends: ["copy"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "even",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=(0).__eq(self.__backslash_backslash((2)));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"even",{},smalltalk.Number)})},
-messageSends: ["=", "\x5c\x5c"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "floor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.floor(self);;
-return self}, function($ctx1) {$ctx1.fill(self,"floor",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "identityHash",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._asString()).__comma("n");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"identityHash",{},smalltalk.Number)})},
-messageSends: [",", "asString"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isNumber",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isZero",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__eq((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isZero",{},smalltalk.Number)})},
-messageSends: ["="]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "max:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.max(self, aNumber);;
-return self}, function($ctx1) {$ctx1.fill(self,"max:",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "min:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.min(self, aNumber);;
-return self}, function($ctx1) {$ctx1.fill(self,"min:",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "negated",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=(0).__minus(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"negated",{},smalltalk.Number)})},
-messageSends: ["-"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "negative",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__lt((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"negative",{},smalltalk.Number)})},
-messageSends: ["<"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "odd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._even())._not();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"odd",{},smalltalk.Number)})},
-messageSends: ["not", "even"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "positive",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__gt_eq((0));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"positive",{},smalltalk.Number)})},
-messageSends: [">="]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_(self._asString());
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Number)})},
-messageSends: ["nextPutAll:", "asString"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printShowingDecimalPlaces:",
-fn: function (placesDesired){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.toFixed(placesDesired);
-return self}, function($ctx1) {$ctx1.fill(self,"printShowingDecimalPlaces:",{placesDesired:placesDesired},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "rounded",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.round(self);;
-return self}, function($ctx1) {$ctx1.fill(self,"rounded",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "sqrt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.sqrt(self);
-return self}, function($ctx1) {$ctx1.fill(self,"sqrt",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "squared",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__star(self);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"squared",{},smalltalk.Number)})},
-messageSends: ["*"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "timesRepeat:",
-fn: function (aBlock){
-var self=this;
-var count;
-return smalltalk.withContext(function($ctx1) { 
-count=(1);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(count).__gt(self);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-count=_st(count).__plus((1));
-return count;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"timesRepeat:",{aBlock:aBlock,count:count},smalltalk.Number)})},
-messageSends: ["whileFalse:", ">", "value", "+"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "to:",
-fn: function (aNumber){
-var self=this;
-var array,first,last,count;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-first=self._truncated();
-last=_st(_st(aNumber)._truncated()).__plus((1));
-count=(1);
-array=_st($Array())._new();
-_st(_st(last).__minus(first))._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(array)._at_put_(count,first);
-count=_st(count).__plus((1));
-count;
-first=_st(first).__plus((1));
-return first;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-$1=array;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"to:",{aNumber:aNumber,array:array,first:first,last:last,count:count},smalltalk.Number)})},
-messageSends: ["truncated", "+", "new", "timesRepeat:", "-", "at:put:"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "to:by:",
-fn: function (stop,step){
-var self=this;
-var array,value,pos;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-value=self;
-array=_st($Array())._new();
-pos=(1);
-$1=_st(step).__eq((0));
-if(smalltalk.assert($1)){
-self._error_("step must be non-zero");
-};
-$2=_st(step).__lt((0));
-if(smalltalk.assert($2)){
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(array)._at_put_(pos,value);
-pos=_st(pos).__plus((1));
-pos;
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(array)._at_put_(pos,value);
-pos=_st(pos).__plus((1));
-pos;
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
-};
-$3=array;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"to:by:",{stop:stop,step:step,array:array,value:value,pos:pos},smalltalk.Number)})},
-messageSends: ["new", "ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "at:put:", "+", "<="]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "to:by:do:",
-fn: function (stop,step,aBlock){
-var self=this;
-var value;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-value=self;
-$1=_st(step).__eq((0));
-if(smalltalk.assert($1)){
-self._error_("step must be non-zero");
-};
-$2=_st(step).__lt((0));
-if(smalltalk.assert($2)){
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__gt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(value);
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(value);
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"to:by:do:",{stop:stop,step:step,aBlock:aBlock,value:value},smalltalk.Number)})},
-messageSends: ["ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "value:", "+", "<="]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "to:do:",
-fn: function (stop,aBlock){
-var self=this;
-var nextValue;
-return smalltalk.withContext(function($ctx1) { 
-nextValue=self;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(nextValue).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(nextValue);
-nextValue=_st(nextValue).__plus((1));
-return nextValue;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"to:do:",{stop:stop,aBlock:aBlock,nextValue:nextValue},smalltalk.Number)})},
-messageSends: ["whileTrue:", "<=", "value:", "+"]}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "truncated",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		if(self >= 0) {
-			return Math.floor(self);
-		} else {
-			return Math.floor(self * (-1)) * (-1);
-		};
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"truncated",{},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "|",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self | aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"|",{aNumber:aNumber},smalltalk.Number)})},
-messageSends: []}),
-smalltalk.Number);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "magnitude";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Number.klass)})},
-messageSends: []}),
-smalltalk.Number.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pi",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.PI;
-return self}, function($ctx1) {$ctx1.fill(self,"pi",{},smalltalk.Number.klass)})},
-messageSends: []}),
-smalltalk.Number.klass);
-
-
-smalltalk.addClass('Point', smalltalk.Object, ['x', 'y'], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "*",
-fn: function (aPoint){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(_st(self._x()).__star(_st(_st(aPoint)._asPoint())._x()),_st(self._y()).__star(_st(_st(aPoint)._asPoint())._y()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"*",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["x:y:", "*", "x", "asPoint", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "+",
-fn: function (aPoint){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(_st(self._x()).__plus(_st(_st(aPoint)._asPoint())._x()),_st(self._y()).__plus(_st(_st(aPoint)._asPoint())._y()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"+",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["x:y:", "+", "x", "asPoint", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "-",
-fn: function (aPoint){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(_st(self._x()).__minus(_st(_st(aPoint)._asPoint())._x()),_st(self._y()).__minus(_st(_st(aPoint)._asPoint())._y()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"-",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["x:y:", "-", "x", "asPoint", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "/",
-fn: function (aPoint){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($Point())._x_y_(_st(self._x()).__slash(_st(_st(aPoint)._asPoint())._x()),_st(self._y()).__slash(_st(_st(aPoint)._asPoint())._y()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"/",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["x:y:", "/", "x", "asPoint", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "=",
-fn: function (aPoint){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(aPoint)._class()).__eq(self._class()))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(aPoint)._x()).__eq(self._x())).__and(_st(_st(aPoint)._y()).__eq(self._y()));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"=",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["and:", "=", "class", "&", "x", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asPoint",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asPoint",{},smalltalk.Point)})},
-messageSends: []}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self["@x"])._printOn_(aStream);
-_st(aStream)._nextPutAll_("@");
-$1=_st(_st(self["@y"])._notNil())._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@y"])._negative();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-if(smalltalk.assert($1)){
-_st(aStream)._space();
-};
-_st(self["@y"])._printOn_(aStream);
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Point)})},
-messageSends: ["printOn:", "nextPutAll:", "ifTrue:", "and:", "notNil", "negative", "space"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "translateBy:",
-fn: function (delta){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(delta)._x()).__plus(self["@x"])).__at(_st(_st(delta)._y()).__plus(self["@y"]));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"translateBy:",{delta:delta},smalltalk.Point)})},
-messageSends: ["@", "+", "x", "y"]}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "x",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@x"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"x",{},smalltalk.Point)})},
-messageSends: []}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "x:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@x"]=aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"x:",{aNumber:aNumber},smalltalk.Point)})},
-messageSends: []}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "y",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@y"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"y",{},smalltalk.Point)})},
-messageSends: []}),
-smalltalk.Point);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "y:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@y"]=aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"y:",{aNumber:aNumber},smalltalk.Point)})},
-messageSends: []}),
-smalltalk.Point);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "magnitude";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.Point.klass)})},
-messageSends: []}),
-smalltalk.Point.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "x:y:",
-fn: function (aNumber,anotherNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._x_(aNumber);
-_st($2)._y_(anotherNumber);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"x:y:",{aNumber:aNumber,anotherNumber:anotherNumber},smalltalk.Point.klass)})},
-messageSends: ["x:", "new", "y:", "yourself"]}),
-smalltalk.Point.klass);
-
-
-smalltalk.addClass('Random', smalltalk.Object, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return Math.random();
-return self}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.Random)})},
-messageSends: []}),
-smalltalk.Random);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "next:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st((1)._to_(anInteger))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._next();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger},smalltalk.Random)})},
-messageSends: ["collect:", "to:", "next"]}),
-smalltalk.Random);
-
-
-
-smalltalk.addClass('UndefinedObject', smalltalk.Object, [], 'Kernel-Objects');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asJSON",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=null;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self;
-$1=_st($2)._ifNil_ifNotNil_(aBlock,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:",{aBlock:aBlock},smalltalk.UndefinedObject)})},
-messageSends: ["ifNil:ifNotNil:"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNil:ifNotNil:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(aBlock)._value();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.UndefinedObject)})},
-messageSends: ["value"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "ifNotNil:ifNil:",
-fn: function (aBlock,anotherBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(anotherBlock)._value();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.UndefinedObject)})},
-messageSends: ["value"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isImmutable",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return true;
-}, function($ctx1) {$ctx1.fill(self,"isNil",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "notNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"notNil",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "printOn:",
-fn: function (aStream){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(aStream)._nextPutAll_("nil");
-return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.UndefinedObject)})},
-messageSends: ["nextPutAll:"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shallowCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},smalltalk.UndefinedObject)})},
-messageSends: []}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:",
-fn: function (aString,anotherString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString},smalltalk.UndefinedObject)})},
-messageSends: ["subclass:instanceVariableNames:package:"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:category:",
-fn: function (aString,aString2,aString3){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-self._deprecatedAPI();
-$1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3},smalltalk.UndefinedObject)})},
-messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"]}),
-smalltalk.UndefinedObject);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclass:instanceVariableNames:package:",
-fn: function (aString,aString2,aString3){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st($ClassBuilder())._new())._superclass_subclass_instanceVariableNames_package_(self,_st(aString)._asString(),aString2,aString3);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3},smalltalk.UndefinedObject)})},
-messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"]}),
-smalltalk.UndefinedObject);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._error_("You cannot create new instances of UndefinedObject. Use nil");
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.UndefinedObject.klass)})},
-messageSends: ["error:"]}),
-smalltalk.UndefinedObject.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Kernel-Objects.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Objects", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Objects');
+smalltalk.packages["Kernel-Objects"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel-Objects');
 smalltalk.Object.comment="**I am the root of the Smalltalk class system**. All classes in the system are subclasses of me.\x0a\x0aI provide default behavior common to all normal objects, such as:\x0a\x0a- accessing\x0a- copying\x0a- comparison\x0a- error handling\x0a- message sending\x0a- reflection\x0a\x0aAlso utility messages that all objects should respond to are defined here.\x0a\x0aI have no instance variable.\x0a\x0a##Access\x0a\x0aInstance variables can be accessed with `#instVarAt:` and `#instVarAt:put:`. `#instanceVariableNames` answers a collection of all instance variable names.\x0aAccessing JavaScript properties of an object is done through `#basicAt:`, `#basicAt:put:` and `basicDelete:`.\x0a\x0a##Copying\x0a\x0aCopying an object is handled by `#copy` and `#deepCopy`. The first one performs a shallow copy of the receiver, while the second one performs a deep copy.\x0aThe hook method `#postCopy` can be overriden in subclasses to copy fields as necessary to complete the full copy. It will be sent by the copy of the receiver.\x0a\x0a##Comparison\x0a\x0aI understand equality `#=` and identity `#==` comparison.\x0a\x0a##Error handling\x0a\x0a- `#halt` is the typical message to use for inserting breakpoints during debugging.\x0a- `#error:` throws a generic error exception\x0a- `#doesNotUnderstand:` handles the fact that there was an attempt to send the given message to the receiver but the receiver does not understand this message.\x0a\x09Overriding this message can be useful to implement proxies for example.";
@@ -3691,4 +3692,4 @@ referencedClasses: []
 }),
 smalltalk.UndefinedObject.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 4147
js/Kernel-Tests.deploy.js

@@ -1,4147 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Tests');
-
-smalltalk.addClass('BlockClosureTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCanClearInterval",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st($Error())._new())._signal();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._valueWithInterval_((0)))._clearInterval();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testCanClearInterval",{},smalltalk.BlockClosureTest)})},
-messageSends: ["shouldnt:raise:", "clearInterval", "valueWithInterval:", "signal", "new"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCanClearTimeout",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st($Error())._new())._signal();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._valueWithTimeout_((0)))._clearTimeout();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testCanClearTimeout",{},smalltalk.BlockClosureTest)})},
-messageSends: ["shouldnt:raise:", "clearTimeout", "valueWithTimeout:", "signal", "new"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCompiledSource",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__plus((1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._compiledSource())._includesSubString_("function"));
-return self}, function($ctx1) {$ctx1.fill(self,"testCompiledSource",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:", "includesSubString:", "compiledSource", "+"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCurrySelf",
-fn: function (){
-var self=this;
-var curriedMethod,array;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-curriedMethod=_st(_st((function(selfarg,x){
-return smalltalk.withContext(function($ctx2) {
-return _st(selfarg)._at_(x);
-}, function($ctx2) {$ctx2.fillBlock({selfarg:selfarg,x:x},$ctx1,1)})}))._currySelf())._asCompiledMethod_("foo:");
-array=[(3), (1), (4)];
-_st(_st($ClassBuilder())._new())._installMethod_forClass_category_(curriedMethod,$Array(),"**test helper");
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_equals_(_st(array)._foo_((2)),(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Array())._removeCompiledMethod_(curriedMethod);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array},smalltalk.BlockClosureTest)})},
-messageSends: ["asCompiledMethod:", "currySelf", "at:", "installMethod:forClass:category:", "new", "ensure:", "assert:equals:", "foo:", "removeCompiledMethod:"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEnsure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return (3);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (4);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testEnsure",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:equals:", "ensure:"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEnsureRaises",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st($Error())._new())._signal();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
-return true;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testEnsureRaises",{},smalltalk.BlockClosureTest)})},
-messageSends: ["should:raise:", "ensure:", "signal", "new"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testExceptionSemantics",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._timeout_((100));
-_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st((function(){
-return smalltalk.withContext(function($ctx3) {
-self._assert_(true);
-_st($Error())._signal();
-self._deny_(true);
-return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx3) {
-return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{},smalltalk.BlockClosureTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "assert:", "signal", "deny:", "finished"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNewWithValues",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-	function theTestPrototype() {this.name = "theTestPrototype";}
-	function theTestConstructor(arg1, arg2, arg3) {}
-	theTestConstructor.prototype = new theTestPrototype;
-
-	var theWrappedConstructor = _st(theTestConstructor);
-	var theResult = theWrappedConstructor._newWithValues_([1, 2, 3]);
-	self._assert_equals_(Object.getPrototypeOf(theResult).name, 'theTestPrototype');
-
-	"newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made."
-	function constructionShouldFail() {var anotherResult = theWrappedConstructor._newWithValues_('This is so wrong');}
-	self._should_raise_(_st(constructionShouldFail), smalltalk.Error);;
-return self}, function($ctx1) {$ctx1.fill(self,"testNewWithValues",{},smalltalk.BlockClosureTest)})},
-messageSends: []}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNumArgs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._numArgs(),(0));
-self._assert_equals_(_st((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)})}))._numArgs(),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testNumArgs",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:equals:", "numArgs"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testOnDo",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Error())._new())._signal();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"testOnDo",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:", "on:do:", "signal", "new"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValue",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__plus((1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._value(),(2));
-self._assert_equals_(_st((function(x){
-return smalltalk.withContext(function($ctx2) {
-return _st(x).__plus((1));
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)})}))._value_((2)),(3));
-self._assert_equals_(_st((function(x,y){
-return smalltalk.withContext(function($ctx2) {
-return _st(x).__star(y);
-}, function($ctx2) {$ctx2.fillBlock({x:x,y:y},$ctx1,3)})}))._value_value_((2),(4)),(8));
-self._assert_equals_(_st((function(a,b,c){
-return smalltalk.withContext(function($ctx2) {
-return (1);
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b,c:c},$ctx1,4)})}))._value(),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testValue",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:equals:", "value", "+", "value:", "value:value:", "*"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValueWithPossibleArguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithPossibleArguments_([(3), (4)]),(1));
-self._assert_equals_(_st((function(a){
-return smalltalk.withContext(function($ctx2) {
-return _st(a).__plus((4));
-}, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)})}))._valueWithPossibleArguments_([(3), (4)]),(7));
-self._assert_equals_(_st((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-return _st(a).__plus(b);
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)})}))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
-return self}, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments",{},smalltalk.BlockClosureTest)})},
-messageSends: ["assert:equals:", "valueWithPossibleArguments:", "+"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testWhileFalse",
-fn: function (){
-var self=this;
-var i;
-return smalltalk.withContext(function($ctx1) { 
-i=(0);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(i).__gt((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._assert_equals_(i,(6));
-i=(0);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-i;
-return _st(i).__gt((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))._whileFalse();
-self._assert_equals_(i,(6));
-return self}, function($ctx1) {$ctx1.fill(self,"testWhileFalse",{i:i},smalltalk.BlockClosureTest)})},
-messageSends: ["whileFalse:", ">", "+", "assert:equals:", "whileFalse"]}),
-smalltalk.BlockClosureTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testWhileTrue",
-fn: function (){
-var self=this;
-var i;
-return smalltalk.withContext(function($ctx1) { 
-i=(0);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(i).__lt((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._assert_equals_(i,(5));
-i=(0);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-i;
-return _st(i).__lt((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))._whileTrue();
-self._assert_equals_(i,(5));
-return self}, function($ctx1) {$ctx1.fill(self,"testWhileTrue",{i:i},smalltalk.BlockClosureTest)})},
-messageSends: ["whileTrue:", "<", "+", "assert:equals:", "whileTrue"]}),
-smalltalk.BlockClosureTest);
-
-
-
-smalltalk.addClass('BooleanTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEquality",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._deny_((0).__eq(false));
-self._deny_(false.__eq((0)));
-self._deny_("".__eq(false));
-self._deny_(false.__eq(""));
-self._assert_(true.__eq(true));
-self._deny_(false.__eq(true));
-self._deny_(true.__eq(false));
-self._assert_(false.__eq(false));
-self._assert_(_st(true._yourself()).__eq(true));
-self._assert_(_st(true._yourself()).__eq(true._yourself()));
-return self}, function($ctx1) {$ctx1.fill(self,"testEquality",{},smalltalk.BooleanTest)})},
-messageSends: ["deny:", "=", "assert:", "yourself"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIdentity",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._deny_((0).__eq_eq(false));
-self._deny_(false.__eq_eq((0)));
-self._deny_("".__eq_eq(false));
-self._deny_(false.__eq_eq(""));
-self._assert_(true.__eq_eq(true));
-self._deny_(false.__eq_eq(true));
-self._deny_(true.__eq_eq(false));
-self._assert_(false.__eq_eq(false));
-self._assert_(_st(true._yourself()).__eq_eq(true));
-self._assert_(_st(true._yourself()).__eq_eq(true._yourself()));
-return self}, function($ctx1) {$ctx1.fill(self,"testIdentity",{},smalltalk.BooleanTest)})},
-messageSends: ["deny:", "==", "assert:", "yourself"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfTrueIfFalse",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16;
-$1=self;
-if(smalltalk.assert(true)){
-$2="alternative block";
-};
-_st($1)._assert_equals_($2,"alternative block");
-$3=self;
-if(! smalltalk.assert(true)){
-$4="alternative block";
-};
-_st($3)._assert_equals_($4,nil);
-$5=self;
-if(smalltalk.assert(false)){
-$6="alternative block";
-};
-_st($5)._assert_equals_($6,nil);
-$7=self;
-if(! smalltalk.assert(false)){
-$8="alternative block";
-};
-_st($7)._assert_equals_($8,"alternative block");
-$9=self;
-if(smalltalk.assert(false)){
-$10="alternative block";
-} else {
-$10="alternative block2";
-};
-_st($9)._assert_equals_($10,"alternative block2");
-$11=self;
-if(smalltalk.assert(false)){
-$12="alternative block2";
-} else {
-$12="alternative block";
-};
-_st($11)._assert_equals_($12,"alternative block");
-$13=self;
-if(smalltalk.assert(true)){
-$14="alternative block";
-} else {
-$14="alternative block2";
-};
-_st($13)._assert_equals_($14,"alternative block");
-$15=self;
-if(smalltalk.assert(true)){
-$16="alternative block2";
-} else {
-$16="alternative block";
-};
-_st($15)._assert_equals_($16,"alternative block2");
-return self}, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalse",{},smalltalk.BooleanTest)})},
-messageSends: ["assert:equals:", "ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfTrueIfFalseWithBoxing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$2,$4,$6,$5,$7,$9,$8,$10,$12,$11,$13,$15,$14,$16,$18,$17,$19,$21,$20,$22,$24,$23;
-$1=self;
-$3=true._yourself();
-if(smalltalk.assert($3)){
-$2="alternative block";
-};
-_st($1)._assert_equals_($2,"alternative block");
-$4=self;
-$6=true._yourself();
-if(! smalltalk.assert($6)){
-$5="alternative block";
-};
-_st($4)._assert_equals_($5,nil);
-$7=self;
-$9=false._yourself();
-if(smalltalk.assert($9)){
-$8="alternative block";
-};
-_st($7)._assert_equals_($8,nil);
-$10=self;
-$12=false._yourself();
-if(! smalltalk.assert($12)){
-$11="alternative block";
-};
-_st($10)._assert_equals_($11,"alternative block");
-$13=self;
-$15=false._yourself();
-if(smalltalk.assert($15)){
-$14="alternative block";
-} else {
-$14="alternative block2";
-};
-_st($13)._assert_equals_($14,"alternative block2");
-$16=self;
-$18=false._yourself();
-if(smalltalk.assert($18)){
-$17="alternative block2";
-} else {
-$17="alternative block";
-};
-_st($16)._assert_equals_($17,"alternative block");
-$19=self;
-$21=true._yourself();
-if(smalltalk.assert($21)){
-$20="alternative block";
-} else {
-$20="alternative block2";
-};
-_st($19)._assert_equals_($20,"alternative block");
-$22=self;
-$24=true._yourself();
-if(smalltalk.assert($24)){
-$23="alternative block2";
-} else {
-$23="alternative block";
-};
-_st($22)._assert_equals_($23,"alternative block2");
-return self}, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalseWithBoxing",{},smalltalk.BooleanTest)})},
-messageSends: ["assert:equals:", "ifTrue:", "yourself", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testLogic",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=self;
-_st($1)._assert_(true.__and(true));
-_st($1)._deny_(true.__and(false));
-_st($1)._deny_(false.__and(true));
-$2=_st($1)._deny_(false.__and(false));
-$3=self;
-_st($3)._assert_(true.__or(true));
-_st($3)._assert_(true.__or(false));
-_st($3)._assert_(false.__or(true));
-$4=_st($3)._deny_(false.__or(false));
-$5=self;
-_st($5)._assert_(true.__and((1).__gt((0))));
-_st($5)._deny_(_st((1).__gt((0))).__and(false));
-$6=_st($5)._deny_(_st((1).__gt((0))).__and((1).__gt((2))));
-$7=self;
-_st($7)._assert_(false.__or((1).__gt((0))));
-_st($7)._assert_(_st((1).__gt((0))).__or(false));
-$8=_st($7)._assert_(_st((1).__gt((0))).__or((1).__gt((2))));
-return self}, function($ctx1) {$ctx1.fill(self,"testLogic",{},smalltalk.BooleanTest)})},
-messageSends: ["assert:", "&", "deny:", "|", ">"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testLogicKeywords",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8;
-$1=self;
-_st($1)._assert_(true._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})));
-_st($1)._deny_(true._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})));
-_st($1)._deny_(false._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})})));
-$2=_st($1)._deny_(false._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})})));
-$3=self;
-_st($3)._assert_(true._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})})));
-_st($3)._assert_(true._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})})));
-_st($3)._assert_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})})));
-$4=_st($3)._deny_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)})})));
-$5=self;
-_st($5)._assert_(true._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((0));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)})})));
-_st($5)._deny_(_st((1).__gt((0)))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)})})));
-$6=_st($5)._deny_(_st((1).__gt((0)))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((2));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)})})));
-$7=self;
-_st($7)._assert_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((0));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)})})));
-_st($7)._assert_(_st((1).__gt((0)))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,13)})})));
-$8=_st($7)._assert_(_st((1).__gt((0)))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((2));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"testLogicKeywords",{},smalltalk.BooleanTest)})},
-messageSends: ["assert:", "and:", "deny:", "or:", ">"]}),
-smalltalk.BooleanTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNonBooleanError",
-fn: function (){
-var self=this;
-function $NonBooleanReceiver(){return smalltalk.NonBooleanReceiver||(typeof NonBooleanReceiver=="undefined"?nil:NonBooleanReceiver)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-if(smalltalk.assert("")){
-} else {
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$NonBooleanReceiver());
-return self}, function($ctx1) {$ctx1.fill(self,"testNonBooleanError",{},smalltalk.BooleanTest)})},
-messageSends: ["should:raise:", "ifTrue:ifFalse:"]}),
-smalltalk.BooleanTest);
-
-
-
-smalltalk.addClass('ClassBuilderTest', smalltalk.TestCase, ['builder', 'theClass'], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-return smalltalk.withContext(function($ctx1) { 
-self["@builder"]=_st($ClassBuilder())._new();
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["new"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@theClass"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(_st($Smalltalk())._current())._removeClass_(self["@theClass"]);
-self["@theClass"]=nil;
-self["@theClass"];
-};
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["ifNotNil:", "removeClass:", "current"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testClassCopy",
-fn: function (){
-var self=this;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-return smalltalk.withContext(function($ctx1) { 
-self["@theClass"]=_st(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
-self._assert_(_st(_st(self["@theClass"])._superclass()).__eq_eq(_st($ObjectMock())._superclass()));
-self._assert_(_st(_st(self["@theClass"])._instanceVariableNames()).__eq_eq(_st($ObjectMock())._instanceVariableNames()));
-self._assert_equals_(_st(self["@theClass"])._name(),"ObjectMock2");
-self._assert_(_st(_st(self["@theClass"])._package()).__eq_eq(_st($ObjectMock())._package()));
-self._assert_equals_(_st(_st(self["@theClass"])._methodDictionary())._keys(),_st(_st($ObjectMock())._methodDictionary())._keys());
-return self}, function($ctx1) {$ctx1.fill(self,"testClassCopy",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["copyClass:named:", "assert:", "==", "superclass", "instanceVariableNames", "assert:equals:", "name", "package", "keys", "methodDictionary"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testClassMigration",
-fn: function (){
-var self=this;
-var instance,oldClass;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $ObjectMock2(){return smalltalk.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
-return smalltalk.withContext(function($ctx1) { 
-oldClass=_st(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
-instance=_st(_st(_st($Smalltalk())._current())._at_("ObjectMock2"))._new();
-_st($ObjectMock())._subclass_instanceVariableNames_package_(_st(_st($Smalltalk())._current())._at_("ObjectMock2"),"","Kernel-Tests");
-self._deny_(_st(oldClass).__eq_eq($ObjectMock2()));
-self._assert_(_st(_st($ObjectMock2())._superclass()).__eq_eq($ObjectMock()));
-self._assert_(_st(_st($ObjectMock2())._instanceVariableNames())._isEmpty());
-self._assert_equals_(_st($ObjectMock2())._selectors(),_st(oldClass)._selectors());
-self._assert_equals_(_st($ObjectMock2())._comment(),_st(oldClass)._comment());
-self._assert_equals_(_st(_st($ObjectMock2())._package())._name(),"Kernel-Tests");
-self._deny_(_st(_st(instance)._class()).__eq_eq($ObjectMock2()));
-self._assert_(_st(_st(_st($Smalltalk())._current())._at_(_st(_st(instance)._class())._name()))._isNil());
-_st(_st($Smalltalk())._current())._removeClass_($ObjectMock2());
-return self}, function($ctx1) {$ctx1.fill(self,"testClassMigration",{instance:instance,oldClass:oldClass},smalltalk.ClassBuilderTest)})},
-messageSends: ["copyClass:named:", "new", "at:", "current", "subclass:instanceVariableNames:package:", "deny:", "==", "assert:", "superclass", "isEmpty", "instanceVariableNames", "assert:equals:", "selectors", "comment", "name", "package", "class", "isNil", "removeClass:"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testClassMigrationWithClassInstanceVariables",
-fn: function (){
-var self=this;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-function $ObjectMock2(){return smalltalk.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
-_st(_st($ObjectMock2())._class())._instanceVariableNames_("foo bar");
-_st($ObjectMock())._subclass_instanceVariableNames_package_(_st(_st($Smalltalk())._current())._at_("ObjectMock2"),"","Kernel-Tests");
-self._assert_equals_(_st(_st($ObjectMock2())._class())._instanceVariableNames(),["foo", "bar"]);
-_st(_st($Smalltalk())._current())._removeClass_($ObjectMock2());
-return self}, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithClassInstanceVariables",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["copyClass:named:", "instanceVariableNames:", "class", "subclass:instanceVariableNames:package:", "at:", "current", "assert:equals:", "instanceVariableNames", "removeClass:"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testClassMigrationWithSubclasses",
-fn: function (){
-var self=this;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-function $ObjectMock2(){return smalltalk.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
-function $ObjectMock3(){return smalltalk.ObjectMock3||(typeof ObjectMock3=="undefined"?nil:ObjectMock3)}
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $ObjectMock4(){return smalltalk.ObjectMock4||(typeof ObjectMock4=="undefined"?nil:ObjectMock4)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
-_st($ObjectMock2())._subclass_instanceVariableNames_package_("ObjectMock3","","Kernel-Tests");
-_st($ObjectMock3())._subclass_instanceVariableNames_package_("ObjectMock4","","Kernel-Tests");
-_st($ObjectMock())._subclass_instanceVariableNames_package_(_st(_st($Smalltalk())._current())._at_("ObjectMock2"),"","Kernel-Tests");
-self._assert_(_st(_st($ObjectMock())._subclasses())._includes_($ObjectMock2()));
-self._assert_(_st(_st($ObjectMock2())._subclasses())._includes_($ObjectMock3()));
-self._assert_(_st(_st($ObjectMock3())._subclasses())._includes_($ObjectMock4()));
-_st(_st($ObjectMock())._allSubclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Smalltalk())._current())._removeClass_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithSubclasses",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["copyClass:named:", "subclass:instanceVariableNames:package:", "at:", "current", "assert:", "includes:", "subclasses", "do:", "allSubclasses", "removeClass:"]}),
-smalltalk.ClassBuilderTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstanceVariableNames",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@builder"])._instanceVariableNamesFor_("  hello   world   "),["hello", "world"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testInstanceVariableNames",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["assert:equals:", "instanceVariableNamesFor:"]}),
-smalltalk.ClassBuilderTest);
-
-
-
-smalltalk.addClass('CollectionTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assertSameContents:as:",
-fn: function (aCollection,anotherCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(aCollection)._size()).__eq(_st(anotherCollection)._size()));
-_st(aCollection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_(_st(_st(aCollection)._occurrencesOf_(each)).__eq(_st(anotherCollection)._occurrencesOf_(each)));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"assertSameContents:as:",{aCollection:aCollection,anotherCollection:anotherCollection},smalltalk.CollectionTest)})},
-messageSends: ["assert:", "=", "size", "do:", "occurrencesOf:"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collectionClass())._withAll_(self._defaultValues());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.CollectionTest)})},
-messageSends: ["withAll:", "collectionClass", "defaultValues"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._collectionClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.CollectionTest)})},
-messageSends: ["collectionClass", "class"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionWithDuplicates",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collectionClass())._withAll_(["a", "b", "c", (1), (2), (1), "a"]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},smalltalk.CollectionTest)})},
-messageSends: ["withAll:", "collectionClass"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "defaultValues",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[(1), (2), (3), (-4)];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"defaultValues",{},smalltalk.CollectionTest)})},
-messageSends: []}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isCollectionReadOnly",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"isCollectionReadOnly",{},smalltalk.CollectionTest)})},
-messageSends: []}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsArray",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assertSameContents_as_(self._collection(),_st(self._collection())._asArray());
-return self}, function($ctx1) {$ctx1.fill(self,"testAsArray",{},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "collection", "asArray"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsOrderedCollection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assertSameContents_as_(self._collection(),_st(self._collection())._asOrderedCollection());
-return self}, function($ctx1) {$ctx1.fill(self,"testAsOrderedCollection",{},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "collection", "asOrderedCollection"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsSet",
-fn: function (){
-var self=this;
-var c,set;
-return smalltalk.withContext(function($ctx1) { 
-c=self._collectionWithDuplicates();
-set=_st(c)._asSet();
-self._assert_equals_(_st(set)._size(),(5));
-_st(c)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_(_st(set)._includes_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testAsSet",{c:c,set:set},smalltalk.CollectionTest)})},
-messageSends: ["collectionWithDuplicates", "asSet", "assert:equals:", "size", "do:", "assert:", "includes:"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCollect",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection=[(1), (2), (3), (4)];
-self._assertSameContents_as_(_st(self._collection())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._abs();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "collect:", "collection", "abs"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDetect",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._detect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__lt((0));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),(-4));
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._detect_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testDetect",{},smalltalk.CollectionTest)})},
-messageSends: ["assert:equals:", "detect:", "collection", "<", "should:raise:", "="]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDo",
-fn: function (){
-var self=this;
-var newCollection;
-function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-newCollection=_st($OrderedCollection())._new();
-_st(self._collection())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(newCollection)._add_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._assertSameContents_as_(self._collection(),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testDo",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["new", "do:", "collection", "add:", "assertSameContents:as:"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIsEmpty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(self._collectionClass())._new())._isEmpty());
-self._deny_(_st(self._collection())._isEmpty());
-return self}, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{},smalltalk.CollectionTest)})},
-messageSends: ["assert:", "isEmpty", "new", "collectionClass", "deny:", "collection"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSelect",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection=[(2), (-4)];
-self._assertSameContents_as_(_st(self._collection())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._even();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "select:", "collection", "even"]}),
-smalltalk.CollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(_st(self._collectionClass())._new())._size(),(0));
-self._assert_equals_(_st(self._collection())._size(),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testSize",{},smalltalk.CollectionTest)})},
-messageSends: ["assert:equals:", "size", "new", "collectionClass", "collection"]}),
-smalltalk.CollectionTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.CollectionTest.klass)})},
-messageSends: []}),
-smalltalk.CollectionTest.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAbstract",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collectionClass())._isNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.CollectionTest.klass)})},
-messageSends: ["isNil", "collectionClass"]}),
-smalltalk.CollectionTest.klass);
-
-
-smalltalk.addClass('IndexableCollectionTest', smalltalk.CollectionTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAt",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._at_((4)),(-4));
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testAt",{},smalltalk.IndexableCollectionTest)})},
-messageSends: ["assert:equals:", "at:", "collection", "should:raise:"]}),
-smalltalk.IndexableCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtIfAbsent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._at_ifAbsent_(_st(_st(self._collection())._size()).__plus((1)),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "none";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"none");
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{},smalltalk.IndexableCollectionTest)})},
-messageSends: ["assert:equals:", "at:ifAbsent:", "collection", "+", "size"]}),
-smalltalk.IndexableCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testContains",
-fn: function (){
-var self=this;
-var collection;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-collection=self._collection();
-self._assert_(_st(self._collection())._contains_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(self._collection())._first());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-self._deny_(_st(self._collection())._contains_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st($Object())._new());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"testContains",{collection:collection},smalltalk.IndexableCollectionTest)})},
-messageSends: ["collection", "assert:", "contains:", "=", "first", "deny:", "new"]}),
-smalltalk.IndexableCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIndexOf",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._indexOf_((2)),(2));
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._indexOf_((999));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),"sentinel");
-return self}, function($ctx1) {$ctx1.fill(self,"testIndexOf",{},smalltalk.IndexableCollectionTest)})},
-messageSends: ["assert:equals:", "indexOf:", "collection", "should:raise:", "indexOf:ifAbsent:"]}),
-smalltalk.IndexableCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testWithIndexDo",
-fn: function (){
-var self=this;
-var collection;
-return smalltalk.withContext(function($ctx1) { 
-collection=self._collection();
-_st(self._collection())._withIndexDo_((function(each,index){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_equals_(_st(collection)._at_(index),each);
-}, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testWithIndexDo",{collection:collection},smalltalk.IndexableCollectionTest)})},
-messageSends: ["collection", "withIndexDo:", "assert:equals:", "at:"]}),
-smalltalk.IndexableCollectionTest);
-
-
-
-smalltalk.addClass('HashedCollectionTest', smalltalk.IndexableCollectionTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HashedCollection._from_(["b".__minus_gt((1)),"a".__minus_gt((2)),"c".__minus_gt((3)),"d".__minus_gt((-4))]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.HashedCollectionTest)})},
-messageSends: ["->"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionWithDuplicates",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=smalltalk.HashedCollection._from_(["b".__minus_gt((1)),"a".__minus_gt((2)),"c".__minus_gt((3)),"d".__minus_gt((-4)),"e".__minus_gt((1)),"f".__minus_gt((2)),"g".__minus_gt((10))]);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},smalltalk.HashedCollectionTest)})},
-messageSends: ["->"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsDictionary",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(_st(self._collectionClass())._new())._asDictionary())._isMemberOf_($Dictionary()));
-return self}, function($ctx1) {$ctx1.fill(self,"testAsDictionary",{},smalltalk.HashedCollectionTest)})},
-messageSends: ["assert:", "isMemberOf:", "asDictionary", "new", "collectionClass"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAt",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._at_("a"),(2));
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testAt",{},smalltalk.HashedCollectionTest)})},
-messageSends: ["assert:equals:", "at:", "collection", "should:raise:"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testContains",
-fn: function (){
-var self=this;
-var collection;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-collection=self._collection();
-self._assert_(_st(self._collection())._contains_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(_st(self._collection())._values())._first());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})));
-self._deny_(_st(self._collection())._contains_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st($Object())._new());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"testContains",{collection:collection},smalltalk.HashedCollectionTest)})},
-messageSends: ["collection", "assert:", "contains:", "=", "first", "values", "deny:", "new"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testFrom",
-fn: function (){
-var self=this;
-var associations;
-return smalltalk.withContext(function($ctx1) { 
-associations=["a".__minus_gt((1)),"b".__minus_gt((2))];
-self._assertSameContents_as_(_st(_st(self._class())._collectionClass())._from_(associations),smalltalk.HashedCollection._from_(["a".__minus_gt((1)),"b".__minus_gt((2))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testFrom",{associations:associations},smalltalk.HashedCollectionTest)})},
-messageSends: ["->", "assertSameContents:as:", "from:", "collectionClass", "class"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIndexOf",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._indexOf_((2)),"a");
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._indexOf_((999));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),"sentinel");
-return self}, function($ctx1) {$ctx1.fill(self,"testIndexOf",{},smalltalk.HashedCollectionTest)})},
-messageSends: ["assert:equals:", "indexOf:", "collection", "should:raise:", "indexOf:ifAbsent:"]}),
-smalltalk.HashedCollectionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNewFromPairs",
-fn: function (){
-var self=this;
-var flattenedAssociations;
-return smalltalk.withContext(function($ctx1) { 
-flattenedAssociations=["a",(1),"b",(2)];
-self._assertSameContents_as_(_st(_st(self._class())._collectionClass())._newFromPairs_(flattenedAssociations),smalltalk.HashedCollection._from_(["a".__minus_gt((1)),"b".__minus_gt((2))]));
-return self}, function($ctx1) {$ctx1.fill(self,"testNewFromPairs",{flattenedAssociations:flattenedAssociations},smalltalk.HashedCollectionTest)})},
-messageSends: ["assertSameContents:as:", "newFromPairs:", "collectionClass", "class", "->"]}),
-smalltalk.HashedCollectionTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$HashedCollection();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.HashedCollectionTest.klass)})},
-messageSends: []}),
-smalltalk.HashedCollectionTest.klass);
-
-
-smalltalk.addClass('DictionaryTest', smalltalk.HashedCollectionTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($Dictionary())._new();
-_st($2)._at_put_((1),(1));
-_st($2)._at_put_("a",(2));
-_st($2)._at_put_(true,(3));
-_st($2)._at_put_((4),(-4));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.DictionaryTest)})},
-messageSends: ["at:put:", "new", "yourself"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionWithDuplicates",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st($Dictionary())._new();
-_st($2)._at_put_((1),(1));
-_st($2)._at_put_("a",(2));
-_st($2)._at_put_(true,(3));
-_st($2)._at_put_((4),(-4));
-_st($2)._at_put_("b",(1));
-_st($2)._at_put_((3),(3));
-_st($2)._at_put_(false,(12));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},smalltalk.DictionaryTest)})},
-messageSends: ["at:put:", "new", "yourself"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAccessing",
-fn: function (){
-var self=this;
-var d;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_("hello","world");
-self._assert_equals_(_st(d)._at_("hello"),"world");
-self._assert_equals_(_st(d)._at_ifAbsent_("hello",(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"world");
-self._deny_(_st(_st(d)._at_ifAbsent_("foo",(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))).__eq("world"));
-self._assert_(_st(d)._includesKey_("hello"));
-self._deny_(_st(d)._includesKey_("foo"));
-_st(d)._at_put_((1),(2));
-self._assert_equals_(_st(d)._at_((1)),(2));
-_st(d)._at_put_((1).__at((3)),(3));
-self._assert_equals_(_st(d)._at_((1).__at((3))),(3));
-self._assert_(_st(d)._includesKey_((1).__at((3))));
-self._deny_(_st(d)._includesKey_((3).__at((1))));
-return self}, function($ctx1) {$ctx1.fill(self,"testAccessing",{d:d},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "assert:equals:", "at:", "at:ifAbsent:", "deny:", "=", "assert:", "includesKey:", "@"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsHashedCollection",
-fn: function (){
-var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(_st(_st(self._collectionClass())._new())._asHashedCollection())._isMemberOf_($HashedCollection()));
-return self}, function($ctx1) {$ctx1.fill(self,"testAsHashedCollection",{},smalltalk.DictionaryTest)})},
-messageSends: ["assert:", "isMemberOf:", "asHashedCollection", "new", "collectionClass"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDynamicDictionaries",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(smalltalk.HashedCollection._from_(["hello".__minus_gt((1))]))._asDictionary(),_st($Dictionary())._with_("hello".__minus_gt((1))));
-return self}, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{},smalltalk.DictionaryTest)})},
-messageSends: ["assert:equals:", "asDictionary", "->", "with:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEquality",
-fn: function (){
-var self=this;
-var d1,d2;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
-self._assert_(_st(_st($Dictionary())._new()).__eq(_st($Dictionary())._new()));
-$1=_st($Dictionary())._new();
-_st($1)._at_put_((1),(2));
-$2=_st($1)._yourself();
-d1=$2;
-$3=_st($Dictionary())._new();
-_st($3)._at_put_((1),(2));
-$4=_st($3)._yourself();
-d2=$4;
-self._assert_(_st(d1).__eq(d2));
-$5=_st($Dictionary())._new();
-_st($5)._at_put_((1),(3));
-$6=_st($5)._yourself();
-d2=$6;
-self._deny_(_st(d1).__eq(d2));
-$7=_st($Dictionary())._new();
-_st($7)._at_put_((2),(2));
-$8=_st($7)._yourself();
-d2=$8;
-self._deny_(_st(d1).__eq(d2));
-$9=_st($Dictionary())._new();
-_st($9)._at_put_((1),(2));
-_st($9)._at_put_((3),(4));
-$10=_st($9)._yourself();
-d2=$10;
-self._deny_(_st(d1).__eq(d2));
-return self}, function($ctx1) {$ctx1.fill(self,"testEquality",{d1:d1,d2:d2},smalltalk.DictionaryTest)})},
-messageSends: ["assert:", "=", "new", "at:put:", "yourself", "deny:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfAbsent",
-fn: function (){
-var self=this;
-var d,visited;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-visited=false;
-d=_st($Dictionary())._new();
-_st(d)._at_ifAbsent_("hello",(function(){
-return smalltalk.withContext(function($ctx2) {
-visited=true;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self._assert_(visited);
-return self}, function($ctx1) {$ctx1.fill(self,"testIfAbsent",{d:d,visited:visited},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:ifAbsent:", "assert:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfPresent",
-fn: function (){
-var self=this;
-var d,visited,absent;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-visited=false;
-d=_st($Dictionary())._new();
-_st(d)._at_put_("hello","world");
-_st(d)._at_ifPresent_("hello",(function(value){
-return smalltalk.withContext(function($ctx2) {
-visited=value;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
-self._assert_equals_(visited,"world");
-absent=_st(d)._at_ifPresent_("bye",(function(value){
-return smalltalk.withContext(function($ctx2) {
-visited=value;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,2)})}));
-self._assert_(_st(absent)._isNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testIfPresent",{d:d,visited:visited,absent:absent},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "at:ifPresent:", "assert:equals:", "assert:", "isNil"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfPresentIfAbsent",
-fn: function (){
-var self=this;
-var d,visited;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-visited=false;
-d=_st($Dictionary())._new();
-_st(d)._at_put_("hello","world");
-_st(d)._at_ifPresent_ifAbsent_("hello",(function(value){
-return smalltalk.withContext(function($ctx2) {
-visited=value;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-visited=true;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._assert_equals_(visited,"world");
-_st(d)._at_ifPresent_ifAbsent_("buy",(function(value){
-return smalltalk.withContext(function($ctx2) {
-visited=value;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,3)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-visited=true;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-self._assert_(visited);
-return self}, function($ctx1) {$ctx1.fill(self,"testIfPresentIfAbsent",{d:d,visited:visited},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "at:ifPresent:ifAbsent:", "assert:equals:", "assert:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testKeys",
-fn: function (){
-var self=this;
-var d;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_((1),(2));
-_st(d)._at_put_((2),(3));
-_st(d)._at_put_((3),(4));
-self._assert_equals_(_st(d)._keys(),[(1), (2), (3)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testKeys",{d:d},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "assert:equals:", "keys"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPointKey",
-fn: function (){
-var self=this;
-var d;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_((1).__at((1)),"foo");
-self._assert_equals_(_st(d)._at_((1).__at((1))),"foo");
-_st(d)._at_put_((1).__at((1)),"bar");
-self._assert_equals_(_st(d)._at_((1).__at((1))),"bar");
-_st(d)._removeKey_((1).__at((1)));
-self._assert_equals_(_st(d)._at_ifAbsent_((1).__at((1)),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "baz";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"baz");
-self._deny_(_st(d)._includesKey_((1).__at((1))));
-return self}, function($ctx1) {$ctx1.fill(self,"testPointKey",{d:d},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "@", "assert:equals:", "at:", "removeKey:", "at:ifAbsent:", "deny:", "includesKey:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPrintString",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($Dictionary())._new();
-_st($1)._at_put_("firstname","James");
-_st($1)._at_put_("lastname","Bond");
-$2=_st($1)._printString();
-self._assert_equals_($2,"a Dictionary ('firstname' -> 'James' , 'lastname' -> 'Bond')");
-return self}, function($ctx1) {$ctx1.fill(self,"testPrintString",{},smalltalk.DictionaryTest)})},
-messageSends: ["assert:equals:", "at:put:", "new", "printString"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRemoveKey",
-fn: function (){
-var self=this;
-var d,key;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_((1),(2));
-_st(d)._at_put_((2),(3));
-_st(d)._at_put_((3),(4));
-key=(2);
-self._assert_equals_(_st(d)._keys(),[(1), (2), (3)]);
-_st(d)._removeKey_(key);
-self._assert_equals_(_st(d)._keys(),[(1), (3)]);
-self._assert_equals_(_st(d)._values(),[(2), (4)]);
-self._deny_(_st(d)._includesKey_((2)));
-return self}, function($ctx1) {$ctx1.fill(self,"testRemoveKey",{d:d,key:key},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "assert:equals:", "keys", "removeKey:", "values", "deny:", "includesKey:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRemoveKeyIfAbsent",
-fn: function (){
-var self=this;
-var d,key;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_((1),(2));
-_st(d)._at_put_((2),(3));
-_st(d)._at_put_((3),(4));
-key=(2);
-self._assert_equals_(_st(d)._removeKey_(key),(3));
-key=(3);
-self._assert_equals_(_st(d)._removeKey_ifAbsent_(key,(function(){
-return smalltalk.withContext(function($ctx2) {
-return (42);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),(4));
-key="why";
-self._assert_equals_(_st(d)._removeKey_ifAbsent_(key,(function(){
-return smalltalk.withContext(function($ctx2) {
-return (42);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),(42));
-return self}, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent",{d:d,key:key},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "assert:equals:", "removeKey:", "removeKey:ifAbsent:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSize",
-fn: function (){
-var self=this;
-var d;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-self._assert_equals_(_st(d)._size(),(0));
-_st(d)._at_put_((1),(2));
-self._assert_equals_(_st(d)._size(),(1));
-_st(d)._at_put_((2),(3));
-self._assert_equals_(_st(d)._size(),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testSize",{d:d},smalltalk.DictionaryTest)})},
-messageSends: ["new", "assert:equals:", "size", "at:put:"]}),
-smalltalk.DictionaryTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValues",
-fn: function (){
-var self=this;
-var d;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-d=_st($Dictionary())._new();
-_st(d)._at_put_((1),(2));
-_st(d)._at_put_((2),(3));
-_st(d)._at_put_((3),(4));
-self._assert_equals_(_st(d)._values(),[(2), (3), (4)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testValues",{d:d},smalltalk.DictionaryTest)})},
-messageSends: ["new", "at:put:", "assert:equals:", "values"]}),
-smalltalk.DictionaryTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Dictionary();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.DictionaryTest.klass)})},
-messageSends: []}),
-smalltalk.DictionaryTest.klass);
-
-
-smalltalk.addClass('SequenceableCollectionTest', smalltalk.IndexableCollectionTest, [], 'Kernel-Tests');
-
-
-smalltalk.addClass('ArrayTest', smalltalk.SequenceableCollectionTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAddFirst",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=[(2), (3), (4), (5)];
-_st($1)._addFirst_((1));
-$2=_st($1)._yourself();
-self._assert_equals_($2,[(1), (2), (3), (4), (5)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testAddFirst",{},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "addFirst:", "yourself"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtIfAbsent",
-fn: function (){
-var self=this;
-var array;
-return smalltalk.withContext(function($ctx1) { 
-array=["hello", "world"];
-self._assert_equals_(_st(array)._at_((1)),"hello");
-self._assert_equals_(_st(array)._at_((2)),"world");
-self._assert_equals_(_st(array)._at_ifAbsent_((2),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"world");
-self._assert_equals_(_st(array)._at_ifAbsent_((0),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),"not found");
-self._assert_equals_(_st(array)._at_ifAbsent_((-10),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})})),"not found");
-self._assert_equals_(_st(array)._at_ifAbsent_((3),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})})),"not found");
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{array:array},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "at:", "at:ifAbsent:"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testFirstN",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st([(1),(2),(3),(4),(5)])._first_((3)),[(1),(2),(3)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testFirstN",{},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "first:"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfEmpty",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(""._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "zork";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"zork");
-return self}, function($ctx1) {$ctx1.fill(self,"testIfEmpty",{},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "ifEmpty:"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPrintString",
-fn: function (){
-var self=this;
-var array;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-array=_st($Array())._new();
-self._assert_equals_(_st(array)._printString(),"an Array ()");
-$1=array;
-_st($1)._add_((1));
-$2=_st($1)._add_((3));
-self._assert_equals_(_st(array)._printString(),"an Array (1 3)");
-_st(array)._add_("foo");
-self._assert_equals_(_st(array)._printString(),"an Array (1 3 'foo')");
-$3=array;
-_st($3)._remove_((1));
-$4=_st($3)._remove_((3));
-self._assert_equals_(_st(array)._printString(),"an Array ('foo')");
-_st(array)._addLast_((3));
-self._assert_equals_(_st(array)._printString(),"an Array ('foo' 3)");
-_st(array)._addLast_((3));
-self._assert_equals_(_st(array)._printString(),"an Array ('foo' 3 3)");
-return self}, function($ctx1) {$ctx1.fill(self,"testPrintString",{array:array},smalltalk.ArrayTest)})},
-messageSends: ["new", "assert:equals:", "printString", "add:", "remove:", "addLast:"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRemoveFromTo",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((1),(3)),[(4)]);
-self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((2),(3)),[(1), (4)]);
-self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((2),(4)),[(1)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testRemoveFromTo",{},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "removeFrom:to:"]}),
-smalltalk.ArrayTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRemoveIndex",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_([(1), (2), (3), (4)]._removeIndex_((2)),[(1), (3), (4)]);
-self._assert_equals_([(1), (2), (3), (4)]._removeIndex_((1)),[(2), (3), (4)]);
-self._assert_equals_(["hello"]._removeIndex_((1)),[]);
-return self}, function($ctx1) {$ctx1.fill(self,"testRemoveIndex",{},smalltalk.ArrayTest)})},
-messageSends: ["assert:equals:", "removeIndex:"]}),
-smalltalk.ArrayTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Array();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.ArrayTest.klass)})},
-messageSends: []}),
-smalltalk.ArrayTest.klass);
-
-
-smalltalk.addClass('StringTest', smalltalk.SequenceableCollectionTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "hello";
-}, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.StringTest)})},
-messageSends: []}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionWithDuplicates",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "abbaerte";
-}, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},smalltalk.StringTest)})},
-messageSends: []}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAddRemove",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "hello"._add_("a");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "hello"._remove_("h");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testAddRemove",{},smalltalk.StringTest)})},
-messageSends: ["should:raise:", "add:", "remove:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsArray",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("hello"._asArray(),["h", "e", "l", "l", "o"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testAsArray",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "asArray"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("3"._asNumber(),(3));
-self._assert_equals_("-3"._asNumber(),(-3));
-self._assert_equals_("-1.5"._asNumber(),(-1.5));
-return self}, function($ctx1) {$ctx1.fill(self,"testAsNumber",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "asNumber"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("hello"._at_((1)),"h");
-self._assert_equals_("hello"._at_((5)),"o");
-self._assert_equals_("hello"._at_ifAbsent_((6),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testAt",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "at:", "at:ifAbsent:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtPut",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "hello"._at_put_((1),"a");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testAtPut",{},smalltalk.StringTest)})},
-messageSends: ["should:raise:", "at:put:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCollect",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection="hheelllloo";
-self._assertSameContents_as_(_st(self._collection())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__comma(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{newCollection:newCollection},smalltalk.StringTest)})},
-messageSends: ["assertSameContents:as:", "collect:", "collection", ","]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCopyWithoutAll",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("*hello* *world*"._copyWithoutAll_("*"),"hello world");
-return self}, function($ctx1) {$ctx1.fill(self,"testCopyWithoutAll",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "copyWithoutAll:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDetect",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._detect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq("h");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),"h");
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._detect_((function(each){
-return smalltalk.withContext(function($ctx3) {
-return _st(each).__eq((6));
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testDetect",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "detect:", "collection", "=", "should:raise:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEquality",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("hello","hello");
-self._deny_("hello".__eq("world"));
-self._deny_("hello".__eq([]._at_ifAbsent_((1),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))));
-self._assert_equals_("hello","hello"._yourself());
-self._assert_equals_("hello"._yourself(),"hello");
-self._deny_("".__eq((0)));
-return self}, function($ctx1) {$ctx1.fill(self,"testEquality",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "deny:", "=", "at:ifAbsent:", "yourself"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIdentity",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_("hello".__eq_eq("hello"));
-self._deny_("hello".__eq_eq("world"));
-self._assert_("hello".__eq_eq("hello"._yourself()));
-self._assert_(_st("hello"._yourself()).__eq_eq("hello"));
-self._deny_("".__eq_eq((0)));
-return self}, function($ctx1) {$ctx1.fill(self,"testIdentity",{},smalltalk.StringTest)})},
-messageSends: ["assert:", "==", "deny:", "yourself"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIncludesSubString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_("amber"._includesSubString_("ber"));
-self._deny_("amber"._includesSubString_("zork"));
-return self}, function($ctx1) {$ctx1.fill(self,"testIncludesSubString",{},smalltalk.StringTest)})},
-messageSends: ["assert:", "includesSubString:", "deny:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIndexOf",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._collection())._indexOf_("e"),(2));
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._collection())._indexOf_((999));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),"sentinel");
-return self}, function($ctx1) {$ctx1.fill(self,"testIndexOf",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "indexOf:", "collection", "should:raise:", "indexOf:ifAbsent:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testJoin",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(","._join_(["hello", "world"]),"hello,world");
-return self}, function($ctx1) {$ctx1.fill(self,"testJoin",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "join:"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSelect",
-fn: function (){
-var self=this;
-var newCollection;
-return smalltalk.withContext(function($ctx1) { 
-newCollection="o";
-self._assertSameContents_as_(_st(self._collection())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq("o");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{newCollection:newCollection},smalltalk.StringTest)})},
-messageSends: ["assertSameContents:as:", "select:", "collection", "="]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSize",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("smalltalk"._size(),(9));
-self._assert_equals_(""._size(),(0));
-return self}, function($ctx1) {$ctx1.fill(self,"testSize",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "size"]}),
-smalltalk.StringTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testStreamContents",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self._assert_equals_(_st($String())._streamContents_((function(aStream){
-return smalltalk.withContext(function($ctx2) {
-$1=aStream;
-_st($1)._nextPutAll_("hello");
-_st($1)._space();
-$2=_st($1)._nextPutAll_("world");
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({aStream:aStream},$ctx1,1)})})),"hello world");
-return self}, function($ctx1) {$ctx1.fill(self,"testStreamContents",{},smalltalk.StringTest)})},
-messageSends: ["assert:equals:", "streamContents:", "nextPutAll:", "space"]}),
-smalltalk.StringTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$String();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.StringTest.klass)})},
-messageSends: []}),
-smalltalk.StringTest.klass);
-
-
-smalltalk.addClass('ConsoleTranscriptTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testShow",
-fn: function (){
-var self=this;
-var originalTranscript;
-function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
-function $ConsoleTranscript(){return smalltalk.ConsoleTranscript||(typeof ConsoleTranscript=="undefined"?nil:ConsoleTranscript)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-originalTranscript=_st($Transcript())._current();
-_st($Transcript())._register_(_st($ConsoleTranscript())._new());
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Transcript())._show_("Hello console!");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Transcript())._show_(console);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-_st($Transcript())._register_(originalTranscript);
-return self}, function($ctx1) {$ctx1.fill(self,"testShow",{originalTranscript:originalTranscript},smalltalk.ConsoleTranscriptTest)})},
-messageSends: ["current", "register:", "new", "shouldnt:raise:", "show:"]}),
-smalltalk.ConsoleTranscriptTest);
-
-
-
-smalltalk.addClass('JSObjectProxyTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "jsObject",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return jsObject = {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: '', 'e': null, 'f': undefined};
-return self}, function($ctx1) {$ctx1.fill(self,"jsObject",{},smalltalk.JSObjectProxyTest)})},
-messageSends: []}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtIfAbsent",
-fn: function (){
-var self=this;
-var testObject;
-return smalltalk.withContext(function($ctx1) { 
-testObject=self._jsObject();
-self._assert_equals_(_st(testObject)._at_ifAbsent_("abc",(function(){
-return smalltalk.withContext(function($ctx2) {
-return "Property does not exist";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),"Property does not exist");
-self._assert_equals_(_st(testObject)._at_ifAbsent_("e",(function(){
-return smalltalk.withContext(function($ctx2) {
-return "Property does not exist";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),nil);
-self._assert_equals_(_st(testObject)._at_ifAbsent_("a",(function(){
-return smalltalk.withContext(function($ctx2) {
-return "Property does not exist";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})})),(1));
-self._assert_equals_(_st(testObject)._at_ifAbsent_("f",(function(){
-return smalltalk.withContext(function($ctx2) {
-return "Property does not exist";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})})),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{testObject:testObject},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "assert:equals:", "at:ifAbsent:"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtIfPresent",
-fn: function (){
-var self=this;
-var testObject;
-return smalltalk.withContext(function($ctx1) { 
-testObject=self._jsObject();
-self._assert_equals_(_st(testObject)._at_ifPresent_("abc",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})})),nil);
-self._assert_equals_(_st(testObject)._at_ifPresent_("e",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)})})),"hello nil");
-self._assert_equals_(_st(testObject)._at_ifPresent_("a",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)})})),"hello 1");
-self._assert_equals_(_st(testObject)._at_ifPresent_("f",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,4)})})),"hello nil");
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{testObject:testObject},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "assert:equals:", "at:ifPresent:", ",", "asString"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtIfPresentIfAbsent",
-fn: function (){
-var self=this;
-var testObject;
-return smalltalk.withContext(function($ctx1) { 
-testObject=self._jsObject();
-self._assert_equals_(_st(testObject)._at_ifPresent_ifAbsent_("abc",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})),"not present");
-self._assert_equals_(_st(testObject)._at_ifPresent_ifAbsent_("e",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})})),"hello nil");
-self._assert_equals_(_st(testObject)._at_ifPresent_ifAbsent_("a",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,5)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})})),"hello 1");
-self._assert_equals_(_st(testObject)._at_ifPresent_ifAbsent_("f",(function(x){
-return smalltalk.withContext(function($ctx2) {
-return "hello ".__comma(_st(x)._asString());
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,7)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)})})),"hello nil");
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{testObject:testObject},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "assert:equals:", "at:ifPresent:ifAbsent:", ",", "asString"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDNU",
-fn: function (){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._jsObject())._foo();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"testDNU",{},smalltalk.JSObjectProxyTest)})},
-messageSends: ["should:raise:", "foo", "jsObject"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMessageSend",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._jsObject())._a(),(1));
-self._assert_equals_(_st(self._jsObject())._b(),(2));
-self._assert_equals_(_st(self._jsObject())._c_((3)),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testMessageSend",{},smalltalk.JSObjectProxyTest)})},
-messageSends: ["assert:equals:", "a", "jsObject", "b", "c:"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMethodWithArguments",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._jsObject())._c_((1)),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testMethodWithArguments",{},smalltalk.JSObjectProxyTest)})},
-messageSends: ["assert:equals:", "c:", "jsObject"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPrinting",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self._jsObject())._printString(),"[object Object]");
-return self}, function($ctx1) {$ctx1.fill(self,"testPrinting",{},smalltalk.JSObjectProxyTest)})},
-messageSends: ["assert:equals:", "printString", "jsObject"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPropertyThatReturnsEmptyString",
-fn: function (){
-var self=this;
-var object;
-return smalltalk.withContext(function($ctx1) { 
-object=self._jsObject();
-self._assert_equals_(_st(object)._d(),"");
-_st(object)._d_("hello");
-self._assert_equals_(_st(object)._d(),"hello");
-return self}, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsEmptyString",{object:object},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "assert:equals:", "d", "d:"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPropertyThatReturnsUndefined",
-fn: function (){
-var self=this;
-var object;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-object=self._jsObject();
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(object)._e();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-self._assert_(_st(_st(object)._e())._isNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsUndefined",{object:object},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "shouldnt:raise:", "e", "assert:", "isNil"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValue",
-fn: function (){
-var self=this;
-var testObject;
-return smalltalk.withContext(function($ctx1) { 
-testObject=self._jsObject();
-self._assert_equals_(_st(_st(testObject)._value())._printString(),"[object Object]");
-_st(testObject)._at_put_("value","aValue");
-self._assert_equals_(_st(testObject)._value(),"aValue");
-return self}, function($ctx1) {$ctx1.fill(self,"testValue",{testObject:testObject},smalltalk.JSObjectProxyTest)})},
-messageSends: ["jsObject", "assert:equals:", "printString", "value", "at:put:"]}),
-smalltalk.JSObjectProxyTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testYourself",
-fn: function (){
-var self=this;
-var object;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self._jsObject();
-_st($1)._d_("test");
-$2=_st($1)._yourself();
-object=$2;
-self._assert_equals_(_st(object)._d(),"test");
-return self}, function($ctx1) {$ctx1.fill(self,"testYourself",{object:object},smalltalk.JSObjectProxyTest)})},
-messageSends: ["d:", "jsObject", "yourself", "assert:equals:", "d"]}),
-smalltalk.JSObjectProxyTest);
-
-
-
-smalltalk.addClass('JavaScriptExceptionTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCatchingException",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._throwException();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(error){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_(_st(_st(error)._exception()).__eq("test"));
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testCatchingException",{},smalltalk.JavaScriptExceptionTest)})},
-messageSends: ["on:do:", "throwException", "assert:", "=", "exception"]}),
-smalltalk.JavaScriptExceptionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRaisingException",
-fn: function (){
-var self=this;
-function $JavaScriptException(){return smalltalk.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._throwException();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$JavaScriptException());
-return self}, function($ctx1) {$ctx1.fill(self,"testRaisingException",{},smalltalk.JavaScriptExceptionTest)})},
-messageSends: ["should:raise:", "throwException"]}),
-smalltalk.JavaScriptExceptionTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "throwException",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-throw 'test';
-return self}, function($ctx1) {$ctx1.fill(self,"throwException",{},smalltalk.JavaScriptExceptionTest)})},
-messageSends: []}),
-smalltalk.JavaScriptExceptionTest);
-
-
-
-smalltalk.addClass('LegacyPackageHandlerTest', smalltalk.TestCase, ['zorkPackage', 'grulPackage', 'backUpCommitPathJs', 'backUpCommitPathSt'], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@backUpCommitPathJs"]=_st($LegacyPackageHandler())._defaultCommitPathJs();
-self["@backUpCommitPathSt"]=_st($LegacyPackageHandler())._defaultCommitPathSt();
-_st($LegacyPackageHandler())._resetCommitPaths();
-self["@zorkPackage"]=_st(_st($Package())._new())._name_("Zork");
-$1=_st($Package())._new();
-_st($1)._name_("Grul");
-_st($1)._commitPathJs_("server/grul/js");
-_st($1)._commitPathSt_("grul/st");
-$2=_st($1)._yourself();
-self["@grulPackage"]=$2;
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["defaultCommitPathJs", "defaultCommitPathSt", "resetCommitPaths", "name:", "new", "commitPathJs:", "commitPathSt:", "yourself"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=$LegacyPackageHandler();
-_st($1)._defaultCommitPathJs_(self["@backUpCommitPathJs"]);
-$2=_st($1)._defaultCommitPathSt_(self["@backUpCommitPathSt"]);
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["defaultCommitPathJs:", "defaultCommitPathSt:"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathJsShouldBeServerGrulJs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathJs(),"server/grul/js");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathJsShouldBeServerGrulJs",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["assert:equals:", "commitPathJs"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathStShouldBeGrulSt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathSt(),"grul/st");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathStShouldBeGrulSt",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["assert:equals:", "commitPathSt"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathJsShouldBeJs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathJs(),"js");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathJsShouldBeJs",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["assert:equals:", "commitPathJs"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathStShouldBeSt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathSt(),"st");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathStShouldBeSt",{},smalltalk.LegacyPackageHandlerTest)})},
-messageSends: ["assert:equals:", "commitPathSt"]}),
-smalltalk.LegacyPackageHandlerTest);
-
-
-
-smalltalk.addClass('LegacyPackageHandlerTestWithDefaultsChanged', smalltalk.LegacyPackageHandlerTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.superclass.fn.prototype._setUp.apply(_st(self), []);
-$1=$LegacyPackageHandler();
-_st($1)._defaultCommitPathJs_("javascripts/");
-$2=_st($1)._defaultCommitPathSt_("smalltalk/");
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-messageSends: ["setUp", "defaultCommitPathJs:", "defaultCommitPathSt:"]}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathJsShouldBeServerGrulJs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathJs(),"server/grul/js");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathJsShouldBeServerGrulJs",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-messageSends: ["assert:equals:", "commitPathJs"]}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathStShouldBeGrulSt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathSt(),"grul/st");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathStShouldBeGrulSt",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-messageSends: ["assert:equals:", "commitPathSt"]}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathJsShouldBeJavascript",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathJs(),"javascripts/");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathJsShouldBeJavascript",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-messageSends: ["assert:equals:", "commitPathJs"]}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathStShouldBeSmalltalk",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathSt(),"smalltalk/");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathStShouldBeSmalltalk",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-messageSends: ["assert:equals:", "commitPathSt"]}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInheritSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.klass)})},
-messageSends: []}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.klass);
-
-
-smalltalk.addClass('MessageSendTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValue",
-fn: function (){
-var self=this;
-var messageSend;
-function $MessageSend(){return smalltalk.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($MessageSend())._new();
-_st($1)._receiver_(_st($Object())._new());
-_st($1)._selector_("asString");
-$2=_st($1)._yourself();
-messageSend=$2;
-self._assert_equals_(_st(messageSend)._value(),"an Object");
-return self}, function($ctx1) {$ctx1.fill(self,"testValue",{messageSend:messageSend},smalltalk.MessageSendTest)})},
-messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value"]}),
-smalltalk.MessageSendTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testValueWithArguments",
-fn: function (){
-var self=this;
-var messageSend;
-function $MessageSend(){return smalltalk.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=_st($MessageSend())._new();
-_st($1)._receiver_((2));
-_st($1)._selector_("+");
-$2=_st($1)._yourself();
-messageSend=$2;
-self._assert_equals_(_st(messageSend)._value_((3)),(5));
-self._assert_equals_(_st(messageSend)._valueWithPossibleArguments_([(4)]),(6));
-return self}, function($ctx1) {$ctx1.fill(self,"testValueWithArguments",{messageSend:messageSend},smalltalk.MessageSendTest)})},
-messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value:", "valueWithPossibleArguments:"]}),
-smalltalk.MessageSendTest);
-
-
-
-smalltalk.addClass('MethodInheritanceTest', smalltalk.TestCase, ['receiverTop', 'receiverMiddle', 'receiverBottom', 'method', 'performBlock'], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "codeGeneratorClass",
-fn: function (){
-var self=this;
-function $CodeGenerator(){return smalltalk.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$CodeGenerator();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},smalltalk.MethodInheritanceTest)})},
-messageSends: []}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "compiler",
-fn: function (){
-var self=this;
-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_(self._codeGeneratorClass());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"compiler",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deinstallBottom",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._targetClassBottom())._removeCompiledMethod_(self["@method"]);
-return self}, function($ctx1) {$ctx1.fill(self,"deinstallBottom",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["removeCompiledMethod:", "targetClassBottom"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deinstallMiddle",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._targetClassMiddle())._removeCompiledMethod_(self["@method"]);
-return self}, function($ctx1) {$ctx1.fill(self,"deinstallMiddle",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["removeCompiledMethod:", "targetClassMiddle"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deinstallTop",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._targetClassTop())._removeCompiledMethod_(self["@method"]);
-return self}, function($ctx1) {$ctx1.fill(self,"deinstallTop",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["removeCompiledMethod:", "targetClassTop"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "installBottom:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=_st(self._compiler())._install_forClass_category_(aString,self._targetClassBottom(),"tests");
-return self}, function($ctx1) {$ctx1.fill(self,"installBottom:",{aString:aString},smalltalk.MethodInheritanceTest)})},
-messageSends: ["install:forClass:category:", "compiler", "targetClassBottom"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "installMiddle:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=_st(self._compiler())._install_forClass_category_(aString,self._targetClassMiddle(),"tests");
-return self}, function($ctx1) {$ctx1.fill(self,"installMiddle:",{aString:aString},smalltalk.MethodInheritanceTest)})},
-messageSends: ["install:forClass:category:", "compiler", "targetClassMiddle"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "installTop:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@method"]=_st(self._compiler())._install_forClass_category_(aString,self._targetClassTop(),"tests");
-return self}, function($ctx1) {$ctx1.fill(self,"installTop:",{aString:aString},smalltalk.MethodInheritanceTest)})},
-messageSends: ["install:forClass:category:", "compiler", "targetClassTop"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@receiverTop"]=_st(self._targetClassTop())._new();
-self["@receiverMiddle"]=_st(self._targetClassMiddle())._new();
-self["@receiverBottom"]=_st(self._targetClassBottom())._new();
-self["@method"]=nil;
-self["@performBlock"]=(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("performBlock not initialized");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["new", "targetClassTop", "targetClassMiddle", "targetClassBottom", "error:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldMNU",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldMNUTop();
-self._shouldMNUMiddle();
-self._shouldMNUBottom();
-return self}, function($ctx1) {$ctx1.fill(self,"shouldMNU",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["shouldMNUTop", "shouldMNUMiddle", "shouldMNUBottom"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldMNUBottom",
-fn: function (){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@performBlock"])._value_(self["@receiverBottom"]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"shouldMNUBottom",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["should:raise:", "value:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldMNUMiddle",
-fn: function (){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@performBlock"])._value_(self["@receiverMiddle"]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"shouldMNUMiddle",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["should:raise:", "value:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldMNUTop",
-fn: function (){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@performBlock"])._value_(self["@receiverTop"]);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"shouldMNUTop",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["should:raise:", "value:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldReturn:",
-fn: function (anObject){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-result=_st(self["@performBlock"])._value_(self["@receiverTop"]);
-self._assert_equals_(["top",anObject],["top",result]);
-result=_st(self["@performBlock"])._value_(self["@receiverMiddle"]);
-self._assert_equals_(["middle",anObject],["middle",result]);
-result=_st(self["@performBlock"])._value_(self["@receiverBottom"]);
-self._assert_equals_(["bottom",anObject],["bottom",result]);
-return self}, function($ctx1) {$ctx1.fill(self,"shouldReturn:",{anObject:anObject,result:result},smalltalk.MethodInheritanceTest)})},
-messageSends: ["value:", "assert:equals:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldReturn:and:and:",
-fn: function (anObject,anObject2,anObject3){
-var self=this;
-var result;
-return smalltalk.withContext(function($ctx1) { 
-result=_st(self["@performBlock"])._value_(self["@receiverTop"]);
-self._assert_equals_(["top",anObject],["top",result]);
-result=_st(self["@performBlock"])._value_(self["@receiverMiddle"]);
-self._assert_equals_(["middle",anObject2],["middle",result]);
-result=_st(self["@performBlock"])._value_(self["@receiverBottom"]);
-self._assert_equals_(["bottom",anObject3],["bottom",result]);
-return self}, function($ctx1) {$ctx1.fill(self,"shouldReturn:and:and:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3,result:result},smalltalk.MethodInheritanceTest)})},
-messageSends: ["value:", "assert:equals:"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "targetClassBottom",
-fn: function (){
-var self=this;
-function $JavaScriptException(){return smalltalk.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$JavaScriptException();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"targetClassBottom",{},smalltalk.MethodInheritanceTest)})},
-messageSends: []}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "targetClassMiddle",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Error();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"targetClassMiddle",{},smalltalk.MethodInheritanceTest)})},
-messageSends: []}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "targetClassTop",
-fn: function (){
-var self=this;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Object();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"targetClassTop",{},smalltalk.MethodInheritanceTest)})},
-messageSends: []}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._deinstallTop();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._deinstallMiddle();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._deinstallBottom();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["on:do:", "deinstallTop", "deinstallMiddle", "deinstallBottom"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMNU11",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@performBlock"]=(function(x){
-return smalltalk.withContext(function($ctx2) {
-return _st(x)._foo();
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})});
-self._shouldMNU();
-self._installTop_("foo ^ false");
-self._installTop_("foo ^ true");
-self._deinstallTop();
-self._shouldMNU();
-return self}, function($ctx1) {$ctx1.fill(self,"testMNU11",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["foo", "shouldMNU", "installTop:", "deinstallTop"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMNU22",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@performBlock"]=(function(x){
-return smalltalk.withContext(function($ctx2) {
-return _st(x)._foo();
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})});
-self._shouldMNU();
-self._installMiddle_("foo ^ false");
-self._installMiddle_("foo ^ true");
-self._deinstallMiddle();
-self._shouldMNU();
-return self}, function($ctx1) {$ctx1.fill(self,"testMNU22",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["foo", "shouldMNU", "installMiddle:", "deinstallMiddle"]}),
-smalltalk.MethodInheritanceTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testReturns1",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@performBlock"]=(function(x){
-return smalltalk.withContext(function($ctx2) {
-return _st(x)._foo();
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})});
-self._installTop_("foo ^ false");
-self._shouldReturn_(false);
-self._installTop_("foo ^ true");
-self._shouldReturn_(true);
-return self}, function($ctx1) {$ctx1.fill(self,"testReturns1",{},smalltalk.MethodInheritanceTest)})},
-messageSends: ["foo", "installTop:", "shouldReturn:"]}),
-smalltalk.MethodInheritanceTest);
-
-
-
-smalltalk.addClass('NumberTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAbs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((4)._abs(),(4));
-self._assert_equals_((-4)._abs(),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testAbs",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "abs"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testArithmetic",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((1.5).__plus((1)),(2.5));
-self._assert_equals_((2).__minus((1)),(1));
-self._assert_equals_((-2).__minus((1)),(-3));
-self._assert_equals_((12).__slash((2)),(6));
-self._assert_equals_((3).__star((4)),(12));
-self._assert_equals_(_st((1).__plus((2))).__star((3)),(9));
-self._assert_equals_((1).__plus((2).__star((3))),(7));
-return self}, function($ctx1) {$ctx1.fill(self,"testArithmetic",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "+", "-", "/", "*"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsNumber",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((3)._asNumber(),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testAsNumber",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "asNumber"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCeiling",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((1.2)._ceiling(),(2));
-self._assert_equals_((-1.2)._ceiling(),(-1));
-self._assert_equals_((1)._ceiling(),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testCeiling",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "ceiling"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testComparison",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_((3).__gt((2)));
-self._assert_((2).__lt((3)));
-self._deny_((3).__lt((2)));
-self._deny_((2).__gt((3)));
-self._assert_((3).__gt_eq((3)));
-self._assert_((3.1).__gt_eq((3)));
-self._assert_((3).__lt_eq((3)));
-self._assert_((3).__lt_eq((3.1)));
-return self}, function($ctx1) {$ctx1.fill(self,"testComparison",{},smalltalk.NumberTest)})},
-messageSends: ["assert:", ">", "<", "deny:", ">=", "<="]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCopying",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st((1)._copy()).__eq_eq((1)));
-self._assert_(_st((1)._deepCopy()).__eq_eq((1)));
-return self}, function($ctx1) {$ctx1.fill(self,"testCopying",{},smalltalk.NumberTest)})},
-messageSends: ["assert:", "==", "copy", "deepCopy"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEquality",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_((1).__eq((1)));
-self._assert_((0).__eq((0)));
-self._deny_((1).__eq((0)));
-self._assert_(_st((1)._yourself()).__eq((1)));
-self._assert_((1).__eq((1)._yourself()));
-self._assert_(_st((1)._yourself()).__eq((1)._yourself()));
-self._deny_((0).__eq(false));
-self._deny_(false.__eq((0)));
-self._deny_("".__eq((0)));
-self._deny_((0).__eq(""));
-return self}, function($ctx1) {$ctx1.fill(self,"testEquality",{},smalltalk.NumberTest)})},
-messageSends: ["assert:", "=", "deny:", "yourself"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testFloor",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((1.2)._floor(),(1));
-self._assert_equals_((-1.2)._floor(),(-2));
-self._assert_equals_((1)._floor(),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testFloor",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "floor"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testHexNumbers",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((9),(9));
-self._assert_equals_((10)._truncated(),(10));
-self._assert_equals_((11)._truncated(),(11));
-self._assert_equals_((12)._truncated(),(12));
-self._assert_equals_((13)._truncated(),(13));
-self._assert_equals_((14)._truncated(),(14));
-self._assert_equals_((15)._truncated(),(15));
-return self}, function($ctx1) {$ctx1.fill(self,"testHexNumbers",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "truncated"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIdentity",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_((1).__eq_eq((1)));
-self._assert_((0).__eq_eq((0)));
-self._deny_((1).__eq_eq((0)));
-self._assert_(_st((1)._yourself()).__eq_eq((1)));
-self._assert_((1).__eq_eq((1)._yourself()));
-self._assert_(_st((1)._yourself()).__eq_eq((1)._yourself()));
-self._deny_((1).__eq_eq((2)));
-return self}, function($ctx1) {$ctx1.fill(self,"testIdentity",{},smalltalk.NumberTest)})},
-messageSends: ["assert:", "==", "deny:", "yourself"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInvalidHexNumbers",
-fn: function (){
-var self=this;
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rG();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rg();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rH();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rh();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rI();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ri();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rJ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rj();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rK();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rk();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rL();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rl();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rM();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,13)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rm();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rN();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,15)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rn();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,16)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rO();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,17)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ro();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,18)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rP();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,19)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rp();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,20)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rQ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,21)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rq();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,22)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rR();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,23)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rr();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,24)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rS();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,25)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rs();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,26)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rT();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,27)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,28)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rU();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,29)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ru();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,30)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rV();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,31)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rv();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,32)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rW();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,33)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rw();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,34)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rX();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,35)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rx();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,36)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rY();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,37)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ry();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,38)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rZ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,39)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rz();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,40)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (11259375)._Z();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,41)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"testInvalidHexNumbers",{},smalltalk.NumberTest)})},
-messageSends: ["should:raise:", "rG", "rg", "rH", "rh", "rI", "ri", "rJ", "rj", "rK", "rk", "rL", "rl", "rM", "rm", "rN", "rn", "rO", "ro", "rP", "rp", "rQ", "rq", "rR", "rr", "rS", "rs", "rT", "rt", "rU", "ru", "rV", "rv", "rW", "rw", "rX", "rx", "rY", "ry", "rZ", "rz", "Z"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testMinMax",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((2)._max_((5)),(5));
-self._assert_equals_((2)._min_((5)),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testMinMax",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "max:", "min:"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNegated",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((3)._negated(),(-3));
-self._assert_equals_((-3)._negated(),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testNegated",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "negated"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPrintShowingDecimalPlaces",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((23)._printShowingDecimalPlaces_((2)),"23.00");
-self._assert_equals_((23.5698)._printShowingDecimalPlaces_((2)),"23.57");
-self._assert_equals_(_st((234.567)._negated())._printShowingDecimalPlaces_((5)),"-234.56700");
-self._assert_equals_((23.4567)._printShowingDecimalPlaces_((0)),"23");
-self._assert_equals_((23.5567)._printShowingDecimalPlaces_((0)),"24");
-self._assert_equals_(_st((23.4567)._negated())._printShowingDecimalPlaces_((0)),"-23");
-self._assert_equals_(_st((23.5567)._negated())._printShowingDecimalPlaces_((0)),"-24");
-self._assert_equals_((100000000)._printShowingDecimalPlaces_((1)),"100000000.0");
-self._assert_equals_((0.98)._printShowingDecimalPlaces_((5)),"0.98000");
-self._assert_equals_(_st((0.98)._negated())._printShowingDecimalPlaces_((2)),"-0.98");
-self._assert_equals_((2.567)._printShowingDecimalPlaces_((2)),"2.57");
-self._assert_equals_((-2.567)._printShowingDecimalPlaces_((2)),"-2.57");
-self._assert_equals_((0)._printShowingDecimalPlaces_((2)),"0.00");
-return self}, function($ctx1) {$ctx1.fill(self,"testPrintShowingDecimalPlaces",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "printShowingDecimalPlaces:", "negated"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRounded",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((3)._rounded(),(3));
-self._assert_equals_((3.212)._rounded(),(3));
-self._assert_equals_((3.51)._rounded(),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testRounded",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "rounded"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSqrt",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((4)._sqrt(),(2));
-self._assert_equals_((16)._sqrt(),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testSqrt",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "sqrt"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSquared",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((4)._squared(),(16));
-return self}, function($ctx1) {$ctx1.fill(self,"testSquared",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "squared"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTimesRepeat",
-fn: function (){
-var self=this;
-var i;
-return smalltalk.withContext(function($ctx1) { 
-i=(0);
-(0)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-self._assert_equals_(i,(0));
-(5)._timesRepeat_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-self._assert_equals_(i,(5));
-return self}, function($ctx1) {$ctx1.fill(self,"testTimesRepeat",{i:i},smalltalk.NumberTest)})},
-messageSends: ["timesRepeat:", "+", "assert:equals:"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTo",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((1)._to_((5)),[(1), (2), (3), (4), (5)]);
-return self}, function($ctx1) {$ctx1.fill(self,"testTo",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "to:"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testToBy",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((0)._to_by_((6),(2)),[(0), (2), (4), (6)]);
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1)._to_by_((4),(0));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testToBy",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "to:by:", "should:raise:"]}),
-smalltalk.NumberTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTruncated",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((3)._truncated(),(3));
-self._assert_equals_((3.212)._truncated(),(3));
-self._assert_equals_((3.51)._truncated(),(3));
-return self}, function($ctx1) {$ctx1.fill(self,"testTruncated",{},smalltalk.NumberTest)})},
-messageSends: ["assert:equals:", "truncated"]}),
-smalltalk.NumberTest);
-
-
-
-smalltalk.addClass('ObjectMock', smalltalk.Object, ['foo', 'bar'], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "foo",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@foo"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"foo",{},smalltalk.ObjectMock)})},
-messageSends: []}),
-smalltalk.ObjectMock);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "foo:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@foo"]=anObject;
-return self}, function($ctx1) {$ctx1.fill(self,"foo:",{anObject:anObject},smalltalk.ObjectMock)})},
-messageSends: []}),
-smalltalk.ObjectMock);
-
-
-
-smalltalk.addClass('ObjectTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "notDefined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return undefined;;
-return self}, function($ctx1) {$ctx1.fill(self,"notDefined",{},smalltalk.ObjectTest)})},
-messageSends: []}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBasicAccess",
-fn: function (){
-var self=this;
-var o;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($Object())._new();
-_st(o)._basicAt_put_("a",(1));
-self._assert_equals_(_st(o)._basicAt_("a"),(1));
-self._assert_equals_(_st(o)._basicAt_("b"),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testBasicAccess",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "basicAt:put:", "assert:equals:", "basicAt:"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testBasicPerform",
-fn: function (){
-var self=this;
-var o;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($Object())._new();
-_st(o)._basicAt_put_("func",(function(){
-return smalltalk.withContext(function($ctx2) {
-return "hello";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-_st(o)._basicAt_put_("func2",(function(a){
-return smalltalk.withContext(function($ctx2) {
-return _st(a).__plus((1));
-}, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)})}));
-self._assert_equals_(_st(o)._basicPerform_("func"),"hello");
-self._assert_equals_(_st(o)._basicPerform_withArguments_("func2",[(3)]),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testBasicPerform",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "basicAt:put:", "+", "assert:equals:", "basicPerform:", "basicPerform:withArguments:"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDNU",
-fn: function (){
-var self=this;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-function $MessageNotUnderstood(){return smalltalk.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Object())._new())._foo();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$MessageNotUnderstood());
-return self}, function($ctx1) {$ctx1.fill(self,"testDNU",{},smalltalk.ObjectTest)})},
-messageSends: ["should:raise:", "foo", "new"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEquality",
-fn: function (){
-var self=this;
-var o;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($Object())._new();
-self._deny_(_st(o).__eq(_st($Object())._new()));
-self._assert_(_st(o).__eq(o));
-self._assert_(_st(_st(o)._yourself()).__eq(o));
-self._assert_(_st(o).__eq(_st(o)._yourself()));
-return self}, function($ctx1) {$ctx1.fill(self,"testEquality",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "deny:", "=", "assert:", "yourself"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testHalt",
-fn: function (){
-var self=this;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Object())._new())._halt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testHalt",{},smalltalk.ObjectTest)})},
-messageSends: ["should:raise:", "halt", "new"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIdentity",
-fn: function (){
-var self=this;
-var o;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($Object())._new();
-self._deny_(_st(o).__eq_eq(_st($Object())._new()));
-self._assert_(_st(o).__eq_eq(o));
-self._assert_(_st(_st(o)._yourself()).__eq_eq(o));
-self._assert_(_st(o).__eq_eq(_st(o)._yourself()));
-return self}, function($ctx1) {$ctx1.fill(self,"testIdentity",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "deny:", "==", "assert:", "yourself"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfNil",
-fn: function (){
-var self=this;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$4,$3,$2,$5,$7,$6,$8,$10,$9,$11,$13,$12;
-self._deny_(_st(_st($Object())._new())._isNil());
-$1=self;
-$4=_st($Object())._new();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=true;
-} else {
-$3=$4;
-};
-$2=_st($3).__eq(true);
-_st($1)._deny_($2);
-$5=self;
-$7=_st($Object())._new();
-if(($receiver = $7) == nil || $receiver == undefined){
-$6=$7;
-} else {
-$6=true;
-};
-_st($5)._assert_equals_($6,true);
-$8=self;
-$10=_st($Object())._new();
-if(($receiver = $10) == nil || $receiver == undefined){
-$9=false;
-} else {
-$9=true;
-};
-_st($8)._assert_equals_($9,true);
-$11=self;
-$13=_st($Object())._new();
-if(($receiver = $13) == nil || $receiver == undefined){
-$12=false;
-} else {
-$12=true;
-};
-_st($11)._assert_equals_($12,true);
-return self}, function($ctx1) {$ctx1.fill(self,"testIfNil",{},smalltalk.ObjectTest)})},
-messageSends: ["deny:", "isNil", "new", "=", "ifNil:", "assert:equals:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testInstVars",
-fn: function (){
-var self=this;
-var o;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($ObjectMock())._new();
-self._assert_equals_(_st(o)._instVarAt_("foo"),nil);
-_st(o)._instVarAt_put_("foo",(1));
-self._assert_equals_(_st(o)._instVarAt_("foo"),(1));
-self._assert_equals_(_st(o)._instVarAt_("foo"),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testInstVars",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "assert:equals:", "instVarAt:", "instVarAt:put:"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testNilUndefined",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(self._notDefined(),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testNilUndefined",{},smalltalk.ObjectTest)})},
-messageSends: ["assert:equals:", "notDefined"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testYourself",
-fn: function (){
-var self=this;
-var o;
-function $ObjectMock(){return smalltalk.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
-return smalltalk.withContext(function($ctx1) { 
-o=_st($ObjectMock())._new();
-self._assert_(_st(_st(o)._yourself()).__eq_eq(o));
-return self}, function($ctx1) {$ctx1.fill(self,"testYourself",{o:o},smalltalk.ObjectTest)})},
-messageSends: ["new", "assert:", "==", "yourself"]}),
-smalltalk.ObjectTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testidentityHash",
-fn: function (){
-var self=this;
-var o1,o2;
-function $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-return smalltalk.withContext(function($ctx1) { 
-o1=_st($Object())._new();
-o2=_st($Object())._new();
-self._assert_(_st(_st(o1)._identityHash()).__eq_eq(_st(o1)._identityHash()));
-self._deny_(_st(_st(o1)._identityHash()).__eq_eq(_st(o2)._identityHash()));
-return self}, function($ctx1) {$ctx1.fill(self,"testidentityHash",{o1:o1,o2:o2},smalltalk.ObjectTest)})},
-messageSends: ["new", "assert:", "==", "identityHash", "deny:"]}),
-smalltalk.ObjectTest);
-
-
-
-smalltalk.addClass('PointTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAccessing",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(_st($Point())._x_y_((3),(4)))._x(),(3));
-self._assert_equals_(_st(_st($Point())._x_y_((3),(4)))._y(),(4));
-self._assert_equals_(_st(_st(_st($Point())._new())._x_((3)))._x(),(3));
-self._assert_equals_(_st(_st(_st($Point())._new())._y_((4)))._y(),(4));
-return self}, function($ctx1) {$ctx1.fill(self,"testAccessing",{},smalltalk.PointTest)})},
-messageSends: ["assert:equals:", "x", "x:y:", "y", "x:", "new", "y:"]}),
-smalltalk.PointTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testArithmetic",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((3).__at((4))).__star((3).__at((4))),_st($Point())._x_y_((9),(16)));
-self._assert_equals_(_st((3).__at((4))).__plus((3).__at((4))),_st($Point())._x_y_((6),(8)));
-self._assert_equals_(_st((3).__at((4))).__minus((3).__at((4))),_st($Point())._x_y_((0),(0)));
-self._assert_equals_(_st((6).__at((8))).__slash((3).__at((4))),_st($Point())._x_y_((2),(2)));
-return self}, function($ctx1) {$ctx1.fill(self,"testArithmetic",{},smalltalk.PointTest)})},
-messageSends: ["assert:equals:", "*", "@", "x:y:", "+", "-", "/"]}),
-smalltalk.PointTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAt",
-fn: function (){
-var self=this;
-function $Point(){return smalltalk.Point||(typeof Point=="undefined"?nil:Point)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_((3).__at((4)),_st($Point())._x_y_((3),(4)));
-return self}, function($ctx1) {$ctx1.fill(self,"testAt",{},smalltalk.PointTest)})},
-messageSends: ["assert:equals:", "@", "x:y:"]}),
-smalltalk.PointTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testEgality",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st((3).__at((4))).__eq((3).__at((4))));
-self._deny_(_st((3).__at((5))).__eq((3).__at((6))));
-return self}, function($ctx1) {$ctx1.fill(self,"testEgality",{},smalltalk.PointTest)})},
-messageSends: ["assert:", "=", "@", "deny:"]}),
-smalltalk.PointTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTranslateBy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st((3).__at((3)))._translateBy_((0).__at((1))),(3).__at((4)));
-self._assert_equals_(_st((3).__at((3)))._translateBy_((0).__at((1)._negated())),(3).__at((2)));
-self._assert_equals_(_st((3).__at((3)))._translateBy_((2).__at((3))),(5).__at((6)));
-self._assert_equals_(_st((3).__at((3)))._translateBy_(_st((3)._negated()).__at((0))),(0).__at((3)));
-return self}, function($ctx1) {$ctx1.fill(self,"testTranslateBy",{},smalltalk.PointTest)})},
-messageSends: ["assert:equals:", "translateBy:", "@", "negated"]}),
-smalltalk.PointTest);
-
-
-
-smalltalk.addClass('RandomTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "textNext",
-fn: function (){
-var self=this;
-function $Random(){return smalltalk.Random||(typeof Random=="undefined"?nil:Random)}
-return smalltalk.withContext(function($ctx1) { 
-(10000)._timesRepeat_((function(){
-var current,next;
-return smalltalk.withContext(function($ctx2) {
-next=_st(_st($Random())._new())._next();
-next;
-self._assert_(_st(next).__gt_eq((0)));
-self._assert_(_st(next).__lt((1)));
-self._deny_(_st(current).__eq(next));
-return _st(next).__eq(current);
-}, function($ctx2) {$ctx2.fillBlock({current:current,next:next},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"textNext",{},smalltalk.RandomTest)})},
-messageSends: ["timesRepeat:", "next", "new", "assert:", ">=", "<", "deny:", "="]}),
-smalltalk.RandomTest);
-
-
-
-smalltalk.addClass('SetTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAddRemove",
-fn: function (){
-var self=this;
-var set;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-set=_st($Set())._new();
-self._assert_(_st(set)._isEmpty());
-_st(set)._add_((3));
-self._assert_(_st(set)._includes_((3)));
-_st(set)._add_((5));
-self._assert_(_st(set)._includes_((5)));
-_st(set)._remove_((3));
-self._deny_(_st(set)._includes_((3)));
-return self}, function($ctx1) {$ctx1.fill(self,"testAddRemove",{set:set},smalltalk.SetTest)})},
-messageSends: ["new", "assert:", "isEmpty", "add:", "includes:", "remove:", "deny:"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAt",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($Set())._new())._at_put_((1),(2));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testAt",{},smalltalk.SetTest)})},
-messageSends: ["should:raise:", "at:put:", "new"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCollect",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st([(5), (6), (8)]._asSet())._collect_((function(x){
-return smalltalk.withContext(function($ctx2) {
-return _st(x).__backslash_backslash((3));
-}, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)})})),[(0), (2)]._asSet());
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{},smalltalk.SetTest)})},
-messageSends: ["assert:equals:", "collect:", "asSet", "\x5c\x5c"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testComparing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_([(0), (2)]._asSet(),[(0), (2)]._asSet());
-self._assert_equals_([(2), (0)]._asSet(),[(0), (2)]._asSet());
-self._deny_(_st([(0), (2), (3)]._asSet()).__eq([(0), (2)]._asSet()));
-self._deny_(_st([(1), (2)]._asSet()).__eq([(0), (2)]._asSet()));
-return self}, function($ctx1) {$ctx1.fill(self,"testComparing",{},smalltalk.SetTest)})},
-messageSends: ["assert:equals:", "asSet", "deny:", "="]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPrintString",
-fn: function (){
-var self=this;
-var set;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
-set=_st($Set())._new();
-self._assert_equals_(_st(set)._printString(),"a Set ()");
-$1=set;
-_st($1)._add_((1));
-$2=_st($1)._add_((3));
-self._assert_equals_(_st(set)._printString(),"a Set (1 3)");
-_st(set)._add_("foo");
-self._assert_equals_(_st(set)._printString(),"a Set (1 3 'foo')");
-$3=set;
-_st($3)._remove_((1));
-$4=_st($3)._remove_((3));
-self._assert_equals_(_st(set)._printString(),"a Set ('foo')");
-_st(set)._add_((3));
-self._assert_equals_(_st(set)._printString(),"a Set ('foo' 3)");
-_st(set)._add_((3));
-self._assert_equals_(_st(set)._printString(),"a Set ('foo' 3)");
-return self}, function($ctx1) {$ctx1.fill(self,"testPrintString",{set:set},smalltalk.SetTest)})},
-messageSends: ["new", "assert:equals:", "printString", "add:", "remove:"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSize",
-fn: function (){
-var self=this;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(_st($Set())._new())._size(),(0));
-self._assert_equals_(_st(_st($Set())._withAll_([(1), (2), (3), (4)]))._size(),(4));
-self._assert_equals_(_st(_st($Set())._withAll_([(1), (1), (1), (1)]))._size(),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testSize",{},smalltalk.SetTest)})},
-messageSends: ["assert:equals:", "size", "new", "withAll:"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnboxedObjects",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(_st(["foo"._yourself(),"foo"._yourself()])._asSet())._asArray(),["foo"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testUnboxedObjects",{},smalltalk.SetTest)})},
-messageSends: ["assert:equals:", "asArray", "asSet", "yourself"]}),
-smalltalk.SetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testUnicity",
-fn: function (){
-var self=this;
-var set;
-function $Set(){return smalltalk.Set||(typeof Set=="undefined"?nil:Set)}
-return smalltalk.withContext(function($ctx1) { 
-set=_st($Set())._new();
-_st(set)._add_((21));
-_st(set)._add_("hello");
-_st(set)._add_((21));
-self._assert_equals_(_st(set)._size(),(2));
-_st(set)._add_("hello");
-self._assert_equals_(_st(set)._size(),(2));
-self._assert_equals_(_st(set)._asArray(),[(21), "hello"]);
-return self}, function($ctx1) {$ctx1.fill(self,"testUnicity",{set:set},smalltalk.SetTest)})},
-messageSends: ["new", "add:", "assert:equals:", "size", "asArray"]}),
-smalltalk.SetTest);
-
-
-
-smalltalk.addClass('StreamTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._class())._collectionClass();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.StreamTest)})},
-messageSends: ["collectionClass", "class"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newCollection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collectionClass())._new();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newCollection",{},smalltalk.StreamTest)})},
-messageSends: ["new", "collectionClass"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newStream",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._collectionClass())._new())._stream();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newStream",{},smalltalk.StreamTest)})},
-messageSends: ["stream", "new", "collectionClass"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAtStartAtEnd",
-fn: function (){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-stream=self._newStream();
-self._assert_(_st(stream)._atStart());
-self._assert_(_st(stream)._atEnd());
-_st(stream)._nextPutAll_(self._newCollection());
-self._assert_(_st(stream)._atEnd());
-self._deny_(_st(stream)._atStart());
-_st(stream)._position_((1));
-self._deny_(_st(stream)._atEnd());
-self._deny_(_st(stream)._atStart());
-return self}, function($ctx1) {$ctx1.fill(self,"testAtStartAtEnd",{stream:stream},smalltalk.StreamTest)})},
-messageSends: ["newStream", "assert:", "atStart", "atEnd", "nextPutAll:", "newCollection", "deny:", "position:"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testContents",
-fn: function (){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-stream=self._newStream();
-_st(stream)._nextPutAll_(self._newCollection());
-self._assert_equals_(_st(stream)._contents(),self._newCollection());
-return self}, function($ctx1) {$ctx1.fill(self,"testContents",{stream:stream},smalltalk.StreamTest)})},
-messageSends: ["newStream", "nextPutAll:", "newCollection", "assert:equals:", "contents"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIsEmpty",
-fn: function (){
-var self=this;
-var stream;
-return smalltalk.withContext(function($ctx1) { 
-stream=self._newStream();
-self._assert_(_st(stream)._isEmpty());
-_st(stream)._nextPutAll_(self._newCollection());
-self._deny_(_st(stream)._isEmpty());
-return self}, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{stream:stream},smalltalk.StreamTest)})},
-messageSends: ["newStream", "assert:", "isEmpty", "nextPutAll:", "newCollection", "deny:"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPosition",
-fn: function (){
-var self=this;
-var collection,stream;
-return smalltalk.withContext(function($ctx1) { 
-collection=self._newCollection();
-stream=self._newStream();
-_st(stream)._nextPutAll_(collection);
-self._assert_equals_(_st(stream)._position(),_st(collection)._size());
-_st(stream)._position_((0));
-self._assert_equals_(_st(stream)._position(),(0));
-_st(stream)._next();
-self._assert_equals_(_st(stream)._position(),(1));
-_st(stream)._next();
-self._assert_equals_(_st(stream)._position(),(2));
-return self}, function($ctx1) {$ctx1.fill(self,"testPosition",{collection:collection,stream:stream},smalltalk.StreamTest)})},
-messageSends: ["newCollection", "newStream", "nextPutAll:", "assert:equals:", "position", "size", "position:", "next"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testReading",
-fn: function (){
-var self=this;
-var stream,collection;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-collection=self._newCollection();
-stream=self._newStream();
-$1=stream;
-_st($1)._nextPutAll_(collection);
-$2=_st($1)._position_((0));
-_st(collection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_equals_(_st(stream)._next(),each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._assert_(_st(_st(stream)._next())._isNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testReading",{stream:stream,collection:collection},smalltalk.StreamTest)})},
-messageSends: ["newCollection", "newStream", "nextPutAll:", "position:", "do:", "assert:equals:", "next", "assert:", "isNil"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testStreamContents",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"testStreamContents",{},smalltalk.StreamTest)})},
-messageSends: []}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testWrite",
-fn: function (){
-var self=this;
-var stream,collection;
-return smalltalk.withContext(function($ctx1) { 
-collection=self._newCollection();
-stream=self._newStream();
-_st(collection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream).__lt_lt(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._assert_equals_(_st(stream)._contents(),collection);
-return self}, function($ctx1) {$ctx1.fill(self,"testWrite",{stream:stream,collection:collection},smalltalk.StreamTest)})},
-messageSends: ["newCollection", "newStream", "do:", "<<", "assert:equals:", "contents"]}),
-smalltalk.StreamTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testWriting",
-fn: function (){
-var self=this;
-var stream,collection;
-return smalltalk.withContext(function($ctx1) { 
-collection=self._newCollection();
-stream=self._newStream();
-_st(collection)._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPut_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-self._assert_equals_(_st(stream)._contents(),collection);
-stream=self._newStream();
-_st(stream)._nextPutAll_(collection);
-self._assert_equals_(_st(stream)._contents(),collection);
-return self}, function($ctx1) {$ctx1.fill(self,"testWriting",{stream:stream,collection:collection},smalltalk.StreamTest)})},
-messageSends: ["newCollection", "newStream", "do:", "nextPut:", "assert:equals:", "contents", "nextPutAll:"]}),
-smalltalk.StreamTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return nil;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.StreamTest.klass)})},
-messageSends: []}),
-smalltalk.StreamTest.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAbstract",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._collectionClass())._isNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.StreamTest.klass)})},
-messageSends: ["isNil", "collectionClass"]}),
-smalltalk.StreamTest.klass);
-
-
-smalltalk.addClass('ArrayStreamTest', smalltalk.StreamTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newCollection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=[true,(1),(3).__at((4)),"foo"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"newCollection",{},smalltalk.ArrayStreamTest)})},
-messageSends: ["@"]}),
-smalltalk.ArrayStreamTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$Array();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.ArrayStreamTest.klass)})},
-messageSends: []}),
-smalltalk.ArrayStreamTest.klass);
-
-
-smalltalk.addClass('StringStreamTest', smalltalk.StreamTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "newCollection",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "hello world";
-}, function($ctx1) {$ctx1.fill(self,"newCollection",{},smalltalk.StringStreamTest)})},
-messageSends: []}),
-smalltalk.StringStreamTest);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "collectionClass",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$String();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"collectionClass",{},smalltalk.StringStreamTest.klass)})},
-messageSends: []}),
-smalltalk.StringStreamTest.klass);
-
-
-smalltalk.addClass('UndefinedTest', smalltalk.TestCase, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCopying",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(nil._copy(),nil);
-return self}, function($ctx1) {$ctx1.fill(self,"testCopying",{},smalltalk.UndefinedTest)})},
-messageSends: ["assert:equals:", "copy"]}),
-smalltalk.UndefinedTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testDeepCopy",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(nil._deepCopy()).__eq(nil));
-return self}, function($ctx1) {$ctx1.fill(self,"testDeepCopy",{},smalltalk.UndefinedTest)})},
-messageSends: ["assert:", "=", "deepCopy"]}),
-smalltalk.UndefinedTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIfNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$5,$4,$6,$7,$8,$10,$9;
-$1=self;
-if(($receiver = nil) == nil || $receiver == undefined){
-$2=true;
-} else {
-$2=nil;
-};
-_st($1)._assert_equals_($2,true);
-$3=self;
-if(($receiver = nil) == nil || $receiver == undefined){
-$5=nil;
-} else {
-$5=true;
-};
-$4=_st($5).__eq(true);
-_st($3)._deny_($4);
-$6=self;
-if(($receiver = nil) == nil || $receiver == undefined){
-$7=true;
-} else {
-$7=false;
-};
-_st($6)._assert_equals_($7,true);
-$8=self;
-if(($receiver = nil) == nil || $receiver == undefined){
-$10=false;
-} else {
-$10=true;
-};
-$9=_st($10).__eq(true);
-_st($8)._deny_($9);
-return self}, function($ctx1) {$ctx1.fill(self,"testIfNil",{},smalltalk.UndefinedTest)})},
-messageSends: ["assert:equals:", "ifNil:", "deny:", "=", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]}),
-smalltalk.UndefinedTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIsNil",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(nil._isNil());
-self._deny_(nil._notNil());
-return self}, function($ctx1) {$ctx1.fill(self,"testIsNil",{},smalltalk.UndefinedTest)})},
-messageSends: ["assert:", "isNil", "deny:", "notNil"]}),
-smalltalk.UndefinedTest);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 221
js/Kernel-Tests.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Tests", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/SUnit", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Tests');
+smalltalk.packages["Kernel-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('BlockClosureTest', smalltalk.TestCase, [], 'Kernel-Tests');
 smalltalk.addMethod(
@@ -2897,225 +2898,6 @@ smalltalk.JavaScriptExceptionTest);
 
 
 
-smalltalk.addClass('LegacyPackageHandlerTest', smalltalk.TestCase, ['zorkPackage', 'grulPackage', 'backUpCommitPathJs', 'backUpCommitPathSt'], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-category: 'running',
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@backUpCommitPathJs"]=_st($LegacyPackageHandler())._defaultCommitPathJs();
-self["@backUpCommitPathSt"]=_st($LegacyPackageHandler())._defaultCommitPathSt();
-_st($LegacyPackageHandler())._resetCommitPaths();
-self["@zorkPackage"]=_st(_st($Package())._new())._name_("Zork");
-$1=_st($Package())._new();
-_st($1)._name_("Grul");
-_st($1)._commitPathJs_("server/grul/js");
-_st($1)._commitPathSt_("grul/st");
-$2=_st($1)._yourself();
-self["@grulPackage"]=$2;
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "setUp\x0a\x09backUpCommitPathJs := LegacyPackageHandler defaultCommitPathJs.\x0a\x09backUpCommitPathSt := LegacyPackageHandler defaultCommitPathSt.\x0a\x0a\x09LegacyPackageHandler resetCommitPaths.\x0a\x0a\x09zorkPackage := Package new name: 'Zork'.\x0a\x09grulPackage := Package new\x0a\x09\x09\x09\x09\x09name: 'Grul';\x0a\x09\x09\x09\x09\x09commitPathJs: 'server/grul/js';\x0a\x09\x09\x09\x09\x09commitPathSt: 'grul/st';\x0a\x09\x09\x09\x09\x09yourself",
-messageSends: ["defaultCommitPathJs", "defaultCommitPathSt", "resetCommitPaths", "name:", "new", "commitPathJs:", "commitPathSt:", "yourself"],
-referencedClasses: ["LegacyPackageHandler", "Package"]
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-category: 'running',
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=$LegacyPackageHandler();
-_st($1)._defaultCommitPathJs_(self["@backUpCommitPathJs"]);
-$2=_st($1)._defaultCommitPathSt_(self["@backUpCommitPathSt"]);
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "tearDown\x0a\x09LegacyPackageHandler\x0a\x09\x09defaultCommitPathJs: backUpCommitPathJs;\x0a\x09\x09defaultCommitPathSt: backUpCommitPathSt",
-messageSends: ["defaultCommitPathJs:", "defaultCommitPathSt:"],
-referencedClasses: ["LegacyPackageHandler"]
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathJsShouldBeServerGrulJs",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathJs(),"server/grul/js");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathJsShouldBeServerGrulJs",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "testGrulCommitPathJsShouldBeServerGrulJs\x0a\x09self assert: grulPackage commitPathJs equals: 'server/grul/js'",
-messageSends: ["assert:equals:", "commitPathJs"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathStShouldBeGrulSt",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathSt(),"grul/st");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathStShouldBeGrulSt",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "testGrulCommitPathStShouldBeGrulSt\x0a\x09self assert: grulPackage commitPathSt equals: 'grul/st'",
-messageSends: ["assert:equals:", "commitPathSt"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathJsShouldBeJs",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathJs(),"js");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathJsShouldBeJs",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "testZorkCommitPathJsShouldBeJs\x0a\x09self assert: zorkPackage commitPathJs equals: 'js'",
-messageSends: ["assert:equals:", "commitPathJs"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathStShouldBeSt",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathSt(),"st");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathStShouldBeSt",{},smalltalk.LegacyPackageHandlerTest)})},
-args: [],
-source: "testZorkCommitPathStShouldBeSt\x0a\x09self assert: zorkPackage commitPathSt equals: 'st'",
-messageSends: ["assert:equals:", "commitPathSt"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTest);
-
-
-
-smalltalk.addClass('LegacyPackageHandlerTestWithDefaultsChanged', smalltalk.LegacyPackageHandlerTest, [], 'Kernel-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-category: 'running',
-fn: function (){
-var self=this;
-function $LegacyPackageHandler(){return smalltalk.LegacyPackageHandler||(typeof LegacyPackageHandler=="undefined"?nil:LegacyPackageHandler)}
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.superclass.fn.prototype._setUp.apply(_st(self), []);
-$1=$LegacyPackageHandler();
-_st($1)._defaultCommitPathJs_("javascripts/");
-$2=_st($1)._defaultCommitPathSt_("smalltalk/");
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-args: [],
-source: "setUp\x0a\x09super setUp.\x0a\x0a\x09LegacyPackageHandler\x0a\x09\x09defaultCommitPathJs: 'javascripts/';\x0a\x09\x09defaultCommitPathSt: 'smalltalk/'.",
-messageSends: ["setUp", "defaultCommitPathJs:", "defaultCommitPathSt:"],
-referencedClasses: ["LegacyPackageHandler"]
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathJsShouldBeServerGrulJs",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathJs(),"server/grul/js");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathJsShouldBeServerGrulJs",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-args: [],
-source: "testGrulCommitPathJsShouldBeServerGrulJs\x0a\x09self assert: grulPackage commitPathJs equals: 'server/grul/js'",
-messageSends: ["assert:equals:", "commitPathJs"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrulCommitPathStShouldBeGrulSt",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@grulPackage"])._commitPathSt(),"grul/st");
-return self}, function($ctx1) {$ctx1.fill(self,"testGrulCommitPathStShouldBeGrulSt",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-args: [],
-source: "testGrulCommitPathStShouldBeGrulSt\x0a\x09self assert: grulPackage commitPathSt equals: 'grul/st'",
-messageSends: ["assert:equals:", "commitPathSt"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathJsShouldBeJavascript",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathJs(),"javascripts/");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathJsShouldBeJavascript",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-args: [],
-source: "testZorkCommitPathJsShouldBeJavascript\x0a\x09self assert: zorkPackage commitPathJs equals: 'javascripts/'",
-messageSends: ["assert:equals:", "commitPathJs"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testZorkCommitPathStShouldBeSmalltalk",
-category: 'tests',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@zorkPackage"])._commitPathSt(),"smalltalk/");
-return self}, function($ctx1) {$ctx1.fill(self,"testZorkCommitPathStShouldBeSmalltalk",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged)})},
-args: [],
-source: "testZorkCommitPathStShouldBeSmalltalk\x0a\x09self assert: zorkPackage commitPathSt equals: 'smalltalk/'",
-messageSends: ["assert:equals:", "commitPathSt"],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInheritSelectors",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return false;
-}, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.klass)})},
-args: [],
-source: "shouldInheritSelectors\x0a\x09^ false",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.LegacyPackageHandlerTestWithDefaultsChanged.klass);
-
-
 smalltalk.addClass('MessageSendTest', smalltalk.TestCase, [], 'Kernel-Tests');
 smalltalk.addMethod(
 smalltalk.method({
@@ -5270,4 +5052,4 @@ referencedClasses: []
 smalltalk.UndefinedTest);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 154
js/Kernel-Transcript.deploy.js

@@ -1,154 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Kernel-Transcript');
-
-smalltalk.addClass('ConsoleTranscript', smalltalk.Object, ['textarea'], 'Kernel-Transcript');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.ConsoleTranscript)})},
-messageSends: []}),
-smalltalk.ConsoleTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cr",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.ConsoleTranscript)})},
-messageSends: []}),
-smalltalk.ConsoleTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.ConsoleTranscript)})},
-messageSends: []}),
-smalltalk.ConsoleTranscript);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-console.log(String(_st(anObject)._asString()));
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.ConsoleTranscript)})},
-messageSends: []}),
-smalltalk.ConsoleTranscript);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
-return smalltalk.withContext(function($ctx1) { 
-_st($Transcript())._register_(self._new());
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ConsoleTranscript.klass)})},
-messageSends: ["register:", "new"]}),
-smalltalk.ConsoleTranscript.klass);
-
-
-smalltalk.addClass('Transcript', smalltalk.Object, [], 'Kernel-Transcript');
-
-smalltalk.Transcript.klass.iVarNames = ['current'];
-smalltalk.addMethod(
-smalltalk.method({
-selector: "clear",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._current())._clear();
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.Transcript.klass)})},
-messageSends: ["clear", "current"]}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "cr",
-fn: function (){
-var self=this;
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-_st(self._current())._show_(_st($String())._cr());
-return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
-messageSends: ["show:", "current", "cr"]}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "current",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@current"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"current",{},smalltalk.Transcript.klass)})},
-messageSends: []}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "inspect:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._show_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.Transcript.klass)})},
-messageSends: ["show:"]}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.Transcript.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "open",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._current())._open();
-return self}, function($ctx1) {$ctx1.fill(self,"open",{},smalltalk.Transcript.klass)})},
-messageSends: ["open", "current"]}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "register:",
-fn: function (aTranscript){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@current"]=aTranscript;
-return self}, function($ctx1) {$ctx1.fill(self,"register:",{aTranscript:aTranscript},smalltalk.Transcript.klass)})},
-messageSends: []}),
-smalltalk.Transcript.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "show:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._current())._show_(anObject);
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},smalltalk.Transcript.klass)})},
-messageSends: ["show:", "current"]}),
-smalltalk.Transcript.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/Kernel-Transcript.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/Kernel-Transcript", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('Kernel-Transcript');
+smalltalk.packages["Kernel-Transcript"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('ConsoleTranscript', smalltalk.Object, ['textarea'], 'Kernel-Transcript');
 smalltalk.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
@@ -218,4 +219,4 @@ referencedClasses: []
 }),
 smalltalk.Transcript.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 431
js/SUnit-Tests.deploy.js

@@ -1,431 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('SUnit-Tests');
-
-smalltalk.addClass('ExampleSetTest', smalltalk.TestCase, ['empty', 'full'], 'SUnit-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-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)})},
-messageSends: ["new", "with:with:"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAdd",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@empty"])._add_((5));
-self._assert_(_st(self["@empty"])._includes_((5)));
-return self}, function($ctx1) {$ctx1.fill(self,"testAdd",{},smalltalk.ExampleSetTest)})},
-messageSends: ["add:", "assert:", "includes:"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testGrow",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@empty"])._addAll_((1)._to_((100)));
-self._assert_equals_(_st(self["@empty"])._size(),(100));
-return self}, function($ctx1) {$ctx1.fill(self,"testGrow",{},smalltalk.ExampleSetTest)})},
-messageSends: ["addAll:", "to:", "assert:equals:", "size"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIllegal",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@empty"])._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@empty"])._at_put_((5),"abc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
-messageSends: ["should:raise:", "at:", "at:put:"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIncludes",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(self["@full"])._includes_((5)));
-self._assert_(_st(self["@full"])._includes_("abc"));
-return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
-messageSends: ["assert:", "includes:"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testOccurrences",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_(_st(self["@empty"])._occurrencesOf_((0)),(0));
-self._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
-_st(self["@full"])._add_((5));
-self._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
-return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},smalltalk.ExampleSetTest)})},
-messageSends: ["assert:equals:", "occurrencesOf:", "add:"]}),
-smalltalk.ExampleSetTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testRemove",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@full"])._remove_((5));
-self._assert_(_st(self["@full"])._includes_("abc"));
-self._deny_(_st(self["@full"])._includes_((5)));
-return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
-messageSends: ["remove:", "assert:", "includes:", "deny:"]}),
-smalltalk.ExampleSetTest);
-
-
-
-smalltalk.addClass('SUnitAsyncTest', smalltalk.TestCase, ['flag'], 'SUnit-Tests');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeError",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="bad";
-self._timeout_((30));
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@flag"]="ok";
-self["@flag"];
-return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeError",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeErrorFailingInTearDown",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="bad";
-self._timeout_((30));
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeFailure",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="bad";
-self._timeout_((30));
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self["@flag"]="ok";
-self["@flag"];
-return self._assert_(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeMultipleTimeoutFailing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._timeout_((100));
-_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._timeout_((20));
-return _st(self._async_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._valueWithTimeout_((30));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeMultipleTimeoutPassing",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._timeout_((20));
-_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._timeout_((40));
-return _st(self._async_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})})))._valueWithTimeout_((20));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((10));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "fakeTimeout",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._timeout_((10));
-_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
-return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selectorSetOf:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(aCollection)._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
-messageSends: ["asSet", "collect:", "selector"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="ok";
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SUnitAsyncTest)})},
-messageSends: []}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_equals_("ok",self["@flag"]);
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["assert:equals:"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsyncErrorsAndFailures",
-fn: function (){
-var self=this;
-var suite,runner,result,assertBlock;
-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=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._class())._selector_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-runner=_st($TestSuiteRunner())._on_(suite);
-self._timeout_((200));
-result=_st(runner)._result();
-assertBlock=self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._assert_equals_(self._selectorSetOf_(_st(result)._errors()),["fakeError"]._asSet());
-self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_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)){
-$2=_st(_st(result)._runs()).__eq(_st(result)._total());
-return _st($2)._ifTrue_(assertBlock);
-};
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)})}));
-_st(runner)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},smalltalk.SUnitAsyncTest)})},
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testAsyncNeedsTimeout",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._async_((function(){
-return smalltalk.withContext(function($ctx3) {
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._timeout_((0));
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._async_((function(){
-return smalltalk.withContext(function($ctx3) {
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}),$Error());
-self._finished();
-return self}, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testFinishedNeedsTimeout",
-fn: function (){
-var self=this;
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
-self._timeout_((0));
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testIsAsyncReturnsCorrectValues",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._deny_(self._isAsync());
-self._timeout_((0));
-self._assert_(self._isAsync());
-self._finished();
-self._deny_(self._isAsync());
-return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testPass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="bad";
-self._timeout_((10));
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._assert_(true);
-self._finished();
-self["@flag"]="ok";
-return self["@flag"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((5));
-return self}, function($ctx1) {$ctx1.fill(self,"testPass",{},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTimeouts",
-fn: function (){
-var self=this;
-var suite,runner,result,assertBlock;
-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=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._class())._selector_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-runner=_st($TestSuiteRunner())._on_(suite);
-self._timeout_((200));
-result=_st(runner)._result();
-assertBlock=self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._assert_equals_(self._selectorSetOf_(_st(result)._errors()),_st($Set())._new());
-self._assert_equals_(self._selectorSetOf_(_st(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-_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)){
-$2=_st(_st(result)._runs()).__eq(_st(result)._total());
-return _st($2)._ifTrue_(assertBlock);
-};
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)})}));
-_st(runner)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},smalltalk.SUnitAsyncTest)})},
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]}),
-smalltalk.SUnitAsyncTest);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
-fn: function (){
-var self=this;
-var x;
-return smalltalk.withContext(function($ctx1) { 
-self["@flag"]="bad";
-self._timeout_((10));
-x=(0);
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._finished();
-self["@flag"]="ok";
-self["@flag"];
-x=_st(x).__plus((1));
-x;
-return self._assert_equals_(x,(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((0));
-self["@flag"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-self._finished();
-self["@flag"]="ok";
-self["@flag"];
-x=_st(x).__plus((1));
-x;
-return self._assert_equals_(x,(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})))._valueWithTimeout_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},smalltalk.SUnitAsyncTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]}),
-smalltalk.SUnitAsyncTest);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 3 - 2
js/SUnit-Tests.js

@@ -1,5 +1,6 @@
-(function(smalltalk,nil,_st){
+define("amber_core/SUnit-Tests", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/SUnit"], function(smalltalk,nil,_st){
 smalltalk.addPackage('SUnit-Tests');
+smalltalk.packages["SUnit-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
 
 smalltalk.addClass('ExampleSetTest', smalltalk.TestCase, ['empty', 'full'], 'SUnit-Tests');
 smalltalk.ExampleSetTest.comment="ExampleSetTest is taken from Pharo 1.4.\x0a\x0aTHe purpose of this class is to demonstrate a simple use case of the test framework.";
@@ -544,4 +545,4 @@ referencedClasses: []
 smalltalk.SUnitAsyncTest);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

+ 0 - 925
js/SUnit.deploy.js

@@ -1,925 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('SUnit');
-
-smalltalk.addClass('ResultAnnouncement', smalltalk.Object, ['result'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@result"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ResultAnnouncement)})},
-messageSends: []}),
-smalltalk.ResultAnnouncement);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result:",
-fn: function (aTestResult){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@result"]=aTestResult;
-return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ResultAnnouncement)})},
-messageSends: []}),
-smalltalk.ResultAnnouncement);
-
-
-
-smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector', 'asyncTimeout', 'context'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assert:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_description_(aBoolean,"Assertion failed");
-return self}, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},smalltalk.TestCase)})},
-messageSends: ["assert:description:"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assert:description:",
-fn: function (aBoolean,aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=aBoolean;
-if(! smalltalk.assert($1)){
-self._signalFailure_(aString);
-};
-return self}, function($ctx1) {$ctx1.fill(self,"assert:description:",{aBoolean:aBoolean,aString:aString},smalltalk.TestCase)})},
-messageSends: ["ifFalse:", "signalFailure:"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "assert:equals:",
-fn: function (actual,expected){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._assert_description_(_st(actual).__eq(expected),_st(_st("Expected: ".__comma(_st(expected)._printString())).__comma(" but was: ")).__comma(_st(actual)._printString()));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},smalltalk.TestCase)})},
-messageSends: ["assert:description:", "=", ",", "printString"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "async:",
-fn: function (aBlock){
-var self=this;
-var c;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-self._errorIfNotAsync_("#async");
-c=self["@context"];
-$1=(function(){
-return smalltalk.withContext(function($ctx2) {
-$2=self._isAsync();
-if(smalltalk.assert($2)){
-return _st(c)._execute_(aBlock);
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})});
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"async:",{aBlock:aBlock,c:c},smalltalk.TestCase)})},
-messageSends: ["errorIfNotAsync:", "ifTrue:", "isAsync", "execute:"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "context:",
-fn: function (aRunningTestContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@context"]=aRunningTestContext;
-return self}, function($ctx1) {$ctx1.fill(self,"context:",{aRunningTestContext:aRunningTestContext},smalltalk.TestCase)})},
-messageSends: []}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "deny:",
-fn: function (aBoolean){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(aBoolean)._not());
-return self}, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},smalltalk.TestCase)})},
-messageSends: ["assert:", "not"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errorIfNotAsync:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._isAsync();
-if(! smalltalk.assert($1)){
-self._error_(_st(aString).__comma(" used without prior #timeout:"));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:",{aString:aString},smalltalk.TestCase)})},
-messageSends: ["ifFalse:", "isAsync", "error:", ","]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "finished",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._errorIfNotAsync_("#finished");
-self["@asyncTimeout"]=nil;
-return self}, function($ctx1) {$ctx1.fill(self,"finished",{},smalltalk.TestCase)})},
-messageSends: ["errorIfNotAsync:"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAsync",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@asyncTimeout"])._notNil();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isAsync",{},smalltalk.TestCase)})},
-messageSends: ["notNil"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "performTest",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@asyncTimeout"]=nil;
-self._perform_(self._selector());
-return self}, function($ctx1) {$ctx1.fill(self,"performTest",{},smalltalk.TestCase)})},
-messageSends: ["perform:", "selector"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "runCase",
-fn: function (){
-var self=this;
-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)})},
-messageSends: ["start", "testCase:"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@testSelector"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.TestCase)})},
-messageSends: []}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setTestSelector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@testSelector"]=aSelector;
-return self}, function($ctx1) {$ctx1.fill(self,"setTestSelector:",{aSelector:aSelector},smalltalk.TestCase)})},
-messageSends: []}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "setUp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.TestCase)})},
-messageSends: []}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "should:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(aBlock)._value());
-return self}, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},smalltalk.TestCase)})},
-messageSends: ["assert:", "value"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "should:raise:",
-fn: function (aBlock,anExceptionClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
-messageSends: ["assert:", "on:do:", "value"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldnt:raise:",
-fn: function (aBlock,anExceptionClass){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_(anExceptionClass,(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},smalltalk.TestCase)})},
-messageSends: ["assert:", "on:do:", "value"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "signalFailure:",
-fn: function (aString){
-var self=this;
-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);
-$2=_st($1)._signal();
-return self}, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},smalltalk.TestCase)})},
-messageSends: ["messageText:", "new", "signal"]}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "tearDown",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self}, function($ctx1) {$ctx1.fill(self,"tearDown",{},smalltalk.TestCase)})},
-messageSends: []}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "timeout:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@asyncTimeout"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-_st(self["@asyncTimeout"])._clearTimeout();
-};
-self["@asyncTimeout"]=(0);
-self["@asyncTimeout"]=_st(self._async_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._assert_description_(false,"SUnit grace time exhausted");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})})))._valueWithTimeout_(aNumber);
-return self}, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},smalltalk.TestCase)})},
-messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]}),
-smalltalk.TestCase);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allTestSelectors",
-fn: function (){
-var self=this;
-var selectors;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-selectors=self._testSelectors();
-$1=self._shouldInheritSelectors();
-if(smalltalk.assert($1)){
-_st(selectors)._addAll_(_st(self._superclass())._allTestSelectors());
-};
-$2=selectors;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"allTestSelectors",{selectors:selectors},smalltalk.TestCase.klass)})},
-messageSends: ["testSelectors", "ifTrue:", "shouldInheritSelectors", "addAll:", "allTestSelectors", "superclass"]}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "buildSuite",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._allTestSelectors())._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._selector_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"buildSuite",{},smalltalk.TestCase.klass)})},
-messageSends: ["collect:", "allTestSelectors", "selector:"]}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "heliosClass",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return "test";
-}, function($ctx1) {$ctx1.fill(self,"heliosClass",{},smalltalk.TestCase.klass)})},
-messageSends: []}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "isAbstract",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._name()).__eq("TestCase");
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isAbstract",{},smalltalk.TestCase.klass)})},
-messageSends: ["=", "name"]}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "lookupHierarchyRoot",
-fn: function (){
-var self=this;
-function $TestCase(){return smalltalk.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=$TestCase();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"lookupHierarchyRoot",{},smalltalk.TestCase.klass)})},
-messageSends: []}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "selector:",
-fn: function (aSelector){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._setTestSelector_(aSelector);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selector:",{aSelector:aSelector},smalltalk.TestCase.klass)})},
-messageSends: ["setTestSelector:", "new", "yourself"]}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "shouldInheritSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self.__tild_eq(self._lookupHierarchyRoot());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},smalltalk.TestCase.klass)})},
-messageSends: ["~=", "lookupHierarchyRoot"]}),
-smalltalk.TestCase.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testSelectors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._methodDictionary())._keys())._select_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._match_("^test");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"testSelectors",{},smalltalk.TestCase.klass)})},
-messageSends: ["select:", "keys", "methodDictionary", "match:"]}),
-smalltalk.TestCase.klass);
-
-
-smalltalk.addClass('TestContext', smalltalk.Object, ['testCase'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute:",
-fn: function (aBlock){
-var self=this;
-var failed;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st(self["@testCase"])._context_(self);
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-failed=true;
-failed;
-_st(aBlock)._value();
-failed=false;
-return failed;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self["@testCase"])._context_(nil);
-$1=_st(failed)._and_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(self["@testCase"])._isAsync();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
-if(smalltalk.assert($1)){
-_st(self["@testCase"])._finished();
-};
-$2=_st(self["@testCase"])._isAsync();
-if(! smalltalk.assert($2)){
-return _st(self["@testCase"])._tearDown();
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock,failed:failed},smalltalk.TestContext)})},
-messageSends: ["context:", "ensure:", "value", "ifTrue:", "and:", "isAsync", "finished", "ifFalse:", "tearDown"]}),
-smalltalk.TestContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "start",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._execute_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self["@testCase"])._setUp();
-return _st(self["@testCase"])._performTest();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.TestContext)})},
-messageSends: ["execute:", "setUp", "performTest"]}),
-smalltalk.TestContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCase:",
-fn: function (aTestCase){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@testCase"]=aTestCase;
-return self}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext)})},
-messageSends: []}),
-smalltalk.TestContext);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCase:",
-fn: function (aTestCase){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._new();
-_st($2)._testCase_(aTestCase);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},smalltalk.TestContext.klass)})},
-messageSends: ["testCase:", "new", "yourself"]}),
-smalltalk.TestContext.klass);
-
-
-smalltalk.addClass('ReportingTestContext', smalltalk.TestContext, ['finished', 'result'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "execute:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._withErrorReporting_((function(){
-return smalltalk.withContext(function($ctx3) {
-return smalltalk.ReportingTestContext.superclass.fn.prototype._execute_.apply(_st(self), [aBlock]);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-$1=_st(self["@testCase"])._isAsync();
-if(! smalltalk.assert($1)){
-_st(self["@result"])._increaseRuns();
-return _st(self["@finished"])._value();
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
-messageSends: ["ensure:", "withErrorReporting:", "execute:", "ifFalse:", "isAsync", "increaseRuns", "value"]}),
-smalltalk.ReportingTestContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "finished:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@finished"]=aBlock;
-return self}, function($ctx1) {$ctx1.fill(self,"finished:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
-messageSends: []}),
-smalltalk.ReportingTestContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result:",
-fn: function (aTestResult){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@result"]=aTestResult;
-return self}, function($ctx1) {$ctx1.fill(self,"result:",{aTestResult:aTestResult},smalltalk.ReportingTestContext)})},
-messageSends: []}),
-smalltalk.ReportingTestContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "withErrorReporting:",
-fn: function (aBlock){
-var self=this;
-function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-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},$ctx2,2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@result"])._addError_(self["@testCase"]);
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,3)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},smalltalk.ReportingTestContext)})},
-messageSends: ["on:do:", "addFailure:", "addError:"]}),
-smalltalk.ReportingTestContext);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "testCase:result:finished:",
-fn: function (aTestCase,aTestResult,aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=smalltalk.ReportingTestContext.klass.superclass.fn.prototype._testCase_.apply(_st(self), [aTestCase]);
-_st($2)._result_(aTestResult);
-_st($2)._finished_(aBlock);
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:",{aTestCase:aTestCase,aTestResult:aTestResult,aBlock:aBlock},smalltalk.ReportingTestContext.klass)})},
-messageSends: ["result:", "testCase:", "finished:", "yourself"]}),
-smalltalk.ReportingTestContext.klass);
-
-
-smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
-
-
-smalltalk.addClass('TestResult', smalltalk.Object, ['timestamp', 'runs', 'errors', 'failures', 'total'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addError:",
-fn: function (anError){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._errors())._add_(anError);
-return self}, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},smalltalk.TestResult)})},
-messageSends: ["add:", "errors"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "addFailure:",
-fn: function (aFailure){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._failures())._add_(aFailure);
-return self}, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},smalltalk.TestResult)})},
-messageSends: ["add:", "failures"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "errors",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@errors"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"errors",{},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "failures",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@failures"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"failures",{},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "increaseRuns",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@runs"]=_st(self["@runs"]).__plus((1));
-return self}, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},smalltalk.TestResult)})},
-messageSends: ["+"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-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.TestResult.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@timestamp"]=_st($Date())._now();
-self["@runs"]=(0);
-self["@errors"]=_st($Array())._new();
-self["@failures"]=_st($Array())._new();
-self["@total"]=(0);
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestResult)})},
-messageSends: ["initialize", "now", "new"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextRunDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=_st(self._runs()).__eq_eq(self._total());
-if(! smalltalk.assert($2)){
-$1=_st(aBlock)._value_(_st(self._runs()).__plus((1)));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextRunDo:",{aBlock:aBlock},smalltalk.TestResult)})},
-messageSends: ["ifFalse:", "==", "runs", "total", "value:", "+"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "runCase:",
-fn: function (aTestCase){
-var self=this;
-function $TestFailure(){return smalltalk.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
-function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-return smalltalk.withContext(function($ctx1) { 
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st((function(){
-return smalltalk.withContext(function($ctx3) {
-self._increaseRuns();
-return _st(aTestCase)._runCase();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}))._on_do_($TestFailure(),(function(ex){
-return smalltalk.withContext(function($ctx3) {
-return self._addFailure_(aTestCase);
-}, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return self._addError_(aTestCase);
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,4)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},smalltalk.TestResult)})},
-messageSends: ["on:do:", "increaseRuns", "runCase", "addFailure:", "addError:"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "runs",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@runs"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"runs",{},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "status",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=_st(self._errors())._isEmpty();
-if(smalltalk.assert($2)){
-$3=_st(self._failures())._isEmpty();
-if(smalltalk.assert($3)){
-$1="success";
-} else {
-$1="failure";
-};
-} else {
-$1="error";
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"status",{},smalltalk.TestResult)})},
-messageSends: ["ifTrue:ifFalse:", "isEmpty", "errors", "failures"]}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "timestamp",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@timestamp"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"timestamp",{},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "total",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@total"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"total",{},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "total:",
-fn: function (aNumber){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@total"]=aNumber;
-return self}, function($ctx1) {$ctx1.fill(self,"total:",{aNumber:aNumber},smalltalk.TestResult)})},
-messageSends: []}),
-smalltalk.TestResult);
-
-
-
-smalltalk.addClass('TestSuiteRunner', smalltalk.Object, ['suite', 'result', 'announcer', 'runNextTest'], 'SUnit');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "announcer",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@announcer"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"announcer",{},smalltalk.TestSuiteRunner)})},
-messageSends: []}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "contextOf:",
-fn: function (anInteger){
-var self=this;
-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 self._resume();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},smalltalk.TestSuiteRunner)})},
-messageSends: ["testCase:result:finished:", "at:", "resume"]}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initialize",
-fn: function (){
-var self=this;
-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.TestSuiteRunner.superclass.fn.prototype._initialize.apply(_st(self), []);
-self["@announcer"]=_st($Announcer())._new();
-self["@result"]=_st($TestResult())._new();
-self["@runNextTest"]=(function(){
-var runs;
-return smalltalk.withContext(function($ctx2) {
-runs=_st(self["@result"])._runs();
-runs;
-$1=_st(runs).__lt(_st(self["@result"])._total());
-if(smalltalk.assert($1)){
-return _st(self._contextOf_(_st(runs).__plus((1))))._start();
-};
-}, function($ctx2) {$ctx2.fillBlock({runs:runs},$ctx1,1)})});
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TestSuiteRunner)})},
-messageSends: ["initialize", "new", "runs", "ifTrue:", "<", "total", "start", "contextOf:", "+"]}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "result",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@result"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.TestSuiteRunner)})},
-messageSends: []}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "resume",
-fn: function (){
-var self=this;
-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)})},
-messageSends: ["fork", "announce:", "result:", "new"]}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "run",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@result"])._total_(_st(self["@suite"])._size());
-self._resume();
-return self}, function($ctx1) {$ctx1.fill(self,"run",{},smalltalk.TestSuiteRunner)})},
-messageSends: ["total:", "size", "resume"]}),
-smalltalk.TestSuiteRunner);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "suite:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@suite"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"suite:",{aCollection:aCollection},smalltalk.TestSuiteRunner)})},
-messageSends: []}),
-smalltalk.TestSuiteRunner);
-
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "new",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._shouldNotImplement();
-return self}, function($ctx1) {$ctx1.fill(self,"new",{},smalltalk.TestSuiteRunner.klass)})},
-messageSends: ["shouldNotImplement"]}),
-smalltalk.TestSuiteRunner.klass);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "on:",
-fn: function (aCollection){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(smalltalk.TestSuiteRunner.klass.superclass.fn.prototype._new.apply(_st(self), []))._suite_(aCollection);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},smalltalk.TestSuiteRunner.klass)})},
-messageSends: ["suite:", "new"]}),
-smalltalk.TestSuiteRunner.klass);
-
-})(global_smalltalk,global_nil,global__st);

Some files were not shown because too many files changed in this diff