소스 검색

Merge branch 'master' into moka

Nicolas Petton 11 년 전
부모
커밋
aefc0e7dbf
100개의 변경된 파일9585개의 추가작업 그리고 60220개의 파일을 삭제
  1. 84 2
      CHANGELOG
  2. 10 14
      Gruntfile.js
  3. 11 2
      README.md
  4. 1 2
      bin/amber
  5. 1027 432
      bin/amber-cli.js
  6. 1 0
      bin/amber.bat
  7. 6 37
      bin/amberc
  8. 1 0
      bin/amberc.bat
  9. 121 198
      bin/amberc.js
  10. 27 0
      bin/release.sh
  11. 0 3
      bin/server
  12. 0 3
      bin/server.bat
  13. 17 0
      bin/setversion.sh
  14. 11 2
      bower.json
  15. 18 5
      cli/index.html
  16. 0 769
      cli/js/AmberCli.deploy.js
  17. 89 86
      cli/js/AmberCli.js
  18. 17 17
      cli/st/AmberCli.st
  19. 2 1
      css/helios.css
  20. 2 1
      css/helios.less
  21. 34 29
      grunt/tasks/grunt-amberc.js
  22. 1 1
      grunt/tasks/grunt-peg.js
  23. 11 15
      helios.html
  24. 21 10
      index.html
  25. 0 219
      js/Benchfib.deploy.js
  26. 92 41
      js/Benchfib.js
  27. 0 2829
      js/Canvas.deploy.js
  28. 140 44
      js/Canvas.js
  29. 0 1540
      js/Compiler-AST.deploy.js
  30. 378 133
      js/Compiler-AST.js
  31. 0 759
      js/Compiler-Core.deploy.js
  32. 61 62
      js/Compiler-Core.js
  33. 0 161
      js/Compiler-Exceptions.deploy.js
  34. 11 6
      js/Compiler-Exceptions.js
  35. 0 2781
      js/Compiler-IR.deploy.js
  36. 418 200
      js/Compiler-IR.js
  37. 0 1161
      js/Compiler-Inlining.deploy.js
  38. 471 223
      js/Compiler-Inlining.js
  39. 0 1533
      js/Compiler-Interpreter.deploy.js
  40. 652 140
      js/Compiler-Interpreter.js
  41. 0 1345
      js/Compiler-Semantic.deploy.js
  42. 323 165
      js/Compiler-Semantic.js
  43. 0 1259
      js/Compiler-Tests.deploy.js
  44. 267 523
      js/Compiler-Tests.js
  45. 0 86
      js/Examples.deploy.js
  46. 13 8
      js/Examples.js
  47. 0 406
      js/Helios-Announcements.deploy.js
  48. 47 3
      js/Helios-Announcements.js
  49. 0 2990
      js/Helios-Browser.deploy.js
  50. 258 176
      js/Helios-Browser.js
  51. 0 422
      js/Helios-Commands-Browser.deploy.js
  52. 21 9
      js/Helios-Commands-Browser.js
  53. 0 716
      js/Helios-Commands-Core.deploy.js
  54. 23 18
      js/Helios-Commands-Core.js
  55. 0 1345
      js/Helios-Commands-Tools.deploy.js
  56. 30 21
      js/Helios-Commands-Tools.js
  57. 0 4055
      js/Helios-Core.deploy.js
  58. 294 177
      js/Helios-Core.js
  59. 0 702
      js/Helios-Debugger.deploy.js
  60. 329 145
      js/Helios-Debugger.js
  61. 0 9
      js/Helios-Exceptions.deploy.js
  62. 3 2
      js/Helios-Exceptions.js
  63. 0 1062
      js/Helios-Inspector.deploy.js
  64. 68 50
      js/Helios-Inspector.js
  65. 0 1728
      js/Helios-KeyBindings.deploy.js
  66. 248 164
      js/Helios-KeyBindings.js
  67. 0 395
      js/Helios-Layout.deploy.js
  68. 134 30
      js/Helios-Layout.js
  69. 0 844
      js/Helios-References.deploy.js
  70. 99 71
      js/Helios-References.js
  71. 0 175
      js/Helios-Transcript.deploy.js
  72. 11 10
      js/Helios-Transcript.js
  73. 0 20
      js/Helios-Workspace-Tests.deploy.js
  74. 12 6
      js/Helios-Workspace-Tests.js
  75. 0 1579
      js/Helios-Workspace.deploy.js
  76. 458 154
      js/Helios-Workspace.js
  77. 0 5540
      js/IDE.deploy.js
  78. 344 191
      js/IDE.js
  79. 0 1450
      js/Importer-Exporter.deploy.js
  80. 579 192
      js/Importer-Exporter.js
  81. 0 557
      js/Kernel-Announcements.deploy.js
  82. 40 25
      js/Kernel-Announcements.js
  83. 0 1674
      js/Kernel-Classes.deploy.js
  84. 387 185
      js/Kernel-Classes.js
  85. 0 4348
      js/Kernel-Collections.deploy.js
  86. 235 153
      js/Kernel-Collections.js
  87. 0 455
      js/Kernel-Exceptions.deploy.js
  88. 32 23
      js/Kernel-Exceptions.js
  89. 0 1736
      js/Kernel-Infrastructure.deploy.js
  90. 350 157
      js/Kernel-Infrastructure.js
  91. 0 1365
      js/Kernel-Methods.deploy.js
  92. 172 82
      js/Kernel-Methods.js
  93. 0 2672
      js/Kernel-Objects.deploy.js
  94. 452 119
      js/Kernel-Objects.js
  95. 0 4132
      js/Kernel-Tests.deploy.js
  96. 489 181
      js/Kernel-Tests.js
  97. 0 154
      js/Kernel-Transcript.deploy.js
  98. 4 3
      js/Kernel-Transcript.js
  99. 0 431
      js/SUnit-Tests.deploy.js
  100. 128 64
      js/SUnit-Tests.js

+ 84 - 2
CHANGELOG

@@ -1,5 +1,87 @@
-13th March 2013 - Release 0.10
-==============================
+ 2013 - Release 0.12.0
+===============================
+
+Some numbers about this release:
+
+*  commits
+*  committers
+* increasing the number of core committers to 
+*  unit tests added to the kernel
+*  unit tests in total
+
+Commits
+https://github.com/amber-smalltalk/amber/compare/0.11.0...0.12.0
+Issues
+https://github.com/amber-smalltalk/amber/issues?direction=desc&milestone=8&page=1&sort=updated&state=closed
+
+* Helios IDE, release candidate
+* Use of require [1] to load amber packages in the browser
+* Restructuring of boot.js, use of the brickz[2] reconfigurable micro composition system
+* Enhanced REPL
+
+[1] http://requirejs.org/
+[2] https://github.com/amber-smalltalk/brikz
+
+For API related changes see the file API-CHANGES.txt.
+
+
+
+
+09th July 2013 - Release 0.11.0
+===============================
+
+Three months have passed and we are happy to announce the release
+of Amber 0.11.0!
+
+Some numbers about this release:
+
+* 494 commits
+* 13 committers
+* increasing the number of core committers to 25
+* 50 unit tests added to the kernel
+* 313 unit tests in total
+
+Since the last release 60 issues were closed, bringing us to 499
+issues closed.
+
+This release includes a lot of bug fixes, improvements to the
+CLI, as well as a preview of the next IDE, named Helios. Amber
+now also uses a CI server [1].
+
+To try the Helios, the new IDE, open the helios.html page, or
+evaluate in any other amber page `amber.loadHelios()`.
+
+The compiler also received some improvements, especially
+regarding message send optimisations and super sends.
+
+Here's the list of commits and closed issues: 
+https://github.com/amber-smalltalk/amber/compare/0.10.0...0.11.0
+https://github.com/amber-smalltalk/amber/issues?direction=desc&milestone=6&page=1&sort=updated&state=closed
+
+There is a lot more to come with Helios, a stepping debugger
+based on the AST is in progress and currently in the 'debugger'
+branch on GitHub.
+
+* Installing Amber from NPM
+
+To install amber from NPM, run
+    
+    npm install amber
+
+
+* Migration from Amber 0.10.0
+
+Amber compiled code should be compatible with Amber 0.10.0, but
+recompiling is needed in order to get contexts working:
+
+    Compiler new recompile: (Package named: 'MyPackage') classes.
+    (Package named: 'MyPackage') commit
+
+For API related changes see the file API-CHANGES.txt.
+
+
+13th March 2013 - Release 0.10.0
+================================
 
 Here's a summary of change since the 0.9.1 release:
 

+ 10 - 14
Gruntfile.js

@@ -33,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',
@@ -46,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',
@@ -103,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'
       }
     },
 

+ 11 - 2
README.md

@@ -35,10 +35,19 @@ If you already have Grunt.js v0.3.x installed locally run the following (otherwi
     npm uninstall grunt
 
 To install Grunt.js v0.4.x on the commandline execute the following commands:
-    
+
     npm install -g grunt-cli grunt-init
+
+Amber depends on some web libraries to work in browser, using bower to manage these dependencies.
+To install bower, run:
+
+    npm install -g bower
+
+To get all dependencies, run:
+
     cd ${Amber_DIR}
-    npm install
+    bower install   # dependencies for the web
+    npm install     # dependencies for the cli development
 
 And finally, compile Amber using the following command:
 

+ 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 $@

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1027 - 432
bin/amber-cli.js


+ 1 - 0
bin/amber.bat

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

+ 6 - 37
bin/amberc

@@ -17,10 +17,8 @@ if (1 > parameters.length) {
 // Get Amber root directory from the location of this script so that
 // we can find the st and js directories etc.
 var amber_dir = path.normalize(path.join(path.dirname(process.argv[1]), '..'));
-// Get default location of compiler.jar
-var closure_jar = path.resolve(path.join(process.env['HOME'], 'compiler.jar'));
 
-var compiler = new amberc.Compiler(amber_dir, closure_jar);
+var compiler = new amberc.Compiler(amber_dir);
 
 var configuration = handle_options(parameters, amber_dir);
 
@@ -44,30 +42,14 @@ 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 '-o':
-				defaults.closure = true;
-				defaults.closure_parts = true;
-				break;
-			case '-O':
-				defaults.closure = true;
-				defaults.closure_full = true;
-				break;
-			case '-A':
-				defaults.closure = true;
-				defaults.closure_options = defaults.closure_options + ' --compilation_level ADVANCED_OPTIMIZATIONS';
-				defaults.closure_full = true;
-				break;
-			case '-d':
-				defaults.deploy = true;
+			case '-n':
+				defaults.amd_namespace = optionsArray.shift();
 				break;
 			case '-D':
 				defaults.output_dir = optionsArray.shift();
@@ -146,28 +128,15 @@ 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('  -o');
-	console.log('     Optimize each .js file using the Google closure compiler.');
-	console.log('     Using Closure compiler found at ~/compiler.jar');
-	console.log('');
-	console.log('  -O');
-	console.log('     Optimize final <Program>.js using the Google closure compiler.');
-	console.log('     Using Closure compiler found at ~/compiler.jar');
-	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('  -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('  -D');
 	console.log('     Specifies the output directory for all generated .js files.');

+ 1 - 0
bin/amberc.bat

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

+ 121 - 198
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'),
@@ -80,14 +128,13 @@ var path = require('path'),
  * amber_dir: points to the location of an amber installation
  * closure_jar: location of compiler.jar (can be left undefined)
  */
-function AmberC(amber_dir, closure_jar) {
+function AmberC(amber_dir) {
 	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 +148,15 @@ var createDefaults = function(amber_dir, finished_callback){
 
 	return {
 		'load': [],
-		'init': path.join(amber_dir, 'support', 'init.js'),
 		'main': undefined,
 		'mainfile': undefined,
 		'stFiles': [],
 		'jsFiles': [],
 		'jsGlobals': [],
-		'closure': false,
-		'closure_parts': false,
-		'closure_full': false,
-		'closure_options': ' --language_in=ECMASCRIPT5 ',
+		'amd_namespace': 'amber_core',
 		'suffix': '',
 		'loadsuffix': '',
 		'suffix_used': '',
-		'deploy': false,
 		'libraries': [],
 		'compile': [],
 		'compiled': [],
@@ -138,8 +180,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;
@@ -150,10 +192,7 @@ AmberC.prototype.main = function(configuration, finished_callback) {
 	if (this.check_configuration_ok(configuration)) {
 		this.defaults = configuration;
 		this.defaults.smalltalk = {}; // the evaluated compiler will be stored in this variable (see create_compiler)
-		var self = this;
-		this.check_for_closure_compiler(function(){
-			self.collect_files(self.defaults.stFiles, self.defaults.jsFiles)
-		});
+		this.collect_files(this.defaults.stFiles, this.defaults.jsFiles)
 	}
 };
 
@@ -165,9 +204,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');
@@ -176,46 +212,6 @@ AmberC.prototype.check_configuration_ok = function(configuration) {
 };
 
 
-/**
- * Checks if the java executable exists and afterwards,
- * if compiler.jar exists at the path stored in this.closure_jar.
- * All closure related entries are set to false upon failure.
- *
- * callback gets called in any case.
- */
-AmberC.prototype.check_for_closure_compiler = function(callback) {
-	var defaults = this.defaults;
-	var self = this;
-	if (defaults.closure) {
-		exec('which java', function(error, stdout, stderr) {
-			// stdout contains path to java executable
-			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;
-			}
-			fs.exists(self.closure_jar, function(exists) {
-				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);
-				}
-				callback();
-				return;
-			});
-		});
-	} else {
-		callback();
-	}
-};
-
-
 /**
  * Check if the file given as parameter exists in the local directory or in $AMBER/js/.
  * '.js' is appended first.
@@ -224,8 +220,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 +328,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 +388,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 +396,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 +482,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();
 	});
@@ -517,19 +498,13 @@ AmberC.prototype.category_export = function() {
 
 /**
  * Verify if all .st files have been compiled.
- * Followed by compose_js_files() and optimize().
+ * Followed by compose_js_files().
  */
 AmberC.prototype.verify = function() {
 	console.log('Verifying if all .st files were compiled');
 	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) {
@@ -555,7 +530,6 @@ AmberC.prototype.compose_js_files = function() {
 	var self = this;
 	var programFile = defaults.program;
 	if (undefined === programFile) {
-		self.optimize();
 		return;
 	}
 	if (undefined !== defaults.output_dir) {
@@ -570,20 +544,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');
@@ -593,95 +558,53 @@ AmberC.prototype.compose_js_files = function() {
 	});
 
 	fileStream.on('close', function(){
-		self.optimize();
+		return;
 	});
 
+	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('global_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);
 	}
 
-	console.log('Done.');
-	fileStream.end();
-};
-
+	builder.finish(mainFunctionOrFile);
 
-/**
- * Optimize created JavaScript files with Google Closure compiler depending
- * on the flags: defaults.closure_parts, defaults.closure_full.
- */
-AmberC.prototype.optimize = function() {
-	var defaults = this.defaults;
-	var self = this;
-	var optimization_done = new Combo(function() {
-		console.log = console.ambercLog;
-		console.timeEnd('Compile Time');
-		if (undefined !== defaults.finished_callback) {
-			defaults.finished_callback();
-		}
+	console.log('Writing...');
+	builder.forEach(function (element) {
+		fileStream.write(element);
+		fileStream.write('\n');
 	});
-
-	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) {
-			programFile = path.join(defaults.output_dir, programFile);
-		}
-		console.log('Compiling ' + programFile + '.js file using Google closure compiler.');
-		self.closure_compile(programFile + '.js', programFile + '.min.js', optimization_done.add());
-	}
-
-	always_resolve(optimization_done.add());
+	console.log('Done.');
+	fileStream.end();
 };
 
 
-/**
- * Compile sourceFile into minifiedFile with Google Closure compiler.
- * callback gets executed once finished.
- */
-AmberC.prototype.closure_compile = function(sourceFile, minifiedFile, callback) {
-	// exec is asynchronous
-	var self = this;
-	exec(
-		'java -jar ' +
-		self.closure_jar + ' ' +
-		self.defaults.closure_options +
-		' --js '+ sourceFile +
-		' --js_output_file '+ minifiedFile,
-		function (error, stdout, stderr) {
-			if (error) {
-				console.log(stderr);
-			} else {
-				console.log(stdout);
-				console.log('Minified: '+ minifiedFile);
-			}
-			callback();
-		}
-	);
-};
-
 module.exports.Compiler = AmberC;
 module.exports.createDefaults = createDefaults;
 module.exports.Combo = Combo;

+ 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

+ 11 - 2
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "amber",
-  "version": "0.11.0",
+  "version": "0.12.0-pre",
   "main": "support/amber.js",
   "ignore": [
     "**/.*",
@@ -8,5 +8,14 @@
     "bower_components",
     "test",
     "tests"
-  ]
+  ],
+  "dependencies": {
+    "jquery": "~1.8.3",
+    "bootstrap": "http://getbootstrap.com/2.3.2/assets/bootstrap.zip",
+    "jquery-tabby": "git://github.com/alanhogan/Tabby",
+    "es5-shim": "~2.1.0",
+    "codemirror": "~3.13.0",
+    "showdown": "~0.3.1",
+    "require-css": "~0.0.8"
+  }
 }

+ 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> 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 769
cli/js/AmberCli.deploy.js


+ 89 - 86
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.";
 
@@ -14,21 +17,21 @@ var $1;
 switches=_st(_st(self._class())._methodsInProtocol_("commands"))._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 switches=_st(switches)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._match_("^[^:]*:$");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 switches=_st(switches)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(_st(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
 $1=switches;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches},smalltalk.AmberCli.klass)})},
 args: [],
 source: "commandLineSwitches\x0a\x09\x22Collect all methodnames from the 'commands' protocol of the class\x0a\x09 and select the ones with only one parameter.\x0a\x09 Then remove the ':' at the end of the name.\x0a\x09 Additionally all uppercase letters are made lowercase and preceded by a '-'.\x0a\x09 Example: fallbackPage: becomes --fallback-page.\x0a\x09 Return the Array containing the commandline switches.\x22\x0a\x09| switches |\x0a\x09switches := ((self class methodsInProtocol: 'commands') collect: [ :each | each selector]).\x0a\x09switches := switches select: [ :each | each match: '^[^:]*:$'].\x0a\x09switches :=switches collect: [ :each |\x0a\x09\x09(each allButLast replace: '([A-Z])' with: '-$1') asLowercase].\x0a\x09^switches",
-messageSends: ["collect:", "selector", "methodsInProtocol:", "class", "select:", "match:", "asLowercase", "replace:with:", "allButLast"],
+messageSends: ["collect:", "methodsInProtocol:", "class", "selector", "select:", "match:", "asLowercase", "replace:with:", "allButLast"],
 referencedClasses: []
 }),
 smalltalk.AmberCli.klass);
@@ -64,7 +67,7 @@ _st(console)._log_("Available Commands:");
 _st(self._commandLineSwitches())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(console)._log_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"help:",{args:args},smalltalk.AmberCli.klass)})},
 args: ["args"],
 source: "help: args\x0a\x09console log: 'Available Commands:'.\x0a\x09self commandLineSwitches do: [ :each | console log: each ]",
@@ -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,8 +103,8 @@ 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]",
-messageSends: ["asNumber", "second", "tokenize:", "version", "ifTrue:", "log:", ",", "<", "argv", "removeFrom:to:", "ifTrue:ifFalse:", "help:", "handleArguments:", "isEmpty"],
+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:", "isEmpty", "help:", "handleArguments:"],
 referencedClasses: []
 }),
 smalltalk.AmberCli.klass);
@@ -139,7 +142,7 @@ if(smalltalk.assert($1)){
 selector=_st(_st(aSwitch)._replace_with_("-[a-z]",(function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._second())._asUppercase();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}))).__comma(":");
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}))).__comma(":");
 selector;
 } else {
 selector="help:";
@@ -150,7 +153,7 @@ return $2;
 }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch,command:command,selector:selector},smalltalk.AmberCli.klass)})},
 args: ["aSwitch"],
 source: "selectorForCommandLineSwitch: aSwitch\x0a\x09\x22Add ':' at the end and replace all occurences of a lowercase letter preceded by a '-' with the Uppercase letter.\x0a\x09 Example: fallback-page becomes fallbackPage:.\x0a\x09 If no correct selector is found return 'help:'\x22\x0a\x09 | command selector |\x0a\x0a\x09 (self commandLineSwitches includes: aSwitch)\x0a\x09 ifTrue: [ selector := (aSwitch replace: '-[a-z]' with: [ :each | each second asUppercase ]), ':']\x0a\x09 ifFalse: [ selector := 'help:' ].\x0a\x09^selector",
-messageSends: ["ifTrue:ifFalse:", ",", "replace:with:", "asUppercase", "second", "includes:", "commandLineSwitches"],
+messageSends: ["ifTrue:ifFalse:", "includes:", "commandLineSwitches", ",", "replace:with:", "asUppercase", "second"],
 referencedClasses: []
 }),
 smalltalk.AmberCli.klass);
@@ -202,7 +205,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@basePath"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="./";
 } else {
 $1=$2;
@@ -255,7 +258,7 @@ _st(console)._warn_("Warning: project directory is missing a \x22js\x22 director
 return self}, function($ctx1) {$ctx1.fill(self,"checkDirectoryLayout",{},smalltalk.FileServer)})},
 args: [],
 source: "checkDirectoryLayout\x0a\x09(fs existsSync: self basePath, 'index.html') ifFalse: [\x0a\x09\x09console warn: 'Warning: project directory does not contain index.html'].\x0a\x09(fs existsSync: self basePath, 'st') ifFalse: [\x0a\x09\x09console warn: 'Warning: project directory is missing an \x22st\x22 directory'].\x0a\x09(fs existsSync: self basePath, 'js') ifFalse: [\x0a\x09\x09console warn: 'Warning: project directory is missing a \x22js\x22 directory'].",
-messageSends: ["ifFalse:", "warn:", "existsSync:", ",", "basePath"],
+messageSends: ["ifFalse:", "existsSync:", ",", "basePath", "warn:"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -313,7 +316,7 @@ return self._respondFileNamed_to_(filename,aResponse);
 } else {
 return self._respondNotFoundTo_(aResponse);
 };
-}, function($ctx2) {$ctx2.fillBlock({aBoolean:aBoolean},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({aBoolean:aBoolean},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"handleGETRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,uri:uri,filename:filename},smalltalk.FileServer)})},
 args: ["aRequest", "aResponse"],
 source: "handleGETRequest: aRequest respondTo: aResponse\x0a\x09| uri filename |\x0a\x09uri := (url parse: aRequest url) pathname.\x0a\x09filename := path join: self basePath with: uri.\x0a\x09fs exists: filename do: [:aBoolean |\x0a\x09\x09aBoolean\x0a\x09\x09\x09ifFalse: [self respondNotFoundTo: aResponse]\x0a\x09\x09\x09ifTrue: [self respondFileNamed: filename to: aResponse]]",
@@ -361,27 +364,27 @@ _st(console)._warn_("Error creating WriteStream for file ".__comma(file));
 _st(console)._warn_("    Did you forget to create the necessary js/ or st/ directory in your project?");
 _st(console)._warn_("    The exact error is: ".__comma(error));
 return self._respondNotCreatedTo_(aResponse);
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
 _st(stream)._on_do_("close",(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._respondCreatedTo_(aResponse);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
 _st(aRequest)._setEncoding_("utf8");
 _st(aRequest)._on_do_("data",(function(data){
 return smalltalk.withContext(function($ctx2) {
 return _st(stream)._write_(data);
-}, function($ctx2) {$ctx2.fillBlock({data:data},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({data:data},$ctx1,4)})}));
 _st(aRequest)._on_do_("end",(function(){
 return smalltalk.withContext(function($ctx2) {
 $2=_st(stream)._writable();
 if(smalltalk.assert($2)){
 return _st(stream)._end();
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"handlePUTRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,file:file,stream:stream},smalltalk.FileServer)})},
 args: ["aRequest", "aResponse"],
 source: "handlePUTRequest: aRequest respondTo: aResponse\x0a\x09| file stream |\x0a\x09(self isAuthenticated: aRequest)\x0a\x09\x09ifFalse: [self respondAuthenticationRequiredTo: aResponse. ^nil].\x0a\x0a\x09file := '.', aRequest url.\x0a\x09stream := fs createWriteStream: file.\x0a\x0a\x09stream on: 'error' do: [:error |\x0a\x09\x09console warn: 'Error creating WriteStream for file ', file.\x0a\x09\x09console warn: '    Did you forget to create the necessary js/ or st/ directory in your project?'.\x0a\x09\x09console warn: '    The exact error is: ', error.\x0a\x09\x09self respondNotCreatedTo: aResponse].\x0a\x0a\x09stream on: 'close' do: [\x0a\x09\x09self respondCreatedTo: aResponse].\x0a\x0a\x09aRequest setEncoding: 'utf8'.\x0a\x09aRequest on: 'data' do: [:data |\x0a\x09\x09stream write: data].\x0a\x0a\x09aRequest on: 'end' do: [\x0a\x09\x09stream writable ifTrue: [stream end]]",
-messageSends: ["ifFalse:", "respondAuthenticationRequiredTo:", "isAuthenticated:", ",", "url", "createWriteStream:", "on:do:", "warn:", "respondNotCreatedTo:", "respondCreatedTo:", "setEncoding:", "write:", "ifTrue:", "end", "writable"],
+messageSends: ["ifFalse:", "isAuthenticated:", "respondAuthenticationRequiredTo:", ",", "url", "createWriteStream:", "on:do:", "warn:", "respondNotCreatedTo:", "respondCreatedTo:", "setEncoding:", "write:", "ifTrue:", "writable", "end"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -409,7 +412,7 @@ self._handleOPTIONSRequest_respondTo_(aRequest,aResponse);
 return self}, function($ctx1) {$ctx1.fill(self,"handleRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse},smalltalk.FileServer)})},
 args: ["aRequest", "aResponse"],
 source: "handleRequest: aRequest respondTo: aResponse\x0a\x09aRequest method = 'PUT'\x0a\x09\x09ifTrue: [self handlePUTRequest: aRequest respondTo: aResponse].\x0a\x09aRequest method = 'GET'\x0a\x09\x09ifTrue:[self handleGETRequest: aRequest respondTo: aResponse].\x0a\x09aRequest method = 'OPTIONS'\x0a\x09\x09ifTrue:[self handleOPTIONSRequest: aRequest respondTo: aResponse]",
-messageSends: ["ifTrue:", "handlePUTRequest:respondTo:", "=", "method", "handleGETRequest:respondTo:", "handleOPTIONSRequest:respondTo:"],
+messageSends: ["ifTrue:", "=", "method", "handlePUTRequest:respondTo:", "handleGETRequest:respondTo:", "handleOPTIONSRequest:respondTo:"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -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");
@@ -486,12 +489,12 @@ var $1,$2,$3,$4,$5;
 $1=_st(_st(self["@username"])._isNil())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@password"])._isNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 if(smalltalk.assert($1)){
 return true;
 };
 $2=_st(_st(aRequest)._headers())._at_("authorization");
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 header="";
 } else {
 header=$2;
@@ -501,7 +504,7 @@ if(smalltalk.assert($3)){
 return false;
 } else {
 $4=_st(header)._tokenize_(" ");
-if(($receiver = $4) == nil || $receiver == undefined){
+if(($receiver = $4) == nil || $receiver == null){
 token="";
 } else {
 token=$4;
@@ -514,7 +517,7 @@ parts;
 $5=_st(_st(self["@username"]).__eq(_st(parts)._at_((1))))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@password"]).__eq(_st(parts)._at_((2)));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)})}));
 if(smalltalk.assert($5)){
 return true;
 } else {
@@ -524,7 +527,7 @@ return false;
 return self}, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts},smalltalk.FileServer)})},
 args: ["aRequest"],
 source: "isAuthenticated: aRequest\x0a\x09\x22Basic HTTP Auth: http://stackoverflow.com/a/5957629/293175\x0a\x09 and https://gist.github.com/1686663\x22\x0a\x09| header token auth parts|\x0a\x0a\x09(username isNil and: [password isNil]) ifTrue: [^true].\x0a\x0a\x09\x22get authentication header\x22\x0a\x09header := (aRequest headers at: 'authorization') ifNil:[''].\x0a\x09(header isEmpty)\x0a\x09ifTrue: [^false]\x0a\x09ifFalse: [\x0a\x09\x09\x22get authentication token\x22\x0a\x09\x09token := (header tokenize: ' ') ifNil:[''].\x0a\x09\x09\x22convert back from base64\x22\x0a\x09\x09auth := self base64Decode: (token at: 2).\x0a\x09\x09\x22split token at colon\x22\x0a\x09\x09parts := auth tokenize: ':'.\x0a\x0a\x09\x09((username = (parts at: 1)) and: [password = (parts at: 2)])\x0a\x09\x09\x09ifTrue: [^true]\x0a\x09\x09\x09ifFalse: [^false]\x0a\x09].",
-messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifTrue:ifFalse:", "tokenize:", "base64Decode:", "=", "isEmpty"],
+messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifTrue:ifFalse:", "isEmpty", "tokenize:", "base64Decode:", "="],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -671,11 +674,11 @@ _st($4)._write_encoding_(file,"binary");
 $5=_st($4)._end();
 return $5;
 };
-}, function($ctx2) {$ctx2.fillBlock({ex:ex,file:file},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({ex:ex,file:file},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"respondFileNamed:to:",{aFilename:aFilename,aResponse:aResponse,type:type,filename:filename},smalltalk.FileServer)})},
 args: ["aFilename", "aResponse"],
 source: "respondFileNamed: aFilename to: aResponse\x0a\x09| type filename |\x0a\x0a\x09filename := aFilename.\x0a\x09(fs statSync: aFilename) isDirectory ifTrue: [\x0a\x09\x09filename := filename, 'index.html'].\x0a\x0a\x09fs readFile: filename do: [:ex :file |\x0a\x09\x09ex notNil \x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09console log: filename, ' does not exist'.\x0a\x09\x09\x09\x09self respondInternalErrorTo: aResponse]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09type := self class mimeTypeFor: filename.\x0a\x09\x09\x09\x09type = 'application/javascript'\x0a\x09\x09\x09\x09\x09ifTrue: [ type:=type,';charset=utf-8' ].\x0a\x09\x09\x09\x09aResponse \x0a\x09\x09\x09\x09\x09writeHead: 200 options:  #{'Content-Type' -> type};\x0a\x09\x09\x09\x09\x09write: file encoding: 'binary';\x0a\x09\x09\x09\x09\x09end]]",
-messageSends: ["ifTrue:", ",", "isDirectory", "statSync:", "readFile:do:", "ifTrue:ifFalse:", "log:", "respondInternalErrorTo:", "mimeTypeFor:", "class", "=", "writeHead:options:", "->", "write:encoding:", "end", "notNil"],
+messageSends: ["ifTrue:", "isDirectory", "statSync:", ",", "readFile:do:", "ifTrue:ifFalse:", "notNil", "log:", "respondInternalErrorTo:", "mimeTypeFor:", "class", "=", "writeHead:options:", "->", "write:encoding:", "end"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -740,7 +743,7 @@ $4=_st($3)._end();
 return self}, function($ctx1) {$ctx1.fill(self,"respondNotFoundTo:",{aResponse:aResponse},smalltalk.FileServer)})},
 args: ["aResponse"],
 source: "respondNotFoundTo: aResponse\x0a\x09self fallbackPage isNil ifFalse: [^self respondFileNamed: self fallbackPage to: aResponse].\x0a\x09aResponse \x0a\x09\x09writeHead: 404 options: #{'Content-Type' -> 'text/plain'};\x0a\x09\x09write: '404 Not found';\x0a\x09\x09end",
-messageSends: ["ifFalse:", "respondFileNamed:to:", "fallbackPage", "isNil", "writeHead:options:", "->", "write:", "end"],
+messageSends: ["ifFalse:", "isNil", "fallbackPage", "respondFileNamed:to:", "writeHead:options:", "->", "write:", "end"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -776,20 +779,20 @@ self._checkDirectoryLayout();
 $1=_st(self["@http"])._createServer_((function(request,response){
 return smalltalk.withContext(function($ctx2) {
 return self._handleRequest_respondTo_(request,response);
-}, function($ctx2) {$ctx2.fillBlock({request:request,response:response},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({request:request,response:response},$ctx1,1)})}));
 _st($1)._on_do_("error",(function(error){
 return smalltalk.withContext(function($ctx2) {
 return _st(console)._log_("Error starting server: ".__comma(error));
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
 _st($1)._on_do_("listening",(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(console)._log_(_st(_st("Starting file server on http://".__comma(self._host())).__comma(":")).__comma(_st(self._port())._asString()));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
 $2=_st($1)._listen_host_(self._port(),self._host());
 return self}, function($ctx1) {$ctx1.fill(self,"start",{},smalltalk.FileServer)})},
 args: [],
 source: "start\x0a\x09\x22Checks if required directory layout is present (issue warning if not).\x0a\x09 Afterwards start the server.\x22\x0a\x09self checkDirectoryLayout.\x0a\x09(http createServer: [:request :response |\x0a\x09      self handleRequest: request respondTo: response])\x0a\x09      on: 'error' do: [:error | console log: 'Error starting server: ', error];\x0a\x09      on: 'listening' do: [console log: 'Starting file server on http://', self host, ':', self port asString];\x0a\x09      listen: self port host: self host.",
-messageSends: ["checkDirectoryLayout", "on:do:", "log:", ",", "createServer:", "handleRequest:respondTo:", "asString", "port", "host", "listen:host:"],
+messageSends: ["checkDirectoryLayout", "on:do:", "createServer:", "handleRequest:respondTo:", "log:", ",", "host", "asString", "port", "listen:host:"],
 referencedClasses: []
 }),
 smalltalk.FileServer);
@@ -857,21 +860,21 @@ var $1;
 switches=_st(self._methodsInProtocol_("accessing"))._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._selector();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 switches=_st(switches)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._match_("^[^:]*:$");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 switches=_st(switches)._collect_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(_st(_st(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase())._replace_with_("^([a-z])","--$1");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
 $1=switches;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches},smalltalk.FileServer.klass)})},
 args: [],
 source: "commandLineSwitches\x0a\x09\x22Collect all methodnames from the 'accessing' protocol\x0a\x09 and select the ones with only one parameter.\x0a\x09 Then remove the ':' at the end of the name\x0a\x09 and add a '--' at the beginning.\x0a\x09 Additionally all uppercase letters are made lowercase and preceded by a '-'.\x0a\x09 Example: fallbackPage: becomes --fallback-page.\x0a\x09 Return the Array containing the commandline switches.\x22\x0a\x09| switches |\x0a\x09switches := ((self methodsInProtocol: 'accessing') collect: [ :each | each selector]).\x0a\x09switches := switches select: [ :each | each match: '^[^:]*:$'].\x0a\x09switches :=switches collect: [ :each |\x0a\x09\x09(each allButLast replace: '([A-Z])' with: '-$1') asLowercase replace: '^([a-z])' with: '--$1' ].\x0a\x09^switches",
-messageSends: ["collect:", "selector", "methodsInProtocol:", "select:", "match:", "replace:with:", "asLowercase", "allButLast"],
+messageSends: ["collect:", "methodsInProtocol:", "selector", "select:", "match:", "replace:with:", "asLowercase", "allButLast"],
 referencedClasses: []
 }),
 smalltalk.FileServer.klass);
@@ -894,7 +897,7 @@ _st(options)._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
 $1=server;
 throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 $2=_st(_st(options)._size())._even();
 if(! smalltalk.assert($2)){
 _st(console)._log_("Using default parameters.");
@@ -909,11 +912,11 @@ front=_st(args)._first();
 front;
 _st(args)._remove_(front);
 return front;
-}, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1)})});
+}, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1,3)})});
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(options)._notEmpty();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
 optionName=_st(popFront)._value_(options);
 optionName;
@@ -928,7 +931,7 @@ return _st(server)._perform_withArguments_(optionName,_st($Array())._with_(optio
 _st(console)._log_(_st(optionName).__comma(" is not a valid commandline option"));
 return _st(console)._log_("Use any of the following ones: ".__comma(switches));
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
 $5=server;
 return $5;
 }
@@ -936,7 +939,7 @@ catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"createServerWithArguments:",{options:options,server:server,popFront:popFront,front:front,optionName:optionName,optionValue:optionValue,switches:switches},smalltalk.FileServer.klass)})},
 args: ["options"],
 source: "createServerWithArguments: options\x0a\x09\x22If options are empty return a default FileServer instance.\x0a\x09 If options are given loop through them and set the passed in values\x0a\x09 on the FileServer instance.\x0a\x09 \x0a\x09 Commanline options map directly to methods in the 'accessing' protocol\x0a\x09 taking one parameter.\x0a\x09 Adding a method to this protocol makes it directly settable through\x0a\x09 command line options.\x0a\x09 \x22\x0a\x09| server popFront front optionName optionValue switches |\x0a\x0a\x09switches := self commandLineSwitches.\x0a\x0a\x09server := self new.\x0a\x0a\x09options ifEmpty: [^server].\x0a\x0a\x09(options size even) ifFalse: [\x0a\x09\x09console log: 'Using default parameters.'.\x0a\x09\x09console log: 'Wrong commandline options or not enough arguments for: ' , options.\x0a\x09\x09console log: 'Use any of the following ones: ', switches.\x0a\x09\x09^server].\x0a\x0a\x09popFront := [:args |\x0a\x09\x09front := args first.\x0a\x09\x09args remove: front.\x0a\x09\x09front].\x0a\x0a\x09[options notEmpty] whileTrue: [\x0a\x09\x09optionName  := popFront value: options.\x0a\x09\x09optionValue := popFront value: options.\x0a\x0a\x09\x09(switches includes: optionName) ifTrue: [\x0a\x09\x09\x09optionName := self selectorForCommandLineSwitch: optionName.\x0a\x09\x09\x09server perform: optionName withArguments: (Array with: optionValue)]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09console log: optionName, ' is not a valid commandline option'.\x0a\x09\x09\x09\x09console log: 'Use any of the following ones: ', switches ]].\x0a\x09^server.",
-messageSends: ["commandLineSwitches", "new", "ifEmpty:", "ifFalse:", "log:", ",", "even", "size", "first", "remove:", "whileTrue:", "value:", "ifTrue:ifFalse:", "selectorForCommandLineSwitch:", "perform:withArguments:", "with:", "includes:", "notEmpty"],
+messageSends: ["commandLineSwitches", "new", "ifEmpty:", "ifFalse:", "even", "size", "log:", ",", "first", "remove:", "whileTrue:", "notEmpty", "value:", "ifTrue:ifFalse:", "includes:", "selectorForCommandLineSwitch:", "perform:withArguments:", "with:"],
 referencedClasses: ["Array"]
 }),
 smalltalk.FileServer.klass);
@@ -1011,19 +1014,19 @@ $1=_st(each).__eq("--help");
 if(smalltalk.assert($1)){
 return _st($FileServer())._printHelp();
 };
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 fileServer=_st($FileServer())._createServerWithArguments_(args);
 fileServer;
 $2=_st(fileServer)._start();
 throw $early=[$2];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
 return self}
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"main",{fileServer:fileServer,args:args},smalltalk.FileServer.klass)})},
 args: [],
 source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09 Creates and starts a FileServer instance.\x22\x0a\x09| fileServer args |\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\x0a\x09args detect: [ :each |\x0a\x09\x09(each = '--help') ifTrue: [FileServer printHelp]]\x0a\x09ifNone: [\x0a\x09\x09fileServer := FileServer createServerWithArguments: args.\x0a\x09\x09^fileServer start]",
-messageSends: ["argv", "removeFrom:to:", "detect:ifNone:", "ifTrue:", "printHelp", "=", "createServerWithArguments:", "start"],
+messageSends: ["argv", "removeFrom:to:", "detect:ifNone:", "ifTrue:", "=", "printHelp", "createServerWithArguments:", "start"],
 referencedClasses: ["FileServer"]
 }),
 smalltalk.FileServer.klass);
@@ -1039,12 +1042,12 @@ var $1;
 $1=_st(self._mimeTypes())._at_ifAbsent_(_st(aString)._replace_with_(".*[\x5c.]",""),(function(){
 return smalltalk.withContext(function($ctx2) {
 return "text/plain";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"mimeTypeFor:",{aString:aString},smalltalk.FileServer.klass)})},
 args: ["aString"],
 source: "mimeTypeFor: aString\x0a\x09^self mimeTypes at: (aString replace: '.*[\x5c.]' with: '') ifAbsent: ['text/plain']",
-messageSends: ["at:ifAbsent:", "replace:with:", "mimeTypes"],
+messageSends: ["at:ifAbsent:", "mimeTypes", "replace:with:"],
 referencedClasses: []
 }),
 smalltalk.FileServer.klass);
@@ -1058,7 +1061,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@mimeTypes"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@mimeTypes"]=self._defaultMimeTypes();
 $1=self["@mimeTypes"];
 } else {
@@ -1085,11 +1088,11 @@ _st(console)._log_("--help");
 _st(self._commandLineSwitches())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(console)._log_(_st(each).__comma(" <parameter>"));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"printHelp",{},smalltalk.FileServer.klass)})},
 args: [],
 source: "printHelp\x0a\x09console log: 'Available commandline options are:'.\x0a\x09console log: '--help'.\x0a\x09self commandLineSwitches do: [ :each |\x0a\x09\x09console log: each, ' <parameter>']",
-messageSends: ["log:", "do:", ",", "commandLineSwitches"],
+messageSends: ["log:", "do:", "commandLineSwitches", ","],
 referencedClasses: []
 }),
 smalltalk.FileServer.klass);
@@ -1105,7 +1108,7 @@ var $1;
 $1=_st(_st(_st(aSwitch)._replace_with_("^--",""))._replace_with_("-[a-z]",(function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(each)._second())._asUppercase();
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}))).__comma(":");
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}))).__comma(":");
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch},smalltalk.FileServer.klass)})},
 args: ["aSwitch"],
@@ -1153,7 +1156,7 @@ $1=self._parseAssignment_do_(buffer,(function(name,expr){
 var varName,value;
 return smalltalk.withContext(function($ctx2) {
 $2=name;
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 varName=self._nextResultName();
 } else {
 varName=$2;
@@ -1164,7 +1167,7 @@ self["@session"];
 $3=self;
 $5=_st(varName).__comma(" := ");
 $7=expr;
-if(($receiver = $7) == nil || $receiver == undefined){
+if(($receiver = $7) == nil || $receiver == null){
 $6=buffer;
 } else {
 $6=$7;
@@ -1173,7 +1176,7 @@ $4=_st($5).__comma($6);
 value=_st($3)._eval_on_($4,self["@session"]);
 value;
 return _st(aBlock)._value_value_(varName,value);
-}, function($ctx2) {$ctx2.fillBlock({name:name,expr:expr,varName:varName,value:value},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({name:name,expr:expr,varName:varName,value:value},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"assignNewVariable:do:",{buffer:buffer,aBlock:aBlock},smalltalk.Repl)})},
 args: ["buffer", "aBlock"],
@@ -1250,11 +1253,11 @@ self["@interface"]=_st(self["@readline"])._createInterface_stdout_(_st(process).
 _st(self["@interface"])._on_do_("line",(function(buffer){
 return smalltalk.withContext(function($ctx2) {
 return self._processLine_(buffer);
-}, function($ctx2) {$ctx2.fillBlock({buffer:buffer},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({buffer:buffer},$ctx1,1)})}));
 _st(self["@interface"])._on_do_("close",(function(){
 return smalltalk.withContext(function($ctx2) {
 return self._close();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 $1=self;
 _st($1)._printWelcome();
 _st($1)._setupHotkeys();
@@ -1324,7 +1327,7 @@ self._try_catch_((function(){
 return smalltalk.withContext(function($ctx2) {
 result=_st(_st($Compiler())._new())._evaluateExpression_on_(buffer,anObject);
 return result;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(e){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),(function(e){
 return smalltalk.withContext(function($ctx2) {
 $2=_st(e)._isSmalltalkError();
 if(smalltalk.assert($2)){
@@ -1332,14 +1335,14 @@ return _st(_st($ErrorHandler())._new())._handleError_(e);
 } else {
 return _st(_st(process)._stdout())._write_(_st(e)._jsStack());
 };
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,3)})}));
 };
 $3=result;
 return $3;
 }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result},smalltalk.Repl)})},
 args: ["buffer", "anObject"],
 source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer isEmpty ifFalse: [\x0a\x09\x09self try: [\x0a\x09\x09\x09result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09catch: [:e |\x0a\x09\x09\x09e isSmalltalkError\x0a\x09\x09\x09    ifTrue: [ErrorHandler new handleError: e]\x0a\x09\x09\x09    ifFalse: [process stdout write: e jsStack]]].\x0a\x09^ result",
-messageSends: ["ifFalse:", "try:catch:", "evaluateExpression:on:", "new", "ifTrue:ifFalse:", "handleError:", "write:", "jsStack", "stdout", "isSmalltalkError", "isEmpty"],
+messageSends: ["ifFalse:", "isEmpty", "try:catch:", "evaluateExpression:on:", "new", "ifTrue:ifFalse:", "isSmalltalkError", "handleError:", "write:", "stdout", "jsStack"],
 referencedClasses: ["Compiler", "ErrorHandler"]
 }),
 smalltalk.Repl);
@@ -1361,14 +1364,14 @@ if(smalltalk.assert($1)){
 _st(cmd)._value();
 throw $early=[true];
 };
-}, function($ctx2) {$ctx2.fillBlock({names:names,cmd:cmd},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({names:names,cmd:cmd},$ctx1,1)})}));
 return false;
 }
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"executeCommand:",{aString:aString},smalltalk.Repl)})},
 args: ["aString"],
 source: "executeCommand: aString\x0a\x09\x22Tries to process the given string as a command. Returns true if it was a command, false if not.\x22\x0a\x09self commands keysAndValuesDo: [:names :cmd |\x0a\x09\x09(names includes: aString) ifTrue: [\x0a\x09\x09\x09cmd value.\x0a\x09\x09\x09^ true]].\x0a\x09^ false",
-messageSends: ["keysAndValuesDo:", "ifTrue:", "value", "includes:", "commands"],
+messageSends: ["keysAndValuesDo:", "commands", "ifTrue:", "includes:", "value"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -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");
@@ -1403,7 +1406,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=_st(aClass)._superclass();
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st(aClass)._instanceVariableNames();
 } else {
 $1=_st(_st(aClass)._instanceVariableNames())._copyWithAll_(self._instanceVariableNamesFor_(_st(aClass)._superclass()));
@@ -1412,7 +1415,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aClass:aClass},smalltalk.Repl)})},
 args: ["aClass"],
 source: "instanceVariableNamesFor: aClass\x0a\x09\x22Yields all instance variable names for the given class, including inherited ones.\x22\x0a\x09^ aClass superclass\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09aClass instanceVariableNames copyWithAll: (self instanceVariableNamesFor: aClass superclass)]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09aClass instanceVariableNames]",
-messageSends: ["ifNotNil:ifNil:", "copyWithAll:", "instanceVariableNamesFor:", "superclass", "instanceVariableNames"],
+messageSends: ["ifNotNil:ifNil:", "superclass", "copyWithAll:", "instanceVariableNames", "instanceVariableNamesFor:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1462,7 +1465,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=self["@resultCount"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 self["@resultCount"]=(1);
 } else {
 self["@resultCount"]=_st(self["@resultCount"]).__plus((1));
@@ -1488,14 +1491,14 @@ var $1;
 $1=_st(_st(key)._ctrl())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(key)._name()).__eq("l");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 if(smalltalk.assert($1)){
 self._clearScreen();
 };
 return self}, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{key:key},smalltalk.Repl)})},
 args: ["key"],
 source: "onKeyPress: key\x0a\x09(key ctrl and: [key name = 'l'])\x0a\x09\x09ifTrue: [self clearScreen]",
-messageSends: ["ifTrue:", "clearScreen", "and:", "=", "name", "ctrl"],
+messageSends: ["ifTrue:", "and:", "ctrl", "=", "name", "clearScreen"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1512,11 +1515,11 @@ var $2,$1;
 assignment=_st(_st(aString)._tokenize_(":="))._collect_((function(s){
 return smalltalk.withContext(function($ctx2) {
 return _st(s)._trimBoth();
-}, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,1)})}));
 $2=_st(_st(_st(assignment)._size()).__eq((2)))._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._isIdentifier_(_st(assignment)._first());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 if(smalltalk.assert($2)){
 $1=_st(aBlock)._value_value_(_st(assignment)._first(),_st(assignment)._last());
 } else {
@@ -1526,7 +1529,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"parseAssignment:do:",{aString:aString,aBlock:aBlock,assignment:assignment},smalltalk.Repl)})},
 args: ["aString", "aBlock"],
 source: "parseAssignment: aString do: aBlock\x0a\x09\x22Assigns a new variable if the given string is an assignment expression. Calls the given block with name and value.\x0a\x09 If the string is not one no variable will be assigned and the block will be called with nil for both arguments.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [aBlock value: assignment first value: assignment last]\x0a\x09\x09ifFalse: [aBlock value: nil value: nil]",
-messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "value:value:", "first", "last", "and:", "isIdentifier:", "=", "size"],
+messageSends: ["collect:", "tokenize:", "trimBoth", "ifTrue:ifFalse:", "and:", "=", "size", "isIdentifier:", "first", "value:value:", "last"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1547,7 +1550,7 @@ _st(self["@interface"])._prompt();
 return self}, function($ctx1) {$ctx1.fill(self,"presentResultNamed:withValue:",{varName:varName,value:value},smalltalk.Repl)})},
 args: ["varName", "value"],
 source: "presentResultNamed: varName withValue: value\x0a\x09Transcript show: varName, ': ', value class name, ' = ', value asString; cr.\x0a\x09interface prompt",
-messageSends: ["show:", ",", "asString", "name", "class", "cr", "prompt"],
+messageSends: ["show:", ",", "name", "class", "asString", "cr", "prompt"],
 referencedClasses: ["Transcript"]
 }),
 smalltalk.Repl);
@@ -1558,8 +1561,8 @@ selector: "printWelcome",
 category: 'private',
 fn: function (){
 var self=this;
-function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 _st($Transcript())._show_(_st(_st(_st("Welcome to Amber version ".__comma(_st(_st($Smalltalk())._current())._version())).__comma(" (NodeJS ")).__comma(_st(_st(process)._versions())._node())).__comma(")."));
@@ -1569,8 +1572,8 @@ $2=_st($1)._cr();
 return self}, function($ctx1) {$ctx1.fill(self,"printWelcome",{},smalltalk.Repl)})},
 args: [],
 source: "printWelcome\x0a\x09Transcript show: 'Welcome to Amber version ', Smalltalk current version, ' (NodeJS ', process versions node, ').'.\x0a\x09Transcript show: 'Type :q to exit.'; cr.",
-messageSends: ["show:", ",", "node", "versions", "version", "current", "cr"],
-referencedClasses: ["Smalltalk", "Transcript"]
+messageSends: ["show:", ",", "version", "current", "node", "versions", "cr"],
+referencedClasses: ["Transcript", "Smalltalk"]
 }),
 smalltalk.Repl);
 
@@ -1586,7 +1589,7 @@ var $1,$2;
 show=(function(varName,value){
 return smalltalk.withContext(function($ctx2) {
 return self._presentResultNamed_withValue_(varName,value);
-}, function($ctx2) {$ctx2.fillBlock({varName:varName,value:value},$ctx1)})});
+}, function($ctx2) {$ctx2.fillBlock({varName:varName,value:value},$ctx1,1)})});
 $1=self._executeCommand_(buffer);
 if(! smalltalk.assert($1)){
 $2=self._isVariableDefined_(buffer);
@@ -1599,7 +1602,7 @@ self._assignNewVariable_do_(buffer,show);
 return self}, function($ctx1) {$ctx1.fill(self,"processLine:",{buffer:buffer,show:show},smalltalk.Repl)})},
 args: ["buffer"],
 source: "processLine: buffer\x0a\x09\x22Processes lines entered through the readline interface.\x22\x0a\x09| show |\x0a\x09show := [:varName :value | self presentResultNamed: varName withValue: value].\x0a\x09(self executeCommand: buffer) ifFalse: [\x0a\x09\x09(self isVariableDefined: buffer)\x0a\x09\x09\x09ifTrue: [show value: buffer value: (session perform: buffer)]\x0a\x09\x09\x09ifFalse: [self assignNewVariable: buffer do: show]]",
-messageSends: ["presentResultNamed:withValue:", "ifFalse:", "ifTrue:ifFalse:", "value:value:", "perform:", "assignNewVariable:do:", "isVariableDefined:", "executeCommand:"],
+messageSends: ["presentResultNamed:withValue:", "ifFalse:", "executeCommand:", "ifTrue:ifFalse:", "isVariableDefined:", "value:value:", "perform:", "assignNewVariable:do:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1630,11 +1633,11 @@ return smalltalk.withContext(function($ctx1) {
 _st(self._instanceVariableNamesFor_(_st(oldObject)._class()))._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(newObject)._perform_withArguments_(_st(each).__comma(":"),[_st(oldObject)._perform_(each)]);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"setPreviousVariablesFor:from:",{newObject:newObject,oldObject:oldObject},smalltalk.Repl)})},
 args: ["newObject", "oldObject"],
 source: "setPreviousVariablesFor: newObject from: oldObject\x0a\x09(self instanceVariableNamesFor: oldObject class) do: [:each |\x0a\x09\x09newObject perform: each, ':' withArguments: {oldObject perform: each}].",
-messageSends: ["do:", "perform:withArguments:", ",", "perform:", "instanceVariableNamesFor:", "class"],
+messageSends: ["do:", "instanceVariableNamesFor:", "class", "perform:withArguments:", ",", "perform:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1666,10 +1669,10 @@ return smalltalk.withContext(function($ctx1) {
 self["@commands"]=_st($Dictionary())._from_([_st([":q"]).__minus_gt((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(process)._exit();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),_st([""]).__minus_gt((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})),_st([""]).__minus_gt((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@interface"])._prompt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))]);
 return self}, function($ctx1) {$ctx1.fill(self,"setupCommands",{},smalltalk.Repl)})},
 args: [],
 source: "setupCommands\x0a\x09commands := Dictionary from: {\x0a\x09\x09{':q'} -> [process exit].\x0a\x09\x09{''} -> [interface prompt]}",
@@ -1689,16 +1692,16 @@ var $1;
 _st(_st(process)._stdin())._on_do_("keypress",(function(s,key){
 return smalltalk.withContext(function($ctx2) {
 $1=key;
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 return $1;
 } else {
 return self._onKeyPress_(key);
 };
-}, function($ctx2) {$ctx2.fillBlock({s:s,key:key},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({s:s,key:key},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"setupHotkeys",{},smalltalk.Repl)})},
 args: [],
 source: "setupHotkeys\x0a\x09process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].",
-messageSends: ["on:do:", "ifNotNil:", "onKeyPress:", "stdin"],
+messageSends: ["on:do:", "stdin", "ifNotNil:", "onKeyPress:"],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -1717,7 +1720,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"subclass:withVariable:",{aClass:aClass,varName:varName},smalltalk.Repl)})},
 args: ["aClass", "varName"],
 source: "subclass: aClass withVariable: varName\x0a\x09\x22Create subclass with new variable.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: (self subclassNameFor: aClass) asSymbol\x0a\x09\x09instanceVariableNames: {varName}\x0a\x09\x09package: 'Compiler-Core'",
-messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "asSymbol", "subclassNameFor:", "new"],
+messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "new", "asSymbol", "subclassNameFor:"],
 referencedClasses: ["ClassBuilder"]
 }),
 smalltalk.Repl);
@@ -1731,7 +1734,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=_st(_st(aClass)._name())._matchesOf_("\x5cd+$");
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st(_st(aClass)._name()).__comma("2");
 } else {
 var counter;
@@ -1743,7 +1746,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"subclassNameFor:",{aClass:aClass},smalltalk.Repl)})},
 args: ["aClass"],
 source: "subclassNameFor: aClass\x0a\x09^ (aClass name matchesOf: '\x5cd+$')\x0a\x09\x09ifNotNil: [ | counter |\x0a\x09\x09\x09counter := (aClass name matchesOf: '\x5cd+$') first asNumber + 1.\x0a\x09\x09\x09aClass name replaceRegexp: '\x5cd+$' asRegexp with: counter asString]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09aClass name, '2'].",
-messageSends: ["ifNotNil:ifNil:", "+", "asNumber", "first", "matchesOf:", "name", "replaceRegexp:with:", "asRegexp", "asString", ","],
+messageSends: ["ifNotNil:ifNil:", "matchesOf:", "name", "+", "asNumber", "first", "replaceRegexp:with:", "asRegexp", "asString", ","],
 referencedClasses: []
 }),
 smalltalk.Repl);
@@ -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."

+ 2 - 1
css/helios.css

@@ -49,8 +49,9 @@ html[xmlns] .clearfix {
   padding: 0 10px;
 }
 #helios .CodeMirror pre {
-  font-family: Menlo, Monaco, "Lucida Console", Courier, monospace;
+  font-family: Menlo, Monaco, "Lucida Console", "Ubuntu Mono", Courier, monospace;
   line-height: 16px;
+  font-size: 13px;
 }
 #helios .CodeMirror-gutter.stops {
   width: 20px;

+ 2 - 1
css/helios.less

@@ -61,8 +61,9 @@ html[xmlns] .clearfix {
     }
 
     .CodeMirror pre {
-	font-family: Menlo, Monaco, "Lucida Console", Courier, monospace;
+	font-family: Menlo, Monaco, "Lucida Console",  "Ubuntu Mono", Courier, monospace;
 	line-height: 16px;
+	font-size: 13px;
     }
 
     .CodeMirror-gutter.stops {

+ 34 - 29
grunt/tasks/grunt-amberc.js

@@ -5,52 +5,61 @@ module.exports = function(grunt) {
   var amberc = require('../../bin/amberc.js');
 
   /**
-     Full config looks like this:
+     A full example entry for a Gruntfile.js is available below.
+     Please note that the verbose level is either specified globally
+     or on a target specific level.
+     However, it can additionally be triggered on the commandline by
+     adding the '-v' or '--verbose' flag.
+
+     Example Gruntfile.js entry:
+
      amberc: {
-       _config: {
+       options: {
          amber_dir: process.cwd(),     // REQUIRED
-         closure_jar: '',              // optional
          verbose: true                 // optional
        },
        helloWorld: {
+         options: {                             // the 'options' object is optional
+           verbose: true
+         },
          src: ['projects/HelloWorld/st/HelloWorld.st'], // REQUIRED
          output_dir: 'projects/HelloWorld/js',  // optional
          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
        },
      },
 
    */
   grunt.registerMultiTask('amberc', 'Compile Smalltalk files with the amberc compiler', function() {
-    // mark required properties
-    this.requiresConfig('amberc.options.amber_dir');
-    this.requiresConfig(['amberc', this.target, 'src']);
+    // mark task as async task
+    var done = this.async();
 
     var options = this.options({
       amber_dir: undefined,
-      closure_jar: '',
-      verbose: false
+      verbose: grunt.option('verbose') || false
     });
     this.data.verbose = options.verbose;
 
-    // mark task as async task
-    var done = this.async();
+    // mark required properties
+    this.requiresConfig('amberc.options.amber_dir');
+    // raise error on missing source files
+    if (this.filesSrc.length === 0) {
+        grunt.fail.fatal('No source files to compile or link.');
+    }
 
     // create and initialize amberc
-    var compiler = new amberc.Compiler(grunt.config('amberc.options.amber_dir'), grunt.config('amberc.options.closure_jar'));
+    var compiler = new amberc.Compiler(grunt.config('amberc.options.amber_dir'));
 
     // generate the amberc configuration out of the given target properties
-    var configuration = generateCompilerConfiguration(this.data, grunt.config('amberc.options.amber_dir'));
+    var configuration = generateCompilerConfiguration(this.data, this.filesSrc, 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
@@ -59,7 +68,7 @@ module.exports = function(grunt) {
   });
 
 
-  function generateCompilerConfiguration(data, amber_dir) {
+  function generateCompilerConfiguration(data, sourceFiles, amber_dir) {
     var configuration = amberc.createDefaults(amber_dir);
     var parameters = [];
 
@@ -67,10 +76,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 +84,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;
@@ -92,7 +94,6 @@ module.exports = function(grunt) {
       configuration.loadsuffix = librarySuffix;
       configuration.suffix_used = librarySuffix;
     }
-    var sourceFiles = data.src;
     if (undefined !== sourceFiles) {
       sourceFiles.forEach(function(currentItem){
         var fileSuffix = path.extname(currentItem);
@@ -110,6 +111,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;
     }

+ 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)})}));
-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)})}))._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)})}));
-count=_st(count).__plus((1));
-return count;
-};
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})}));
-$2=count;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},smalltalk.Number)})},
-messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"]}),
-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)})}));
-t1;
-return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n1=_st(n1).__star((2));
-return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-t2;
-return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n2=_st(n2).__plus((1));
-return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
-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)})}));
-t1;
-return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n1=_st(n1).__star((2));
-return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-t2;
-return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-n2=_st(n2).__plus((1));
-return n2;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$1=_st(_st(_st(_st(_st(_st(_st(n1).__star((500000))).__star((1000))).__slash(t1))._printString()).__comma(" bytecodes/sec; ")).__comma(_st(_st(_st(r).__star((1000))).__slash(t2))._printString())).__comma(" sends/sec");
-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);

+ 92 - 41
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');
 
@@ -28,18 +29,26 @@ category: '*Benchfib',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$5,$4,$7,$6,$3,$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));
+$5=self.__minus((1));
+$ctx1.sendIdx["-"]=1;
+$4=_st($5)._benchFib();
+$ctx1.sendIdx["benchFib"]=1;
+$7=self.__minus((2));
+$6=_st($7)._benchFib();
+$3=_st($4).__plus($6);
+$1=_st($3).__plus((1));
+$ctx1.sendIdx["+"]=1;
 };
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"benchFib",{},smalltalk.Number)})},
 args: [],
 source: "benchFib\x0a\x09\x22Handy send-heavy benchmark\x22\x0a\x09\x22(result // seconds to run) = approx calls per second\x22\x0a\x09\x22\x09| r t |\x0a\x09\x09t := Time millisecondsToRun: [r := 26 benchFib].\x0a\x09\x09(r * 1000) // t\x22\x0a\x09\x22138000 on a Mac 8100/100\x22\x0a\x09^ self < 2\x0a\x09\x09ifTrue: [1]\x0a\x09\x09ifFalse: [(self-1) benchFib + (self-2) benchFib + 1]",
-messageSends: ["ifTrue:ifFalse:", "+", "benchFib", "-", "<"],
+messageSends: ["ifTrue:ifFalse:", "<", "+", "benchFib", "-"],
 referencedClasses: []
 }),
 smalltalk.Number);
@@ -53,9 +62,9 @@ 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;
+var $2,$1,$3;
 size=(8190);
-(1)._to_do_(self,(function(iter){
+$1=(1)._to_do_(self,(function(iter){
 return smalltalk.withContext(function($ctx2) {
 count=(0);
 count;
@@ -64,35 +73,39 @@ flags;
 _st(size)._timesRepeat_((function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(flags)._add_(true);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, 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)){
+$2=_st(flags)._at_(i);
+if(smalltalk.assert($2)){
 prime=_st(i).__plus((1));
+$ctx3.sendIdx["+"]=1;
 prime;
 k=_st(i).__plus(prime);
+$ctx3.sendIdx["+"]=2;
 k;
 _st((function(){
 return smalltalk.withContext(function($ctx4) {
 return _st(k).__lt_eq(size);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}))._whileTrue_((function(){
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx4) {
 _st(flags)._at_put_(k,false);
 k=_st(k).__plus(prime);
+$ctx4.sendIdx["+"]=3;
 return k;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)})}));
 count=_st(count).__plus((1));
 return count;
 };
-}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1)})}));
-$2=count;
-return $2;
+}, function($ctx3) {$ctx3.fillBlock({i:i},$ctx2,3)})}));
+}, function($ctx2) {$ctx2.fillBlock({iter:iter},$ctx1,1)})}));
+$ctx1.sendIdx["to:do:"]=1;
+$3=count;
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"benchmark",{size:size,flags:flags,prime:prime,k:k,count:count},smalltalk.Number)})},
 args: [],
 source: "benchmark\x0a\x09\x22Handy bytecode-heavy benchmark\x22\x0a\x09\x22(500000 // time to run) = approx bytecodes per second\x22\x0a\x09\x225000000 // (Time millisecondsToRun: [10 benchmark]) * 1000\x22\x0a\x09\x223059000 on a Mac 8100/100\x22\x0a\x09| size flags prime k count |\x0a\x09size := 8190.\x0a\x091 to: self do:\x0a\x09\x09[:iter |\x0a\x09\x09count := 0.\x0a\x09\x09flags := Array new.\x0a\x09\x09size timesRepeat: [ flags add: true].\x0a\x09\x091 to: size do:\x0a\x09\x09\x09[:i | (flags at: i) ifTrue:\x0a\x09\x09\x09\x09[prime := i+1.\x0a\x09\x09\x09\x09k := i + prime.\x0a\x09\x09\x09\x09[k <= size] whileTrue:\x0a\x09\x09\x09\x09\x09[flags at: k put: false.\x0a\x09\x09\x09\x09\x09k := k + prime].\x0a\x09\x09\x09\x09count := count + 1]]].\x0a\x09^ count",
-messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "+", "whileTrue:", "at:put:", "<=", "at:"],
+messageSends: ["to:do:", "new", "timesRepeat:", "add:", "ifTrue:", "at:", "+", "whileTrue:", "<=", "at:put:"],
 referencedClasses: ["Array"]
 }),
 smalltalk.Number);
@@ -162,42 +175,61 @@ 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;
+var $1,$2,$9,$8,$7,$6,$5,$12,$11,$10,$4,$3;
 n1=(1);
-_st((function(){
+$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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["millisecondsToRun:"]=1;
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+$ctx2.sendIdx["<"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
 n1=_st(n1).__star((2));
+$ctx2.sendIdx["*"]=1;
 return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+$ctx1.sendIdx["whileTrue:"]=1;
 n2=(28);
-_st((function(){
+$2=_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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+}, 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)})}));
-$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($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
+$9=_st(n1).__star((500000));
+$ctx1.sendIdx["*"]=3;
+$8=_st($9).__star((1000));
+$ctx1.sendIdx["*"]=2;
+$7=_st($8).__slash(t1);
+$ctx1.sendIdx["/"]=1;
+$6=_st($7)._printString();
+$ctx1.sendIdx["printString"]=1;
+$5=_st($6).__comma(" bytecodes/sec; ");
+$12=_st(r).__star((1000));
+$11=_st($12).__slash(t2);
+$10=_st($11)._printString();
+$4=_st($5).__comma($10);
+$ctx1.sendIdx[","]=2;
+$3=_st($4).__comma(" sends/sec");
+$ctx1.sendIdx[","]=1;
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"jstinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 args: [],
 source: "jstinyBenchmarks\x0a\x09\x220 jstinyBenchmarks\x22\x0a\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 jsbenchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 28.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 jsbenchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #jsbenchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
-messageSends: ["whileTrue:", "*", "millisecondsToRun:", "jsbenchmark", "<", "+", "jsbenchFib", ",", "printString", "/"],
+messageSends: ["whileTrue:", "millisecondsToRun:", "jsbenchmark", "<", "*", "jsbenchFib", "+", ",", "printString", "/"],
 referencedClasses: ["Date"]
 }),
 smalltalk.Number);
@@ -211,44 +243,63 @@ 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;
+var $1,$2,$9,$8,$7,$6,$5,$12,$11,$10,$4,$3;
 n1=(1);
-_st((function(){
+$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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["millisecondsToRun:"]=1;
 t1;
 return _st(t1).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+$ctx2.sendIdx["<"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
 n1=_st(n1).__star((2));
+$ctx2.sendIdx["*"]=1;
 return n1;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+$ctx1.sendIdx["whileTrue:"]=1;
 n2=(16);
-_st((function(){
+$2=_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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
 t2;
 return _st(t2).__lt((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+}, 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)})}));
-$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($ctx2) {$ctx2.fillBlock({},$ctx1,6)})}));
+$9=_st(n1).__star((500000));
+$ctx1.sendIdx["*"]=3;
+$8=_st($9).__star((1000));
+$ctx1.sendIdx["*"]=2;
+$7=_st($8).__slash(t1);
+$ctx1.sendIdx["/"]=1;
+$6=_st($7)._printString();
+$ctx1.sendIdx["printString"]=1;
+$5=_st($6).__comma(" bytecodes/sec; ");
+$12=_st(r).__star((1000));
+$11=_st($12).__slash(t2);
+$10=_st($11)._printString();
+$4=_st($5).__comma($10);
+$ctx1.sendIdx[","]=2;
+$3=_st($4).__comma(" sends/sec");
+$ctx1.sendIdx[","]=1;
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"tinyBenchmarks",{t1:t1,t2:t2,r:r,n1:n1,n2:n2},smalltalk.Number)})},
 args: [],
 source: "tinyBenchmarks\x0a\x09\x22Report the results of running the two tiny Squeak benchmarks.\x0a\x09ar 9/10/1999: Adjusted to run at least 1 sec to get more stable results\x22\x0a\x09\x220 tinyBenchmarks\x22\x0a\x09\x22On a 292 MHz G3 Mac: 22727272 bytecodes/sec; 984169 sends/sec\x22\x0a\x09\x22On a 400 MHz PII/Win98: 18028169 bytecodes/sec; 1081272 sends/sec\x22\x0a\x09| t1 t2 r n1 n2 |\x0a\x09n1 := 1.\x0a\x09[t1 := Date millisecondsToRun: [n1 benchmark].\x0a\x09t1 < 1000] whileTrue:[n1 := n1 * 2]. \x22Note: #benchmark's runtime is about O(n)\x22\x0a\x0a\x09n2 := 16.\x0a\x09[t2 := Date millisecondsToRun: [r := n2 benchFib].\x0a\x09t2 < 1000] whileTrue:[n2 := n2 + 1].\x0a\x09\x22Note: #benchFib's runtime is about O(k^n),\x0a\x09\x09where k is the golden number = (1 + 5 sqrt) / 2 = 1.618....\x22\x0a\x0a\x09^ ((n1 * 500000 * 1000) / t1) printString, ' bytecodes/sec; ',\x0a\x09\x09((r * 1000) / t2) printString, ' sends/sec'",
-messageSends: ["whileTrue:", "*", "millisecondsToRun:", "benchmark", "<", "+", "benchFib", ",", "printString", "/"],
+messageSends: ["whileTrue:", "millisecondsToRun:", "benchmark", "<", "*", "benchFib", "+", ",", "printString", "/"],
 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:", "error:", "=", "size", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromJQuery:",{aJQuery:aJQuery},smalltalk.HTMLSnippet)})},
-messageSends: ["do:", "installSnippetFromJQuery:", "asJQuery", "snippetsFromJQuery:"]}),
-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:", "allButFirst", "attr:put:", "removeAttr:", "test:", "asRegexp", "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 $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-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)})}))._currySelf())._asCompiledMethod_(aString),$HTMLCanvas(),"**snippets");
-return self}, function($ctx1) {$ctx1.fill(self,"snippetAt:compile:",{aString:aString,anElement:anElement},smalltalk.HTMLSnippet)})},
-messageSends: ["installMethod:forClass:category:", "asCompiledMethod:", "currySelf", "snippet:", "new"]}),
-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:", "asJQuery", "new", "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:", "ensureCurrent", "isDOMAvailable"]}),
-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:", "cssText:", "styleSheet", "element", "with:", "isMSIE"]}),
-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:", "asString", "current"]}),
-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);

+ 140 - 44
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    }.";
@@ -626,17 +627,24 @@ 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));
+var $2,$4,$3,$1,$5,$6;
+$2="<span />"._asJQuery();
+$4="&".__comma(aString);
+$ctx1.sendIdx[","]=2;
+$3=_st($4).__comma(";");
+$ctx1.sendIdx[","]=1;
+$1=_st($2)._html_($3);
+result=_st($1)._text();
+$5=_st(_st(result)._size()).__eq((1));
+if(! smalltalk.assert($5)){
+$6="Not an HTML entity: ".__comma(aString);
+self._error_($6);
 };
 self._with_(result);
 return self}, function($ctx1) {$ctx1.fill(self,"entity:",{aString:aString,result:result},smalltalk.HTMLCanvas)})},
 args: ["aString"],
 source: "entity: aString\x0a\x09\x22Adds a character representing html entity, eg.\x0a\x09html entity: 'copy'\x0a\x09adds a copyright sign.\x0a\x09If a name does not represent valid HTML entity, error is raised.\x22\x0a\x09| result |\x0a\x09result := ('<span />' asJQuery html: '&', aString, ';') text.\x0a\x09result size = 1 ifFalse: [ self error: 'Not an HTML entity: ', aString ].\x0a\x09self with: result",
-messageSends: ["text", "html:", ",", "asJQuery", "ifFalse:", "error:", "=", "size", "with:"],
+messageSends: ["text", "html:", "asJQuery", ",", "ifFalse:", "=", "size", "error:", "with:"],
 referencedClasses: []
 }),
 smalltalk.HTMLCanvas);
@@ -1120,7 +1128,7 @@ 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){
+if(($receiver = $1) == nil || $receiver == null){
 self["@root"]=_st($TagBrush())._fromString_canvas_("div",self);
 self["@root"];
 } else {
@@ -1699,17 +1707,19 @@ var self=this;
 var clone,caret;
 function $TagBrush(){return smalltalk.TagBrush||(typeof TagBrush=="undefined"?nil:TagBrush)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1,$2,$3;
 clone=_st(_st(anElement)._asJQuery())._clone();
-self._with_(_st($TagBrush())._fromJQuery_canvas_(clone,self));
+$1=_st($TagBrush())._fromJQuery_canvas_(clone,self);
+$ctx1.sendIdx["fromJQuery:canvas:"]=1;
+self._with_($1);
 caret=_st(clone)._find_("[data-snippet=\x22*\x22]");
-$1=_st(_st(caret)._toArray())._isEmpty();
-if(smalltalk.assert($1)){
+$2=_st(_st(caret)._toArray())._isEmpty();
+if(smalltalk.assert($2)){
 caret=clone;
 caret;
 };
-$2=_st($TagBrush())._fromJQuery_canvas_(_st(caret)._removeAttr_("data-snippet"),self);
-return $2;
+$3=_st($TagBrush())._fromJQuery_canvas_(_st(caret)._removeAttr_("data-snippet"),self);
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"snippet:",{anElement:anElement,clone:clone,caret:caret},smalltalk.HTMLCanvas)})},
 args: ["anElement"],
 source: "snippet: anElement\x0a\x09\x22Adds clone of anElement, finds [data-snippet=\x22\x22*\x22\x22] subelement\x0a\x09and returns TagBrush as if that subelement was just added.\x0a\x09\x0a\x09Rarely needed to use directly, use `html foo` dynamically installed method\x0a\x09for a snippet named foo.\x22\x0a\x09\x0a\x09| clone caret |\x0a\x09\x0a\x09clone := anElement asJQuery clone.\x0a\x09self with: (TagBrush fromJQuery: clone canvas: self).\x0a\x09caret := clone find: '[data-snippet=\x22*\x22]'.\x0a\x09caret toArray isEmpty ifTrue: [ caret := clone ].\x0a\x09^TagBrush fromJQuery: (caret removeAttr: 'data-snippet') canvas: self",
@@ -2198,8 +2208,11 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("msie"))._notNil();
+var $3,$2,$1;
+$3=_st(jQuery)._at_("browser");
+$2=_st($3)._at_("msie");
+$ctx1.sendIdx["at:"]=1;
+$1=_st($2)._notNil();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isMSIE",{},smalltalk.HTMLCanvas.klass)})},
 args: [],
@@ -2216,8 +2229,11 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("mozilla"))._notNil();
+var $3,$2,$1;
+$3=_st(jQuery)._at_("browser");
+$2=_st($3)._at_("mozilla");
+$ctx1.sendIdx["at:"]=1;
+$1=_st($2)._notNil();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isMozilla",{},smalltalk.HTMLCanvas.klass)})},
 args: [],
@@ -2234,8 +2250,11 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("opera"))._notNil();
+var $3,$2,$1;
+$3=_st(jQuery)._at_("browser");
+$2=_st($3)._at_("opera");
+$ctx1.sendIdx["at:"]=1;
+$1=_st($2)._notNil();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isOpera",{},smalltalk.HTMLCanvas.klass)})},
 args: [],
@@ -2252,8 +2271,11 @@ category: 'instance creation',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(_st(jQuery)._at_("browser"))._at_("webkit"))._notNil();
+var $3,$2,$1;
+$3=_st(jQuery)._at_("browser");
+$2=_st($3)._at_("webkit");
+$ctx1.sendIdx["at:"]=1;
+$1=_st($2)._notNil();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isWebkit",{},smalltalk.HTMLCanvas.klass)})},
 args: [],
@@ -2298,11 +2320,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"initializeFromJQuery:",{aJQuery:aJQuery},smalltalk.HTMLSnippet)})},
 args: ["aJQuery"],
 source: "initializeFromJQuery: aJQuery\x0a\x09\x22Finds and takes out all snippets out of aJQuery.\x0a\x09Installs it into self.\x22\x0a\x09\x0a\x09(self snippetsFromJQuery: aJQuery) do: [ :each |\x0a\x09\x09self installSnippetFromJQuery: each asJQuery ]",
-messageSends: ["do:", "installSnippetFromJQuery:", "asJQuery", "snippetsFromJQuery:"],
+messageSends: ["do:", "snippetsFromJQuery:", "installSnippetFromJQuery:", "asJQuery"],
 referencedClasses: []
 }),
 smalltalk.HTMLSnippet);
@@ -2332,7 +2354,7 @@ self._snippetAt_install_(name,_st(_st(element)._detach())._get_((0)));
 return self}, function($ctx1) {$ctx1.fill(self,"installSnippetFromJQuery:",{element:element,name:name},smalltalk.HTMLSnippet)})},
 args: ["element"],
 source: "installSnippetFromJQuery: element\x0a\x09| name |\x0a\x09name := element attr: 'data-snippet'.\x0a\x09name = '*' ifFalse: [\x0a\x09\x09('^\x5c*' asRegexp test: name)\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09name := name allButFirst.\x0a\x09\x09\x09\x09element attr: 'data-snippet' put: '*' ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09element removeAttr: 'data-snippet' ].\x0a\x09\x09self snippetAt: name install: (element detach get: 0) ]",
-messageSends: ["attr:", "ifFalse:", "ifTrue:ifFalse:", "allButFirst", "attr:put:", "removeAttr:", "test:", "asRegexp", "snippetAt:install:", "get:", "detach", "="],
+messageSends: ["attr:", "ifFalse:", "=", "ifTrue:ifFalse:", "test:", "asRegexp", "allButFirst", "attr:put:", "removeAttr:", "snippetAt:install:", "get:", "detach"],
 referencedClasses: []
 }),
 smalltalk.HTMLSnippet);
@@ -2361,18 +2383,18 @@ selector: "snippetAt:compile:",
 category: 'method generation',
 fn: function (aString,anElement){
 var self=this;
-function $HTMLCanvas(){return smalltalk.HTMLCanvas||(typeof HTMLCanvas=="undefined"?nil:HTMLCanvas)}
 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)})}))._currySelf())._asCompiledMethod_(aString),$HTMLCanvas(),"**snippets");
+}, 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)})},
 args: ["aString", "anElement"],
 source: "snippetAt: aString compile: anElement\x0a\x09\x22Method generation for the snippet.\x0a\x09The selector is aString, the method block uses anElement\x22\x0a\x09\x0a\x09ClassBuilder new\x0a\x09\x09installMethod: ([ :htmlReceiver | htmlReceiver snippet: anElement ]\x0a\x09\x09\x09currySelf asCompiledMethod: aString)\x0a\x09\x09forClass: HTMLCanvas\x0a\x09\x09category: '**snippets'",
-messageSends: ["installMethod:forClass:category:", "asCompiledMethod:", "currySelf", "snippet:", "new"],
-referencedClasses: ["HTMLCanvas", "ClassBuilder"]
+messageSends: ["installMethod:forClass:category:", "new", "asCompiledMethod:", "currySelf", "snippet:"],
+referencedClasses: ["ClassBuilder", "HTMLCanvas"]
 }),
 smalltalk.HTMLSnippet);
 
@@ -2402,7 +2424,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@snippets"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@snippets"]=smalltalk.HashedCollection._from_([]);
 $1=self["@snippets"];
 } else {
@@ -2464,7 +2486,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2,$3;
 $1=self["@current"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $2=smalltalk.HTMLSnippet.klass.superclass.fn.prototype._new.apply(_st(self), []);
 _st($2)._initializeFromJQuery_(_st(document)._asJQuery());
 $3=_st($2)._yourself();
@@ -2476,7 +2498,7 @@ $1;
 return self}, function($ctx1) {$ctx1.fill(self,"ensureCurrent",{},smalltalk.HTMLSnippet.klass)})},
 args: [],
 source: "ensureCurrent\x0a\x09current ifNil: [\x0a\x09\x09current := super new\x0a\x09\x09\x09initializeFromJQuery: document asJQuery;\x0a\x09\x09\x09yourself ]",
-messageSends: ["ifNil:", "initializeFromJQuery:", "asJQuery", "new", "yourself"],
+messageSends: ["ifNil:", "initializeFromJQuery:", "new", "asJQuery", "yourself"],
 referencedClasses: []
 }),
 smalltalk.HTMLSnippet.klass);
@@ -2497,7 +2519,7 @@ self._ensureCurrent();
 return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HTMLSnippet.klass)})},
 args: [],
 source: "initialize\x0a\x09super initialize.\x0a\x09self isDOMAvailable ifTrue: [\x0a\x09\x09self ensureCurrent ]",
-messageSends: ["initialize", "ifTrue:", "ensureCurrent", "isDOMAvailable"],
+messageSends: ["initialize", "ifTrue:", "isDOMAvailable", "ensureCurrent"],
 referencedClasses: []
 }),
 smalltalk.HTMLSnippet.klass);
@@ -2644,10 +2666,12 @@ fn: function (aBlock){
 var self=this;
 var root;
 return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 root=_st(self["@canvas"])._root();
-_st(self["@canvas"])._root_(self);
+$1=_st(self["@canvas"])._root_(self);
+$ctx1.sendIdx["root:"]=1;
 _st(aBlock)._value_(self["@canvas"]);
-_st(self["@canvas"])._root_(root);
+$2=_st(self["@canvas"])._root_(root);
 return self}, function($ctx1) {$ctx1.fill(self,"appendBlock:",{aBlock:aBlock,root:root},smalltalk.TagBrush)})},
 args: ["aBlock"],
 source: "appendBlock: aBlock\x0a\x09| root |\x0a\x09root := canvas root.\x0a\x09canvas root: self.\x0a\x09aBlock value: canvas.\x0a\x09canvas root: root",
@@ -2677,6 +2701,22 @@ referencedClasses: []
 }),
 smalltalk.TagBrush);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "appendDocumentFragment:",
+category: 'private',
+fn: function (anElement){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var element=self['@element'].appendChild(anElement["@element"]);
+return self}, function($ctx1) {$ctx1.fill(self,"appendDocumentFragment:",{anElement:anElement},smalltalk.TagBrush)})},
+args: ["anElement"],
+source: "appendDocumentFragment: anElement\x0a\x09<var element=self['@element'].appendChild(anElement[\x22@element\x22])>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.TagBrush);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "appendString:",
@@ -2798,10 +2838,9 @@ category: 'adding',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._empty();
-$2=_st($1)._append_(anObject);
+var $1;
+self._empty();
+$1=self._append_(anObject);
 return self}, function($ctx1) {$ctx1.fill(self,"contents:",{anObject:anObject},smalltalk.TagBrush)})},
 args: ["anObject"],
 source: "contents: anObject\x0a\x09self\x0a\x09empty;\x0a\x09append: anObject",
@@ -3646,7 +3685,7 @@ $1=$3;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"fromJQuery:canvas:",{aJQuery:aJQuery,aCanvas:aCanvas},smalltalk.TagBrush.klass)})},
 args: ["aJQuery", "aCanvas"],
-source: "fromJQuery: aJQuery canvas: aCanvas\x0a\x09^self new\x0a\x09initializeFromJQuery: aJQuery canvas: aCanvas;\x0a\x09yourself",
+source: "fromJQuery: aJQuery canvas: aCanvas\x0a\x09^self new\x0a\x09\x09initializeFromJQuery: aJQuery canvas: aCanvas;\x0a\x09\x09yourself",
 messageSends: ["initializeFromJQuery:canvas:", "new", "yourself"],
 referencedClasses: []
 }),
@@ -3674,7 +3713,64 @@ referencedClasses: []
 smalltalk.TagBrush.klass);
 
 
-smalltalk.addClass('StyleTag', smalltalk.TagBrush, ['canvas', 'element'], 'Canvas');
+smalltalk.addClass('DocumentFragmentTag', smalltalk.TagBrush, [], 'Canvas');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "createDocumentFragment",
+category: 'private',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return document.createDocumentFragment();
+return self}, function($ctx1) {$ctx1.fill(self,"createDocumentFragment",{},smalltalk.DocumentFragmentTag)})},
+args: [],
+source: "createDocumentFragment\x0a\x09<return document.createDocumentFragment()>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.DocumentFragmentTag);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "initializeFromCanvas:",
+category: 'initialization',
+fn: function (aCanvas){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@canvas"]=aCanvas;
+self["@element"]=self._createDocumentFragment();
+return self}, function($ctx1) {$ctx1.fill(self,"initializeFromCanvas:",{aCanvas:aCanvas},smalltalk.DocumentFragmentTag)})},
+args: ["aCanvas"],
+source: "initializeFromCanvas: aCanvas\x0a\x09canvas := aCanvas.\x0a\x09element := self createDocumentFragment",
+messageSends: ["createDocumentFragment"],
+referencedClasses: []
+}),
+smalltalk.DocumentFragmentTag);
+
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "canvas:",
+category: 'instance creation',
+fn: function (aCanvas){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=self._new();
+_st($2)._initializeFromCanvas_(aCanvas);
+$3=_st($2)._yourself();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"canvas:",{aCanvas:aCanvas},smalltalk.DocumentFragmentTag.klass)})},
+args: ["aCanvas"],
+source: "canvas: aCanvas\x0a\x09^ self new\x0a\x09\x09initializeFromCanvas: aCanvas;\x0a\x09\x09yourself",
+messageSends: ["initializeFromCanvas:", "new", "yourself"],
+referencedClasses: []
+}),
+smalltalk.DocumentFragmentTag.klass);
+
+
+smalltalk.addClass('StyleTag', smalltalk.TagBrush, [], 'Canvas');
 smalltalk.StyleTag.comment="I'm a `<style>` tag use to inline CSS or load a stylesheet.\x0a\x0a## Motivation\x0a\x0aThe need for a specific class comes from Internet Explorer compatibility issues.";
 smalltalk.addMethod(
 smalltalk.method({
@@ -3694,7 +3790,7 @@ smalltalk.StyleTag.superclass.fn.prototype._with_.apply(_st(self), [aString]);
 return self}, function($ctx1) {$ctx1.fill(self,"with:",{aString:aString},smalltalk.StyleTag)})},
 args: ["aString"],
 source: "with: aString\x0a\x09HTMLCanvas isMSIE\x0a\x09\x09ifTrue: [self element styleSheet cssText: aString ]\x0a\x09\x09ifFalse: [super with: aString ].",
-messageSends: ["ifTrue:ifFalse:", "cssText:", "styleSheet", "element", "with:", "isMSIE"],
+messageSends: ["ifTrue:ifFalse:", "isMSIE", "cssText:", "styleSheet", "element", "with:"],
 referencedClasses: ["HTMLCanvas"]
 }),
 smalltalk.StyleTag);
@@ -3868,7 +3964,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"asSnippet",{},smalltalk.CharacterArray)})},
 args: [],
 source: "asSnippet\x0a\x09^ HTMLSnippet current snippetAt: self asString",
-messageSends: ["snippetAt:", "asString", "current"],
+messageSends: ["snippetAt:", "current", "asString"],
 referencedClasses: ["HTMLSnippet"]
 }),
 smalltalk.CharacterArray);
@@ -3937,4 +4033,4 @@ referencedClasses: []
 }),
 smalltalk.JSObjectProxy);
 
-})(global_smalltalk,global_nil,global__st);
+});

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

@@ -1,1540 +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: "extent",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._nextNode();
-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)._extent();
-};
-} else {
-var node;
-node=$receiver;
-$1=_st(node)._position();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extent",{},smalltalk.Node)})},
-messageSends: ["ifNil:ifNotNil:", "ifNotNil:", "extent", "parent", "position", "nextNode"]}),
-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: "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: "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: "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:", "nextNode:", "parent"]}),
-smalltalk.Node);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "nextNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._nodes())._at_ifAbsent_(_st(_st(self._nodes())._indexOf_(aNode)).__plus((1)),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode},smalltalk.Node)})},
-messageSends: ["at:ifAbsent:", "+", "indexOf:", "nodes"]}),
-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)})}));
-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:", "position", "parent"]}),
-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: "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)})})))._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)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return false;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}))).__tild_eq(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.Node)})},
-messageSends: ["or:", "~=", "detect:ifNone:", "subtreeNeedsAliasing", "nodes", "shouldBeInlined", "shouldBeAliased"]}),
-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;
-return self}, function($ctx1) {$ctx1.fill(self,"left:",{aNode:aNode},smalltalk.AssignmentNode)})},
-messageSends: []}),
-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;
-return self}, function($ctx1) {$ctx1.fill(self,"right:",{aNode:aNode},smalltalk.AssignmentNode)})},
-messageSends: []}),
-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: "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.BlockNode)})},
-messageSends: ["or:", "shouldBeInlined", "shouldBeAliased"]}),
-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: "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", "last", "lines", "source"]}),
-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)})}));
-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:", "selector", "new", "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: "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 $2,$3,$1;
-$2=_st($Array())._withAll_(self._arguments());
-_st($2)._add_(self._receiver());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.SendNode)})},
-messageSends: ["add:", "receiver", "withAll:", "arguments", "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:", "parent:", "isNode"]}),
-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:", "position", "new", "receiver:", "ifNil:ifNotNil:", "valueForReceiver:", "receiver", "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:", "position", "new", "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.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=_st(_st($Smalltalk())._current())._parse_(self._source());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ast",{},smalltalk.CompiledMethod)})},
-messageSends: ["ifEmpty:", "error:", "source", "parse:", "current"]}),
-smalltalk.CompiledMethod);
-
-})(global_smalltalk,global_nil,global__st);

+ 378 - 133
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.";
@@ -40,47 +41,31 @@ smalltalk.Node);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "extent",
-category: 'accessing',
+selector: "isAssignmentNode",
+category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-$2=self._nextNode();
-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)._extent();
-};
-} else {
-var node;
-node=$receiver;
-$1=_st(node)._position();
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extent",{},smalltalk.Node)})},
+return false;
+}, function($ctx1) {$ctx1.fill(self,"isAssignmentNode",{},smalltalk.Node)})},
 args: [],
-source: "extent\x0a\x09\x22Answer the line and column of the end position of the receiver in the source code\x22\x0a\x09\x0a\x09^ self nextNode \x0a\x09\x09ifNil: [ self parent ifNotNil: [ :node | node extent ] ]\x0a\x09\x09ifNotNil: [ :node | node position ]",
-messageSends: ["ifNil:ifNotNil:", "ifNotNil:", "extent", "parent", "position", "nextNode"],
+source: "isAssignmentNode\x0a\x09^ false",
+messageSends: [],
 referencedClasses: []
 }),
 smalltalk.Node);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "isAssignmentNode",
+selector: "isBlockNode",
 category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 return false;
-}, function($ctx1) {$ctx1.fill(self,"isAssignmentNode",{},smalltalk.Node)})},
+}, function($ctx1) {$ctx1.fill(self,"isBlockNode",{},smalltalk.Node)})},
 args: [],
-source: "isAssignmentNode\x0a\x09^ false",
+source: "isBlockNode\x0a\x09^false",
 messageSends: [],
 referencedClasses: []
 }),
@@ -88,15 +73,15 @@ smalltalk.Node);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "isBlockNode",
+selector: "isBlockSequenceNode",
 category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 return false;
-}, function($ctx1) {$ctx1.fill(self,"isBlockNode",{},smalltalk.Node)})},
+}, function($ctx1) {$ctx1.fill(self,"isBlockSequenceNode",{},smalltalk.Node)})},
 args: [],
-source: "isBlockNode\x0a\x09^false",
+source: "isBlockSequenceNode\x0a\x09^false",
 messageSends: [],
 referencedClasses: []
 }),
@@ -104,15 +89,15 @@ smalltalk.Node);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "isBlockSequenceNode",
+selector: "isCascadeNode",
 category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 return false;
-}, function($ctx1) {$ctx1.fill(self,"isBlockSequenceNode",{},smalltalk.Node)})},
+}, function($ctx1) {$ctx1.fill(self,"isCascadeNode",{},smalltalk.Node)})},
 args: [],
-source: "isBlockSequenceNode\x0a\x09^false",
+source: "isCascadeNode\x0a\x09^ false",
 messageSends: [],
 referencedClasses: []
 }),
@@ -150,6 +135,24 @@ referencedClasses: []
 }),
 smalltalk.Node);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isLastChild",
+category: 'testing',
+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)})},
+args: [],
+source: "isLastChild\x0a\x09^ self parent nodes last = self",
+messageSends: ["=", "last", "nodes", "parent"],
+referencedClasses: []
+}),
+smalltalk.Node);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "isNode",
@@ -214,6 +217,58 @@ referencedClasses: []
 }),
 smalltalk.Node);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "method",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self._parent();
+if(($receiver = $2) == nil || $receiver == null){
+$1=$2;
+} else {
+var node;
+node=$receiver;
+$1=_st(node)._method();
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.Node)})},
+args: [],
+source: "method\x0a\x09^ self parent ifNotNil: [ :node | node method ]",
+messageSends: ["ifNotNil:", "parent", "method"],
+referencedClasses: []
+}),
+smalltalk.Node);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "nextChild",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $3,$2,$5,$4,$1;
+$3=self._nodes();
+$ctx1.sendIdx["nodes"]=1;
+$2=_st($3)._isEmpty();
+if(smalltalk.assert($2)){
+$1=self;
+} else {
+$5=self._nodes();
+$4=_st($5)._first();
+$1=_st($4)._nextChild();
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"nextChild",{},smalltalk.Node)})},
+args: [],
+source: "nextChild\x0a\x09\x22Answer the next node after aNode.\x0a\x09Recurse into the possible children of the receiver to answer the next node to be evaluated\x22\x0a\x09\x0a\x09^ self nodes isEmpty\x0a\x09\x09ifTrue: [ self ]\x0a\x09\x09ifFalse: [ self nodes first nextChild ]",
+messageSends: ["ifTrue:ifFalse:", "isEmpty", "nodes", "nextChild", "first"],
+referencedClasses: []
+}),
+smalltalk.Node);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "nextNode",
@@ -223,7 +278,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self._parent();
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=$2;
 } else {
 var node;
@@ -234,7 +289,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.Node)})},
 args: [],
 source: "nextNode\x0a\x09^ self parent ifNotNil: [ :node |\x0a\x09\x09node nextNode: self ]",
-messageSends: ["ifNotNil:", "nextNode:", "parent"],
+messageSends: ["ifNotNil:", "parent", "nextNode:"],
 referencedClasses: []
 }),
 smalltalk.Node);
@@ -245,17 +300,28 @@ selector: "nextNode:",
 category: 'accessing',
 fn: function (aNode){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._nodes())._at_ifAbsent_(_st(_st(self._nodes())._indexOf_(aNode)).__plus((1)),(function(){
+var next;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$4,$3,$2,$5;
+var $early={};
+try {
+$1=self._nodes();
+$ctx1.sendIdx["nodes"]=1;
+$4=self._nodes();
+$3=_st($4)._indexOf_(aNode);
+$2=_st($3).__plus((1));
+next=_st($1)._at_ifAbsent_($2,(function(){
 return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode},smalltalk.Node)})},
+throw $early=[self];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$5=_st(next)._nextChild();
+return $5;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
+}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode,next:next},smalltalk.Node)})},
 args: ["aNode"],
-source: "nextNode: aNode\x0a\x09\x22Answer the next node after aNode\x22\x0a\x09\x0a\x09^ self nodes \x0a\x09\x09at: (self nodes indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ nil ]",
-messageSends: ["at:ifAbsent:", "+", "indexOf:", "nodes"],
+source: "nextNode: aNode\x0a\x09\x22Answer the next node after aNode.\x0a\x09Recurse into the possible children of the next node to answer the next node to be evaluated\x22\x0a\x09\x0a\x09| next |\x0a\x09\x0a\x09next := self nodes \x0a\x09\x09at: (self nodes indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ ^ self ].\x0a\x09\x0a\x09^ next nextChild",
+messageSends: ["at:ifAbsent:", "nodes", "+", "indexOf:", "nextChild"],
 referencedClasses: []
 }),
 smalltalk.Node);
@@ -270,7 +336,7 @@ 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){
+if(($receiver = $2) == nil || $receiver == null){
 self["@nodes"]=_st($Array())._new();
 $1=self["@nodes"];
 } else {
@@ -296,7 +362,7 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"nodes:",{aCollection:aCollection},smalltalk.Node)})},
 args: ["aCollection"],
 source: "nodes: aCollection\x0a\x09nodes := aCollection.\x0a\x09aCollection do: [ :each | each parent: self ]",
@@ -348,9 +414,9 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$1;
 $2=self["@position"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=self._parent();
-if(($receiver = $3) == nil || $receiver == undefined){
+if(($receiver = $3) == nil || $receiver == null){
 $1=$3;
 } else {
 var node;
@@ -364,7 +430,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"position",{},smalltalk.Node)})},
 args: [],
 source: "position\x0a\x09\x22answer the line and column of the receiver in the source code\x22\x0a\x09\x0a\x09^ position ifNil: [ \x0a\x09\x09self parent ifNotNil: [ :node | node position ] ]",
-messageSends: ["ifNil:", "ifNotNil:", "position", "parent"],
+messageSends: ["ifNil:", "ifNotNil:", "parent", "position"],
 referencedClasses: []
 }),
 smalltalk.Node);
@@ -385,6 +451,26 @@ referencedClasses: []
 }),
 smalltalk.Node);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "postCopy",
+category: 'copying',
+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)})},
+args: [],
+source: "postCopy\x0a\x09super postCopy.\x0a\x09self nodes do: [ :each | each parent: self ]",
+messageSends: ["postCopy", "do:", "nodes", "parent:"],
+referencedClasses: []
+}),
+smalltalk.Node);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "shouldBeAliased",
@@ -394,7 +480,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@shouldBeAliased"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -433,7 +519,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@shouldBeInlined"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -486,25 +572,27 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._shouldBeAliased())._or_((function(){
+var $2,$1;
+$2=_st(self._shouldBeAliased())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._shouldBeInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._or_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$1=_st($2)._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)})}),(function(){
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)})}),(function(){
 return smalltalk.withContext(function($ctx3) {
 return false;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}))).__tild_eq(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}))).__tild_eq(false);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+$ctx1.sendIdx["or:"]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.Node)})},
 args: [],
 source: "subtreeNeedsAliasing\x0a\x09^(self shouldBeAliased or: [ self shouldBeInlined ]) or: [\x0a\x09\x09(self nodes detect: [ :each | each subtreeNeedsAliasing ] ifNone: [ false ]) ~= false ]",
-messageSends: ["or:", "~=", "detect:ifNone:", "subtreeNeedsAliasing", "nodes", "shouldBeInlined", "shouldBeAliased"],
+messageSends: ["or:", "shouldBeAliased", "shouldBeInlined", "~=", "detect:ifNone:", "nodes", "subtreeNeedsAliasing"],
 referencedClasses: []
 }),
 smalltalk.Node);
@@ -573,10 +661,11 @@ 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)})},
 args: ["aNode"],
-source: "left: aNode\x0a\x09left := aNode",
-messageSends: [],
+source: "left: aNode\x0a\x09left := aNode.\x0a\x09aNode parent: self",
+messageSends: ["parent:"],
 referencedClasses: []
 }),
 smalltalk.AssignmentNode);
@@ -626,10 +715,11 @@ 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)})},
 args: ["aNode"],
-source: "right: aNode\x0a\x09right := aNode",
-messageSends: [],
+source: "right: aNode\x0a\x09right := aNode.\x0a\x09aNode parent: self",
+messageSends: ["parent:"],
 referencedClasses: []
 }),
 smalltalk.AssignmentNode);
@@ -672,6 +762,38 @@ referencedClasses: []
 }),
 smalltalk.BlockNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "nextChild",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self;
+}, function($ctx1) {$ctx1.fill(self,"nextChild",{},smalltalk.BlockNode)})},
+args: [],
+source: "nextChild\x0a\x09\x22Answer the receiver as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ self",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.BlockNode);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "nextNode:",
+category: 'accessing',
+fn: function (aNode){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self;
+}, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode},smalltalk.BlockNode)})},
+args: ["aNode"],
+source: "nextNode: aNode\x0a\x09\x22Answer the receiver as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ self",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.BlockNode);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "parameters",
@@ -682,7 +804,7 @@ 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){
+if(($receiver = $2) == nil || $receiver == null){
 self["@parameters"]=_st($Array())._new();
 $1=self["@parameters"];
 } else {
@@ -758,12 +880,12 @@ var $1;
 $1=_st(self._shouldBeAliased())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._shouldBeInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},smalltalk.BlockNode)})},
 args: [],
 source: "subtreeNeedsAliasing\x0a\x09^ self shouldBeAliased or: [ self shouldBeInlined ]",
-messageSends: ["or:", "shouldBeInlined", "shouldBeAliased"],
+messageSends: ["or:", "shouldBeAliased", "shouldBeInlined"],
 referencedClasses: []
 }),
 smalltalk.BlockNode);
@@ -790,6 +912,22 @@ referencedClasses: []
 }),
 smalltalk.CascadeNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isCascadeNode",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return true;
+}, function($ctx1) {$ctx1.fill(self,"isCascadeNode",{},smalltalk.CascadeNode)})},
+args: [],
+source: "isCascadeNode\x0a\x09^ true",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.CascadeNode);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "receiver",
@@ -915,7 +1053,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -947,7 +1085,7 @@ smalltalk.JSStatementNode);
 
 
 
-smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends', 'superSends'], 'Compiler-AST');
+smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes', 'superSends'], 'Compiler-AST');
 smalltalk.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
 smalltalk.addMethod(
 smalltalk.method({
@@ -976,7 +1114,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@arguments"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=[];
 } else {
 $1=$2;
@@ -1047,13 +1185,24 @@ category: 'accessing',
 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)));
+var $4,$3,$2,$9,$8,$7,$6,$5,$1;
+$4=self._source();
+$ctx1.sendIdx["source"]=1;
+$3=_st($4)._lines();
+$ctx1.sendIdx["lines"]=1;
+$2=_st($3)._size();
+$ctx1.sendIdx["size"]=1;
+$9=self._source();
+$8=_st($9)._lines();
+$7=_st($8)._last();
+$6=_st($7)._size();
+$5=_st($6).__plus((1));
+$1=_st($2).__at($5);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"extent",{},smalltalk.MethodNode)})},
 args: [],
 source: "extent\x0a\x09^ self source lines size @ (self source lines last size + 1)",
-messageSends: ["@", "+", "size", "last", "lines", "source"],
+messageSends: ["@", "size", "lines", "source", "+", "last"],
 referencedClasses: []
 }),
 smalltalk.MethodNode);
@@ -1066,27 +1215,27 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self["@messageSends"];
+$1=_st(self._sendIndexes())._keys();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageSends",{},smalltalk.MethodNode)})},
 args: [],
-source: "messageSends\x0a\x09^ messageSends",
-messageSends: [],
+source: "messageSends\x0a\x09^ self sendIndexes keys",
+messageSends: ["keys", "sendIndexes"],
 referencedClasses: []
 }),
 smalltalk.MethodNode);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "messageSends:",
+selector: "method",
 category: 'accessing',
-fn: function (aCollection){
+fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self["@messageSends"]=aCollection;
-return self}, function($ctx1) {$ctx1.fill(self,"messageSends:",{aCollection:aCollection},smalltalk.MethodNode)})},
-args: ["aCollection"],
-source: "messageSends: aCollection\x0a\x09messageSends := aCollection",
+return self;
+}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodNode)})},
+args: [],
+source: "method\x0a\x09^ self",
 messageSends: [],
 referencedClasses: []
 }),
@@ -1160,6 +1309,40 @@ referencedClasses: []
 }),
 smalltalk.MethodNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendIndexes",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=self["@sendIndexes"];
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"sendIndexes",{},smalltalk.MethodNode)})},
+args: [],
+source: "sendIndexes\x0a\x09^ sendIndexes",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.MethodNode);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendIndexes:",
+category: 'accessing',
+fn: function (aDictionary){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self["@sendIndexes"]=aDictionary;
+return self}, function($ctx1) {$ctx1.fill(self,"sendIndexes:",{aDictionary:aDictionary},smalltalk.MethodNode)})},
+args: ["aDictionary"],
+source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.MethodNode);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "source",
@@ -1349,7 +1532,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@arguments"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@arguments"]=[];
 $1=self["@arguments"];
 } else {
@@ -1375,7 +1558,7 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},smalltalk.SendNode)})},
 args: ["aCollection"],
 source: "arguments: aCollection\x0a\x09arguments := aCollection.\x0a\x09aCollection do: [ :each | each parent: self ]",
@@ -1397,9 +1580,11 @@ 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();
+$ctx1.sendIdx["new"]=1;
 _st($1)._selector_(self._selector());
 _st($1)._arguments_(self._arguments());
 $2=_st($1)._yourself();
+$ctx1.sendIdx["yourself"]=1;
 first=$2;
 $4=_st($CascadeNode())._new();
 _st($4)._receiver_(self._receiver());
@@ -1410,7 +1595,7 @@ return $3;
 }, function($ctx1) {$ctx1.fill(self,"cascadeNodeWithMessages:",{aCollection:aCollection,first:first},smalltalk.SendNode)})},
 args: ["aCollection"],
 source: "cascadeNodeWithMessages: aCollection\x0a\x09| first |\x0a\x09first := SendNode new\x0a\x09\x09selector: self selector;\x0a\x09\x09arguments: self arguments;\x0a\x09\x09yourself.\x0a\x09^CascadeNode new\x0a\x09\x09receiver: self receiver;\x0a\x09\x09nodes: (Array with: first), aCollection;\x0a\x09\x09yourself",
-messageSends: ["selector:", "selector", "new", "arguments:", "arguments", "yourself", "receiver:", "receiver", "nodes:", ",", "with:"],
+messageSends: ["selector:", "new", "selector", "arguments:", "arguments", "yourself", "receiver:", "receiver", "nodes:", ",", "with:"],
 referencedClasses: ["SendNode", "CascadeNode", "Array"]
 }),
 smalltalk.SendNode);
@@ -1449,6 +1634,24 @@ referencedClasses: []
 }),
 smalltalk.SendNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "isCascadeSendNode",
+category: 'testing',
+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)})},
+args: [],
+source: "isCascadeSendNode\x0a\x09^ self parent isCascadeNode",
+messageSends: ["isCascadeNode", "parent"],
+referencedClasses: []
+}),
+smalltalk.SendNode);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "isSendNode",
@@ -1473,16 +1676,30 @@ 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())._withAll_(self._arguments());
-_st($2)._add_(self._receiver());
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
+var $1,$3,$2,$6,$7,$5,$8,$9,$10,$4;
+$1=self._receiver();
+$ctx1.sendIdx["receiver"]=1;
+if(($receiver = $1) == nil || $receiver == null){
+$3=self._arguments();
+$ctx1.sendIdx["arguments"]=1;
+$2=_st($3)._copy();
+return $2;
+} else {
+$1;
+};
+$6=$Array();
+$7=self._receiver();
+$5=_st($6)._with_($7);
+$8=$5;
+$9=self._arguments();
+_st($8)._addAll_($9);
+$10=_st($5)._yourself();
+$4=$10;
+return $4;
 }, function($ctx1) {$ctx1.fill(self,"nodes",{},smalltalk.SendNode)})},
 args: [],
-source: "nodes\x0a\x09^ (Array withAll: self arguments)\x0a\x09\x09add: self receiver;\x0a\x09\x09yourself",
-messageSends: ["add:", "receiver", "withAll:", "arguments", "yourself"],
+source: "nodes\x0a\x09self receiver ifNil: [ ^ self arguments copy ].\x0a\x09\x0a\x09^ (Array with: self receiver)\x0a\x09\x09addAll: self arguments;\x0a\x09\x09yourself",
+messageSends: ["ifNil:", "receiver", "copy", "arguments", "addAll:", "with:", "yourself"],
 referencedClasses: ["Array"]
 }),
 smalltalk.SendNode);
@@ -1521,7 +1738,7 @@ _st(aNode)._parent_(self);
 return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{aNode:aNode},smalltalk.SendNode)})},
 args: ["aNode"],
 source: "receiver: aNode\x0a\x09receiver := aNode.\x0a\x09aNode isNode ifTrue: [\x0a\x09\x09aNode parent: self ]",
-messageSends: ["ifTrue:", "parent:", "isNode"],
+messageSends: ["ifTrue:", "isNode", "parent:"],
 referencedClasses: []
 }),
 smalltalk.SendNode);
@@ -1560,6 +1777,27 @@ referencedClasses: []
 }),
 smalltalk.SendNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "shouldBeAliased",
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(smalltalk.SendNode.superclass.fn.prototype._shouldBeAliased.apply(_st(self), []))._or_((function(){
+return smalltalk.withContext(function($ctx2) {
+return _st(_st(_st(_st(self._method())._sendIndexes())._at_(self._selector()))._size()).__gt((1));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},smalltalk.SendNode)})},
+args: [],
+source: "shouldBeAliased\x0a\x09^ super shouldBeAliased or: [\x0a\x09\x09(self method sendIndexes at: self selector) size > 1 ]",
+messageSends: ["or:", "shouldBeAliased", ">", "size", "at:", "sendIndexes", "method", "selector"],
+referencedClasses: []
+}),
+smalltalk.SendNode);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "stopOnStepping",
@@ -1585,7 +1823,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@superSend"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -1623,26 +1861,28 @@ 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;
+var $2,$3,$5,$6,$4,$7,$1;
 $2=_st($SendNode())._new();
 _st($2)._position_(self._position());
 $3=$2;
 $5=self._receiver();
-if(($receiver = $5) == nil || $receiver == undefined){
+$ctx1.sendIdx["receiver"]=1;
+if(($receiver = $5) == nil || $receiver == null){
 $4=anObject;
 } else {
-$4=_st(self._receiver())._valueForReceiver_(anObject);
+$6=self._receiver();
+$4=_st($6)._valueForReceiver_(anObject);
 };
 _st($3)._receiver_($4);
 _st($2)._selector_(self._selector());
 _st($2)._arguments_(self._arguments());
-$6=_st($2)._yourself();
-$1=$6;
+$7=_st($2)._yourself();
+$1=$7;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"valueForReceiver:",{anObject:anObject},smalltalk.SendNode)})},
 args: ["anObject"],
 source: "valueForReceiver: anObject\x0a\x09^SendNode new\x0a\x09\x09position: self position;\x0a\x09\x09receiver: (self receiver\x0a\x09\x09ifNil: [anObject]\x0a\x09\x09ifNotNil: [self receiver valueForReceiver: anObject]);\x0a\x09\x09selector: self selector;\x0a\x09\x09arguments: self arguments;\x0a\x09\x09yourself",
-messageSends: ["position:", "position", "new", "receiver:", "ifNil:ifNotNil:", "valueForReceiver:", "receiver", "selector:", "selector", "arguments:", "arguments", "yourself"],
+messageSends: ["position:", "new", "position", "receiver:", "ifNil:ifNotNil:", "receiver", "valueForReceiver:", "selector:", "selector", "arguments:", "arguments", "yourself"],
 referencedClasses: ["SendNode"]
 }),
 smalltalk.SendNode);
@@ -1688,7 +1928,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"asBlockSequenceNode",{},smalltalk.SequenceNode)})},
 args: [],
 source: "asBlockSequenceNode\x0a\x09^BlockSequenceNode new\x0a\x09\x09position: self position;\x0a\x09\x09nodes: self nodes;\x0a\x09\x09temps: self temps;\x0a\x09\x09yourself",
-messageSends: ["position:", "position", "new", "nodes:", "nodes", "temps:", "temps", "yourself"],
+messageSends: ["position:", "new", "position", "nodes:", "nodes", "temps:", "temps", "yourself"],
 referencedClasses: ["BlockSequenceNode"]
 }),
 smalltalk.SequenceNode);
@@ -1736,7 +1976,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@temps"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=[];
 } else {
 $1=$2;
@@ -1894,6 +2134,27 @@ referencedClasses: []
 }),
 smalltalk.ValueNode);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "xxxDoIt",
+category: '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)})},
+args: [],
+source: "xxxDoIt ^[self stack] value",
+messageSends: ["value", "stack"],
+referencedClasses: []
+}),
+smalltalk.ValueNode);
+
 
 
 smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
@@ -1943,7 +2204,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@assigned"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -2031,38 +2292,18 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-return false;
+var $1;
+$1=_st(self._binding())._isPseudoVar();
+return $1;
 }, function($ctx1) {$ctx1.fill(self,"isImmutable",{},smalltalk.VariableNode)})},
 args: [],
-source: "isImmutable\x0a\x09^false",
-messageSends: [],
+source: "isImmutable\x0a\x09^ self binding isPseudoVar",
+messageSends: ["isPseudoVar", "binding"],
 referencedClasses: []
 }),
 smalltalk.VariableNode);
 
 
-
-smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST');
-smalltalk.ClassReferenceNode.comment="I represent an class reference node.";
-smalltalk.addMethod(
-smalltalk.method({
-selector: "accept:",
-category: 'visiting',
-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)})},
-args: ["aVisitor"],
-source: "accept: aVisitor\x0a\x09^ aVisitor visitClassReferenceNode: self",
-messageSends: ["visitClassReferenceNode:"],
-referencedClasses: []
-}),
-smalltalk.ClassReferenceNode);
-
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "isNode",
@@ -2087,19 +2328,23 @@ 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(){
+var $1,$3,$4,$2;
+$1=self._source();
+$ctx1.sendIdx["source"]=1;
+_st($1)._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._error_("Method source is empty");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$1=_st(_st($Smalltalk())._current())._parse_(self._source());
-return $1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$3=_st($Smalltalk())._current();
+$4=self._source();
+$2=_st($3)._parse_($4);
+return $2;
 }, function($ctx1) {$ctx1.fill(self,"ast",{},smalltalk.CompiledMethod)})},
 args: [],
 source: "ast\x0a\x09self source ifEmpty: [ self error: 'Method source is empty' ].\x0a\x09\x0a\x09^ Smalltalk current parse: self source",
-messageSends: ["ifEmpty:", "error:", "source", "parse:", "current"],
+messageSends: ["ifEmpty:", "source", "error:", "parse:", "current"],
 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:", ",", "name", "instanceClass", "isNil", "isMetaclass"]}),
-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:", "currentClass", "irTranslator", "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:", "source", "new", "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:", "eval:", "compile:forClass:", "new"]}),
-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)})}),"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:", "install:forClass:category:", "source", "category", ",", "name", "values", "methodDictionary", "ifFalse:", "recompile:", "class", "isMetaclass"]}),
-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)})}),"Compiling all classes...");
-return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler)})},
-messageSends: ["do:displayingProgress:", "recompile:", "classes", "current"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"recompileAll",{},smalltalk.Compiler.klass)})},
-messageSends: ["do:", "recompile:", "classes", "current"]}),
-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)})}));
-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);

+ 61 - 62
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.";
@@ -10,13 +11,15 @@ category: 'accessing',
 fn: function (aClass){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
+var $2,$3,$4,$1;
 $2=_st(aClass)._isMetaclass();
 if(smalltalk.assert($2)){
-$1=_st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass");
+$3=_st(_st(aClass)._instanceClass())._name();
+$ctx1.sendIdx["name"]=1;
+$1=_st($3).__comma(".klass");
 } else {
-$3=_st(aClass)._isNil();
-if(smalltalk.assert($3)){
+$4=_st(aClass)._isNil();
+if(smalltalk.assert($4)){
 $1="nil";
 } else {
 $1=_st(aClass)._name();
@@ -26,7 +29,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:", ",", "name", "instanceClass", "isNil", "isMetaclass"],
+messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"],
 referencedClasses: []
 }),
 smalltalk.AbstractCodeGenerator);
@@ -119,7 +122,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);
@@ -133,7 +136,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -175,19 +178,21 @@ fn: function (aNode){
 var self=this;
 var ir,stream;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
-_st(self._semanticAnalyzer())._visit_(aNode);
+var $1,$3,$4,$2;
+$1=_st(self._semanticAnalyzer())._visit_(aNode);
+$ctx1.sendIdx["visit:"]=1;
 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;
+$ctx1.sendIdx["visit:"]=2;
+$3=self._irTranslator();
+_st($3)._currentClass_(self._currentClass());
+_st($3)._visit_(ir);
+$4=_st($3)._contents();
+$2=$4;
+return $2;
 }, 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:", "currentClass", "irTranslator", "contents"],
+messageSends: ["visit:", "semanticAnalyzer", "translator", "currentClass:", "irTranslator", "currentClass", "contents"],
 referencedClasses: []
 }),
 smalltalk.CodeGenerator);
@@ -248,7 +253,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:", "source", "new", "theClass:", "currentClass", "yourself"],
+messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"],
 referencedClasses: ["IRASTTranslator"]
 }),
 smalltalk.CodeGenerator);
@@ -267,7 +272,7 @@ function $InliningCodeGenerator(){return smalltalk.InliningCodeGenerator||(typeo
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@codeGeneratorClass"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=$InliningCodeGenerator();
 } else {
 $1=$2;
@@ -343,11 +348,14 @@ fn: function (aString){
 var self=this;
 function $DoIt(){return smalltalk.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $2,$1,$3;
 self._currentClass_($DoIt());
-self._source_(_st("doIt ^[".__comma(aString)).__comma("] value"));
-$1=self._compileNode_(self._parse_(self._source()));
-return $1;
+$2="doIt ^[".__comma(aString);
+$1=_st($2).__comma("] value");
+$ctx1.sendIdx[","]=1;
+self._source_($1);
+$3=self._compileNode_(self._parse_(self._source()));
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"compileExpression:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
 source: "compileExpression: aString\x0a\x09self currentClass: DoIt.\x0a\x09self source: 'doIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)",
@@ -363,11 +371,14 @@ category: 'compiling',
 fn: function (aString,anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $2,$1,$3;
 self._currentClass_(_st(anObject)._class());
-self._source_(_st("xxxDoIt ^[".__comma(aString)).__comma("] value"));
-$1=self._compileNode_(self._parse_(self._source()));
-return $1;
+$2="xxxDoIt ^[".__comma(aString);
+$1=_st($2).__comma("] value");
+$ctx1.sendIdx[","]=1;
+self._source_($1);
+$3=self._compileNode_(self._parse_(self._source()));
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"compileExpression:on:",{aString:aString,anObject:anObject},smalltalk.Compiler)})},
 args: ["aString", "anObject"],
 source: "compileExpression: aString on: anObject\x0a\x09self currentClass: anObject class.\x0a\x09self source: 'xxxDoIt ^[', aString, '] value'.\x0a\x09^self compileNode: (self parse: self source)",
@@ -478,14 +489,17 @@ fn: function (aString,anObject){
 var self=this;
 var result,method;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $1,$2,$3;
 method=self._eval_(self._compileExpression_on_(aString,anObject));
 _st(method)._category_("xxxDoIt");
-_st(_st(anObject)._class())._addCompiledMethod_(method);
+$1=_st(anObject)._class();
+$ctx1.sendIdx["class"]=1;
+_st($1)._addCompiledMethod_(method);
 result=_st(anObject)._xxxDoIt();
-_st(_st(anObject)._class())._removeCompiledMethod_(method);
-$1=result;
-return $1;
+$2=_st(anObject)._class();
+_st($2)._removeCompiledMethod_(method);
+$3=result;
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method},smalltalk.Compiler)})},
 args: ["aString", "anObject"],
 source: "evaluateExpression: aString on: anObject\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression with anObject as the receiver and answer the returned object\x22\x0a\x09| result method |\x0a\x09method := self eval: (self compileExpression: aString on: anObject).\x0a\x09method category: 'xxxDoIt'.\x0a\x09anObject class addCompiledMethod: method.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^result",
@@ -508,7 +522,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:", "eval:", "compile:forClass:", "new"],
+messageSends: ["installMethod:forClass:category:", "new", "eval:", "compile:forClass:"],
 referencedClasses: ["ClassBuilder"]
 }),
 smalltalk.Compiler);
@@ -539,8 +553,11 @@ category: 'compiling',
 fn: function (aString){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self._parse_(_st("doIt ^[".__comma(aString)).__comma("] value"));
+var $3,$2,$1;
+$3="doIt ^[".__comma(aString);
+$2=_st($3).__comma("] value");
+$ctx1.sendIdx[","]=1;
+$1=self._parse_($2);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},smalltalk.Compiler)})},
 args: ["aString"],
@@ -561,7 +578,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)})}),"Recompiling ".__comma(_st(aClass)._name()));
+}, 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());
@@ -569,7 +586,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:", "install:forClass:category:", "source", "category", ",", "name", "values", "methodDictionary", "ifFalse:", "recompile:", "class", "isMetaclass"],
+messageSends: ["do:displayingProgress:", "values", "methodDictionary", "install:forClass:category:", "source", "category", ",", "name", "ifFalse:", "isMetaclass", "recompile:", "class"],
 referencedClasses: []
 }),
 smalltalk.Compiler);
@@ -585,11 +602,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)})}),"Compiling all classes...");
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),"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:", "recompile:", "classes", "current"],
+messageSends: ["do:displayingProgress:", "classes", "current", "recompile:"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.Compiler);
@@ -603,7 +620,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@source"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -695,11 +712,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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 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:", "recompile:", "classes", "current"],
+messageSends: ["do:", "classes", "current", "recompile:"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.Compiler.klass);
@@ -740,7 +757,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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},smalltalk.NodeVisitor)})},
 args: ["aCollection"],
@@ -822,24 +839,6 @@ referencedClasses: []
 }),
 smalltalk.NodeVisitor);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitClassReferenceNode:",
-category: 'visiting',
-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)})},
-args: ["aNode"],
-source: "visitClassReferenceNode: aNode\x0a\x09^ self visitVariableNode: aNode",
-messageSends: ["visitVariableNode:"],
-referencedClasses: []
-}),
-smalltalk.NodeVisitor);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "visitDynamicArrayNode:",
@@ -1021,4 +1020,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);

+ 11 - 6
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.";
@@ -82,8 +83,10 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("Variable shadowing error: ".__comma(self._variableName())).__comma(" is already defined");
+var $2,$1;
+$2="Variable shadowing error: ".__comma(self._variableName());
+$1=_st($2).__comma(" is already defined");
+$ctx1.sendIdx[","]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.ShadowingVariableError)})},
 args: [],
@@ -138,8 +141,10 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("Unknown Variable error: ".__comma(self._variableName())).__comma(" is not defined");
+var $2,$1;
+$2="Unknown Variable error: ".__comma(self._variableName());
+$1=_st($2).__comma(" is not defined");
+$ctx1.sendIdx[","]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.UnknownVariableError)})},
 args: [],
@@ -221,4 +226,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 $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;
-$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:", "visit:", "isImmutable", "variable:", "name:", ",", "nextAlias", "new", "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)})}));
-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)})}));
-$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:", "new", "yourself", "sequence"]}),
-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)})}));
-_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)})}));
-$5=closure;
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure},smalltalk.IRASTTranslator)})},
-messageSends: ["arguments:", "parameters", "new", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "temps", "visit:", "nodes"]}),
-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)})}));
-$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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "do:", "add:", "visit:", "sequence", "allButLast", "nodes", "ifFalse:ifTrue:", "last", "yourself", "isReturnNode"]}),
-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)})}));
-};
-_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)})}));
-$2=self._alias_(_st(_st(aNode)._nodes())._last());
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,alias:alias},smalltalk.IRASTTranslator)})},
-messageSends: ["ifFalse:", "alias:", "receiver", "do:", "receiver:", "binding:", "variable", "new", "nodes", "isImmutable", "add:", "visit:", "sequence", "allButLast", "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=array;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},smalltalk.IRASTTranslator)})},
-messageSends: ["new", "do:", "add:", "aliasTemporally:", "nodes"]}),
-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=dictionary;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary},smalltalk.IRASTTranslator)})},
-messageSends: ["new", "do:", "add:", "aliasTemporally:", "nodes"]}),
-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:", "crlfSanitized", "source", "new", "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 $IRVariable(){return smalltalk.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
-function $IRReturn(){return smalltalk.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
-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)})}));
-_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)})}));
-$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:", "crlfSanitized", "source", "new", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "messageSends:", "messageSends", "superSends:", "superSends", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "add:", "name:", "name", "method", "temps", "visit:", "nodes", "ifFalse:", "variable:", "at:", "pseudoVars", "hasLocalReturn"]}),
-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)})}));
-$2=return_;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode,return_:return_},smalltalk.IRASTTranslator)})},
-messageSends: ["ifTrue:ifFalse:", "new", "nonLocalReturn", "scope:", "scope", "do:", "add:", "alias:", "nodes"]}),
-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)})}));
-$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:", "classSend:", "superclass", "theClass", "superSend", "aliasTemporally:", ",", "arguments", "receiver", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.IRASTTranslator)})},
-messageSends: ["withSequence:do:", "new", "do:", "visit:", "ifFalse:", "add:", "sequence", "isVariable", "nodes"]}),
-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:", "value", "new", "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:", "binding", "new", "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:", "indexOf:", "instructions"]}),
-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)})})));
-$3=_st($2)._yourself();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.IRClosureInstruction)})},
-messageSends: ["addAll:", "collect:", "name", "tempDeclarations", "copy", "arguments", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{},smalltalk.IRClosureInstruction)})},
-messageSends: ["select:", "isTempDeclaration", "instructions"]}),
-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=anIRInstruction;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:",{anIRInstruction:anIRInstruction},smalltalk.IRVisitor)})},
-messageSends: ["do:", "visit:", "instructions"]}),
-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)})})));
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),_st(anIRClosure)._arguments());
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutClosureWith:arguments:", "nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(self["@stream"])._nextPutAll_("]");
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:", "instructions"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(self._stream())._nextPutAll_("])");
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:", "instructions"]}),
-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)})})));
-_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)})}));
-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)})})));
-};
-$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)})}));
-} else {
-return smalltalk.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply(_st(self), [anIRMethod]);
-};
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}),_st(anIRMethod)._arguments());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutMethodDeclaration:with:", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "do:", "nextPutClassRefFunction:", "classReferences", "nextPutContextFor:during:", "ifTrue:", "alias", "variable", "asArray", "internalVariables", "notEmpty", "ifTrue:ifFalse:", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "hasNonLocalReturn", "scope", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutNonLocalReturnWith:", "visitIRNonLocalReturn:", "stream"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutReturnWith:", "visitIRReturn:", "stream"]}),
-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:", "visitSend:", "visitSuperSend:", "classSend"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutSequenceWith:", "do:", "nextPutStatementWith:", "visit:", "stream", "instructions"]}),
-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:", "asJavascript", "value", "stream"]}),
-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:", "nextPutAll:", "stream", "alias", "variable", "=", "name"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutStatementWith:", "nextPutAll:", "source", "stream"]}),
-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:", "visit:", "needsBoxingAsReceiver", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(self._stream())._nextPutAll_(")");
-return self}, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
-messageSends: ["visitReceiver:", "first", "instructions", "nextPutAll:", ",", "asSelector", "selector", "stream", "do:separatedBy:", "visit:", "allButFirst"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._stream())._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(self._stream())._nextPutAll_("])");
-return self}, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend},smalltalk.IRJSTranslator)})},
-messageSends: ["nextPutAll:", "asJavascript", "currentClass", "stream", ",", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$7=self;
-_st($7)._nextPutAll_("},");
-$8=_st($7)._nextPutAll_(_st(_st(_st(_st(anIRClosure)._scope())._outerScope())._alias()).__comma(")})"));
-return self}, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock},smalltalk.JSStream)})},
-messageSends: ["nextPutAll:", ",", "alias", "scope", "lf", "value", "do:separatedBy:", "asVariableName", "locals", "outerScope"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "asVariableName", "locals", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPut_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})})))._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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}));
-_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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@stream"])._nextPutAll_(",");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 418 - 200
js/Compiler-IR.js


+ 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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment},smalltalk.IRInliner)})},
-messageSends: ["and:", "shouldInlineSend:", "last", "instructions", "isSend", "not", "isInlined"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn},smalltalk.IRInliner)})},
-messageSends: ["and:", "shouldInlineSend:", "first", "instructions", "isSend", "not", "isInlined"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend},smalltalk.IRInliner)})},
-messageSends: ["and:", "shouldInline:", "not", "isInlined"]}),
-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)})}));
-_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:", "removeNonLocalReturn:", "scope", "methodScope", "scope:", "new", "yourself", "do:", "add:", "instructions", "replaceWith:", "canInlineNonLocalReturns", "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:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:", "shouldInlineAssignment:"]}),
-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:", "inlineReturn:", "returnInliner", "visitIRReturn:", "shouldInlineReturn:"]}),
-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:", "inlineSend:", "sendInliner", "visitIRSend:", "shouldInlineSend:"]}),
-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)})})));
-_st(_st(anIRInlinedClosure)._instructions())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutVars:", "collect:", "asVariableName", "name", "tempDeclarations", "stream", "do:", "visit:", "instructions"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfFalse)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNil)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNil:",{anIRInlinedIfNil:anIRInlinedIfNil},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfNilIfNotNil)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrue)._instructions())._last());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIf:with:", "nextPutAll:", "stream", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._second());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._visit_(_st(_st(anIRInlinedIfTrueIfFalse)._instructions())._third());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutIfElse:with:with:", "nextPutAll:", "stream", "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)})}));
-_st(self._stream())._nextPutNonLocalReturnWith_((function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:",{anIRInlinedReturn:anIRInlinedReturn},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["nextPutStatementWith:", "visit:", "last", "instructions", "stream", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},smalltalk.IRInliningJSTranslator)})},
-messageSends: ["do:", "nextPutStatementWith:", "visit:", "stream", "instructions"]}),
-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 $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();
-_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)})}));
-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)})}));
-_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)})}));
-$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)})}));
-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)})}));
-$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:", "add:", "tempDeclarations", "inlinedSequence", "name:", "new", "yourself", "variable:", "arguments", "instructions", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "first", "and:", "isBlockReturn", "isReturn"]}),
-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:", "inliningError:", "isClosure", "=", "size", "arguments", "visit:", "inlineClosure:", "translator", "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:", "inliningError:", "isClosure", "visit:", "inlineClosure:", "translator", "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)})}));
-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:", "selector", "inlinedSelectors", "do:", "isClosure", "allButFirst", "instructions"]}),
-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)})}));
-_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:", "add:", "instructions", "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)})}));
-$4=inlinedClosure;
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,statements:statements},smalltalk.IRAssignmentInliner)})},
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "replaceWith:", "add:", "first", "assignment", "new", "copy", "yourself", "canBeAssigned"]}),
-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)})}));
-$4=closure;
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,closure:closure,statements:statements},smalltalk.IRReturnInliner)})},
-messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "replaceWith:", "add:", "copy", "new", "yourself", "isReturn"]}),
-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)})}));
-_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:", "add:", "instructions", "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:", "currentClass", "irTranslator", "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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 471 - 223
js/Compiler-Inlining.js


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

@@ -1,1533 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Interpreter');
-smalltalk.addClass('AIContext', smalltalk.NodeVisitor, ['methodContext', 'outerContext', 'pc', 'locals', 'method'], 'Compiler-Interpreter');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "asString",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@methodContext"])._asString();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.AIContext)})},
-messageSends: ["asString"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "home",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
-$2=self._isBlockContext();
-if(smalltalk.assert($2)){
-$1=_st(self._outerContext())._methodContext();
-} else {
-$1=self;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.AIContext)})},
-messageSends: ["ifTrue:ifFalse:", "methodContext", "outerContext", "isBlockContext"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "initializeFromMethodContext:",
-fn: function (aMethodContext){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-self["@methodContext"]=aMethodContext;
-self._pc_(_st(aMethodContext)._pc());
-self._receiver_(_st(aMethodContext)._receiver());
-self._method_(_st(aMethodContext)._method());
-$1=_st(aMethodContext)._outerContext();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-var outer;
-outer=$receiver;
-$2=_st(outer)._methodContext();
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
-} 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)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext)})},
-messageSends: ["pc:", "pc", "receiver:", "receiver", "method:", "method", "ifNotNil:", "outerContext:", "fromMethodContext:", "outerContext", "class", "methodContext", "keysAndValuesDo:", "at:put:", "locals"]}),
-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: "isBlockContext",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self["@methodContext"])._isBlockContext();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.AIContext)})},
-messageSends: ["isBlockContext"]}),
-smalltalk.AIContext);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "localAt:",
-fn: function (aString){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._locals())._at_ifAbsent_(aString,(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString},smalltalk.AIContext)})},
-messageSends: ["at:ifAbsent:", "locals"]}),
-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: "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;
-return self}, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext},smalltalk.AIContext)})},
-messageSends: []}),
-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: "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:", "selector", "method"]}),
-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('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:", "source", "method", "current", "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:", "context", "new", "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)})})))._or_((function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(_st(self._interpreter())._atEnd())._not();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self._interpreter())._step();
-return self._step();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.ASTDebugger)})},
-messageSends: ["whileFalse:", "step", "interpreter", "or:", "not", "atEnd", "and:", "stopOnStepping", "nextNode", "notNil"]}),
-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', '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:", "instVarAt:put:", "value", "receiver", "context", "localAt:put:", "isInstanceVar", "binding"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(str)._nextPutAll_(",");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$1=str;
-_st($1)._nextPutAll_("){ return (function() {");
-_st($1)._nextPutAll_(aString);
-$2=_st($1)._nextPutAll_("})() })");
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1)})}));
-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)})}));
-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)})}));
-} 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:", "interpretNode:continue:", "continue:value:", "isNode"]}),
-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)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:result:",{nodes:nodes,aBlock:aBlock,aCollection:aCollection},smalltalk.ASTInterpreter)})},
-messageSends: ["ifTrue:ifFalse:", "continue:value:", "interpret:continue:", "first", "interpretAll:continue:result:", "allButFirst", ",", "isEmpty"]}),
-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)})}));
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretCascadeNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
-messageSends: ["interpret:continue:", "receiver", "do:", "receiver:", "nodes", "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:", "value", "current"]}),
-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)})}));
-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)})}));
-return self._continue_value_(aBlock,hashedCollection);
-}, function($ctx2) {$ctx2.fillBlock({array:array,hashedCollection:hashedCollection},$ctx1)})}));
-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)})}));
-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)})}));
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({args:args},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})}));
-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:", "+", "pc", "context", "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)})}));
-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:", "instVarAt:", "value", "receiver", "context", "localAt:", "isInstanceVar", "binding"]}),
-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:", "selector", "new", "arguments:", "yourself"]}),
-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)})}));
-$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:", "messageNotUnderstood:receiver:", "superclass", "class", "at:ifAbsent:", "selector", "methodDictionary", "applyTo:arguments:", "arguments", "fn"]}),
-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:", "context", "new", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.ASTSteppingInterpreter)})},
-messageSends: ["or:", "==", "currentNode", "nextNode", "shouldReturn"]}),
-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)})});
-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)})});
-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', 'currentNode'], 'Compiler-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.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: "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: "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,$2;
-smalltalk.ASTPCNodeVisitor.superclass.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
-$1=_st(self._pc()).__eq(_st(self._context())._pc());
-if(! smalltalk.assert($1)){
-$2=_st(aNode)._shouldBeInlined();
-if(! smalltalk.assert($2)){
-self._pc_(_st(self._pc()).__plus((1)));
-self["@currentNode"]=aNode;
-self["@currentNode"];
-};
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
-messageSends: ["visitSendNode:", "ifFalse:", "pc:", "+", "pc", "shouldBeInlined", "=", "context"]}),
-smalltalk.ASTPCNodeVisitor);
-
-
-
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 652 - 140
js/Compiler-Interpreter.js


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

@@ -1,1345 +0,0 @@
-(function(smalltalk,nil,_st){
-smalltalk.addPackage('Compiler-Semantic');
-
-smalltalk.addClass('LexicalScope', smalltalk.Object, ['node', 'instruction', 'temps', 'args', 'outerScope'], '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:", "on:", "args", "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:", "on:", "temps", "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", "temps", "args"]}),
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aStringOrNode:aStringOrNode},smalltalk.LexicalScope)})},
-messageSends: ["at:ifAbsent:", "value", "temps", "args", "pseudoVars"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},smalltalk.LexicalScope)})},
-messageSends: ["and:", "canInlineNonLocalReturns", "outerScope", "isInlined"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isInlined",{},smalltalk.LexicalScope)})},
-messageSends: ["and:", "isInlined", "instruction", "notNil"]}),
-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:", "lookupVariable:", "outerScope"]}),
-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:", "methodScope", "outerScope"]}),
-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:", "scopeLevel", "isInlined", "+"]}),
-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:", "on:", "iVars", "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: [",", "keys", "iVars", "allVariableNames"]}),
-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)})}));
-} else {
-$1=$2;
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aNode:aNode},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "at:ifAbsent:", "value", "iVars", "bindingFor:"]}),
-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 $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"];
-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)})}));
-} else {
-$1;
-};
-$4=self["@pseudoVars"];
-return $4;
-}, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},smalltalk.MethodLexicalScope)})},
-messageSends: ["ifNil:", "new", "do:", "at:put:", "scope:", "methodScope", "on:", "yourself", "pseudoVariableNames", "current"]}),
-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)})}));
-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)})}));
-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:", "variableName:", "name", "new", "signal", "or:", "isPseudoVar", "isArgVar"]}),
-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'], '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 $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)})}));
-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:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope", "and:", "isVariableGloballyUndefined:", "not", "includes:", "globalJsVariables", "current"]}),
-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: "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:", "errorShadowingVariable:", "lookupVariable:"]}),
-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(_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)})}));
-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:", "do:", "validateVariableScope:", "addArg:", "parameters", "visitBlockNode:", "popScope"]}),
-smalltalk.SemanticAnalyzer);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitCascadeNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._receiver_(_st(aNode)._receiver());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-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)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["do:", "receiver:", "receiver", "nodes", "visitCascadeNode:", "ifTrue:", "superSend:", "superSend", "first"]}),
-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:", "value", "classReferences", "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)})}));
-_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)})}));
-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:", "addIVar:", "allInstanceVariableNames", "theClass", "validateVariableScope:", "addArg:", "arguments", "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:", "localReturn:", "addNonLocalReturn:", "methodScope", "isMethodScope", "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;
-$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)})}));
-_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)._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)})}));
-_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:", "superSend:", "value:", "receiver", "at:ifAbsentPut:", "selector", "new", "superSends", "add:", "at:", "ifTrue:", "shouldBeInlined:", "shouldBeAliased:", "includes:", "inlinedSelectors", "=", "value", "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)})}));
-smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitSequenceNode_.apply(_st(self), [aNode]);
-return self}, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
-messageSends: ["do:", "validateVariableScope:", "addTemp:", "temps", "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:", "errorUnknownVariable:", "name:", "value", "new", "yourself", "lookupVariable:"]}),
-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);

+ 323 - 165
js/Compiler-Semantic.js

@@ -1,7 +1,8 @@
-(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'], 'Compiler-Semantic');
+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.";
 smalltalk.addMethod(
 smalltalk.method({
@@ -11,12 +12,17 @@ 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);
+var $1,$3,$2;
+$1=self._args();
+$ctx1.sendIdx["args"]=1;
+_st($1)._at_put_(aString,_st($ArgVar())._on_(aString));
+$3=self._args();
+$2=_st($3)._at_(aString);
+_st($2)._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:", "on:", "args", "scope:", "at:"],
+messageSends: ["at:put:", "args", "on:", "scope:", "at:"],
 referencedClasses: ["ArgVar"]
 }),
 smalltalk.LexicalScope);
@@ -29,12 +35,17 @@ 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);
+var $1,$3,$2;
+$1=self._temps();
+$ctx1.sendIdx["temps"]=1;
+_st($1)._at_put_(aString,_st($TempVar())._on_(aString));
+$3=self._temps();
+$2=_st($3)._at_(aString);
+_st($2)._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:", "on:", "temps", "scope:", "at:"],
+messageSends: ["at:put:", "temps", "on:", "scope:", "at:"],
 referencedClasses: ["TempVar"]
 }),
 smalltalk.LexicalScope);
@@ -64,13 +75,16 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._args())._keys()).__comma(_st(self._temps())._keys());
+var $2,$3,$1;
+$2=_st(self._args())._keys();
+$ctx1.sendIdx["keys"]=1;
+$3=_st(self._temps())._keys();
+$1=_st($2).__comma($3);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.LexicalScope)})},
 args: [],
 source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
-messageSends: [",", "keys", "temps", "args"],
+messageSends: [",", "keys", "args", "temps"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -85,7 +99,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@args"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@args"]=_st($Dictionary())._new();
 $1=self["@args"];
 } else {
@@ -107,22 +121,71 @@ category: 'accessing',
 fn: function (aStringOrNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(self._pseudoVars())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
+var $2,$3,$4,$5,$6,$7,$1;
+$2=self._pseudoVars();
+$3=_st(aStringOrNode)._value();
+$ctx1.sendIdx["value"]=1;
+$1=_st($2)._at_ifAbsent_($3,(function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(self._args())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
+$4=self._args();
+$5=_st(aStringOrNode)._value();
+$ctx2.sendIdx["value"]=2;
+return _st($4)._at_ifAbsent_($5,(function(){
 return smalltalk.withContext(function($ctx3) {
-return _st(self._temps())._at_ifAbsent_(_st(aStringOrNode)._value(),(function(){
+$6=self._temps();
+$7=_st(aStringOrNode)._value();
+return _st($6)._at_ifAbsent_($7,(function(){
 return smalltalk.withContext(function($ctx4) {
 return nil;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["at:ifAbsent:"]=2;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["at:ifAbsent:"]=1;
 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:", "value", "temps", "args", "pseudoVars"],
+messageSends: ["at:ifAbsent:", "pseudoVars", "value", "args", "temps"],
+referencedClasses: []
+}),
+smalltalk.LexicalScope);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "blockIndex",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$1;
+$2=self["@blockIndex"];
+if(($receiver = $2) == nil || $receiver == null){
+$1=(0);
+} else {
+$1=$2;
+};
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"blockIndex",{},smalltalk.LexicalScope)})},
+args: [],
+source: "blockIndex\x0a\x09^ blockIndex ifNil: [ 0 ]",
+messageSends: ["ifNil:"],
+referencedClasses: []
+}),
+smalltalk.LexicalScope);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "blockIndex:",
+category: 'accessing',
+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)})},
+args: ["anInteger"],
+source: "blockIndex: anInteger \x0a\x09blockIndex := anInteger",
+messageSends: [],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -138,12 +201,12 @@ var $1;
 $1=_st(self._isInlined())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._outerScope())._canInlineNonLocalReturns();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},smalltalk.LexicalScope)})},
 args: [],
 source: "canInlineNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canInlineNonLocalReturns ]",
-messageSends: ["and:", "canInlineNonLocalReturns", "outerScope", "isInlined"],
+messageSends: ["and:", "isInlined", "canInlineNonLocalReturns", "outerScope"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -207,16 +270,20 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._instruction())._notNil())._and_((function(){
+var $3,$2,$4,$1;
+$3=self._instruction();
+$ctx1.sendIdx["instruction"]=1;
+$2=_st($3)._notNil();
+$1=_st($2)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(self._instruction())._isInlined();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$4=self._instruction();
+return _st($4)._isInlined();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 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:", "isInlined", "instruction", "notNil"],
+messageSends: ["and:", "notNil", "instruction", "isInlined"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -245,26 +312,28 @@ fn: function (aNode){
 var self=this;
 var lookup;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$3,$4;
 lookup=self._bindingFor_(aNode);
 $1=lookup;
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $2=self._outerScope();
-if(($receiver = $2) == nil || $receiver == undefined){
+$ctx1.sendIdx["outerScope"]=1;
+if(($receiver = $2) == nil || $receiver == null){
 lookup=$2;
 } else {
-lookup=_st(self._outerScope())._lookupVariable_(aNode);
+$3=self._outerScope();
+lookup=_st($3)._lookupVariable_(aNode);
 };
 lookup;
 } else {
 $1;
 };
-$3=lookup;
-return $3;
+$4=lookup;
+return $4;
 }, 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:", "lookupVariable:", "outerScope"],
+messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -276,18 +345,20 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$3,$1;
 $2=self._outerScope();
-if(($receiver = $2) == nil || $receiver == undefined){
+$ctx1.sendIdx["outerScope"]=1;
+if(($receiver = $2) == nil || $receiver == null){
 $1=$2;
 } else {
-$1=_st(self._outerScope())._methodScope();
+$3=self._outerScope();
+$1=_st($3)._methodScope();
 };
 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:", "methodScope", "outerScope"],
+messageSends: ["ifNotNil:", "outerScope", "methodScope"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -385,24 +456,30 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4;
+var $1,$2,$4,$3,$7,$6,$5;
 $1=self._outerScope();
-if(($receiver = $1) == nil || $receiver == undefined){
+$ctx1.sendIdx["outerScope"]=1;
+if(($receiver = $1) == nil || $receiver == null){
 return (1);
 } else {
 $1;
 };
 $2=self._isInlined();
 if(smalltalk.assert($2)){
-$3=_st(self._outerScope())._scopeLevel();
+$4=self._outerScope();
+$ctx1.sendIdx["outerScope"]=2;
+$3=_st($4)._scopeLevel();
+$ctx1.sendIdx["scopeLevel"]=1;
 return $3;
 };
-$4=_st(_st(self._outerScope())._scopeLevel()).__plus((1));
-return $4;
+$7=self._outerScope();
+$6=_st($7)._scopeLevel();
+$5=_st($6).__plus((1));
+return $5;
 }, 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:", "scopeLevel", "isInlined", "+"],
+messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"],
 referencedClasses: []
 }),
 smalltalk.LexicalScope);
@@ -417,7 +494,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@temps"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@temps"]=_st($Dictionary())._new();
 $1=self["@temps"];
 } else {
@@ -444,12 +521,17 @@ 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);
+var $1,$3,$2;
+$1=self._iVars();
+$ctx1.sendIdx["iVars"]=1;
+_st($1)._at_put_(aString,_st($InstanceVar())._on_(aString));
+$3=self._iVars();
+$2=_st($3)._at_(aString);
+_st($2)._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:", "on:", "iVars", "scope:", "at:"],
+messageSends: ["at:put:", "iVars", "on:", "scope:", "at:"],
 referencedClasses: ["InstanceVar"]
 }),
 smalltalk.MethodLexicalScope);
@@ -483,7 +565,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},smalltalk.MethodLexicalScope)})},
 args: [],
 source: "allVariableNames\x0a\x09^ super allVariableNames, self iVars keys",
-messageSends: [",", "keys", "iVars", "allVariableNames"],
+messageSends: [",", "allVariableNames", "keys", "iVars"],
 referencedClasses: []
 }),
 smalltalk.MethodLexicalScope);
@@ -497,11 +579,11 @@ 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){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st(self._iVars())._at_ifAbsent_(_st(aNode)._value(),(function(){
 return smalltalk.withContext(function($ctx2) {
 return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 } else {
 $1=$2;
 };
@@ -509,7 +591,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:", "at:ifAbsent:", "value", "iVars", "bindingFor:"],
+messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "iVars", "value"],
 referencedClasses: []
 }),
 smalltalk.MethodLexicalScope);
@@ -576,7 +658,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@iVars"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@iVars"]=_st($Dictionary())._new();
 $1=self["@iVars"];
 } else {
@@ -616,7 +698,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@localReturn"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -653,9 +735,7 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self;
-return $1;
+return self;
 }, function($ctx1) {$ctx1.fill(self,"methodScope",{},smalltalk.MethodLexicalScope)})},
 args: [],
 source: "methodScope\x0a\x09^ self",
@@ -674,7 +754,7 @@ function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof Ordere
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@nonLocalReturns"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@nonLocalReturns"]=_st($OrderedCollection())._new();
 $1=self["@nonLocalReturns"];
 } else {
@@ -696,12 +776,12 @@ category: 'accessing',
 fn: function (){
 var self=this;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-function $PseudoVar(){return smalltalk.PseudoVar||(typeof PseudoVar=="undefined"?nil:PseudoVar)}
 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){
+if(($receiver = $1) == nil || $receiver == null){
 self["@pseudoVars"]=_st($Dictionary())._new();
 self["@pseudoVars"];
 _st(_st(_st($Smalltalk())._current())._pseudoVariableNames())._do_((function(each){
@@ -710,7 +790,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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 } else {
 $1;
 };
@@ -719,8 +799,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:", "at:put:", "scope:", "methodScope", "on:", "yourself", "pseudoVariableNames", "current"],
-referencedClasses: ["Dictionary", "PseudoVar", "Smalltalk"]
+messageSends: ["ifNil:", "new", "do:", "pseudoVariableNames", "current", "at:put:", "scope:", "on:", "methodScope", "yourself"],
+referencedClasses: ["Dictionary", "Smalltalk", "PseudoVar"]
 }),
 smalltalk.MethodLexicalScope);
 
@@ -733,7 +813,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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope},smalltalk.MethodLexicalScope)})},
 args: ["aScope"],
 source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
@@ -752,7 +832,7 @@ function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof Ordere
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@unknownVariables"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@unknownVariables"]=_st($OrderedCollection())._new();
 $1=self["@unknownVariables"];
 } else {
@@ -965,7 +1045,7 @@ var $1,$2,$3;
 $1=_st(self._isArgVar())._or_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._isPseudoVar();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 if(smalltalk.assert($1)){
 $2=_st($InvalidAssignmentError())._new();
 _st($2)._variableName_(self._name());
@@ -975,7 +1055,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:", "variableName:", "name", "new", "signal", "or:", "isPseudoVar", "isArgVar"],
+messageSends: ["ifTrue:", "or:", "isArgVar", "isPseudoVar", "variableName:", "new", "name", "signal"],
 referencedClasses: ["InvalidAssignmentError"]
 }),
 smalltalk.ScopeVar);
@@ -1070,8 +1150,10 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("$".__comma(self._name())).__comma("()");
+var $2,$1;
+$2="$".__comma(self._name());
+$1=_st($2).__comma("()");
+$ctx1.sendIdx[","]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.ClassRefVar)})},
 args: [],
@@ -1108,8 +1190,10 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st("self[\x22@".__comma(self._name())).__comma("\x22]");
+var $2,$1;
+$2="self[\x22@".__comma(self._name());
+$1=_st($2).__comma("\x22]");
+$ctx1.sendIdx[","]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"alias",{},smalltalk.InstanceVar)})},
 args: [],
@@ -1215,7 +1299,7 @@ smalltalk.UnknownVar);
 
 
 
-smalltalk.addClass('SemanticAnalyzer', smalltalk.NodeVisitor, ['currentScope', 'theClass', 'classReferences', 'messageSends', 'superSends'], '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({
@@ -1227,7 +1311,7 @@ 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){
+if(($receiver = $2) == nil || $receiver == null){
 self["@classReferences"]=_st($Set())._new();
 $1=self["@classReferences"];
 } else {
@@ -1269,28 +1353,34 @@ category: 'error handling',
 fn: function (aNode){
 var self=this;
 var identifier;
-function $UnknownVariableError(){return smalltalk.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
 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;
+var $1,$2,$3,$4,$5,$6,$7;
 identifier=_st(aNode)._value();
+$ctx1.sendIdx["value"]=1;
 $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)})}));
+}, 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;
+$3=$2;
+$4=_st(aNode)._value();
+$ctx1.sendIdx["value"]=2;
+_st($3)._variableName_($4);
+$5=_st($2)._signal();
+$5;
 } else {
-_st(_st(_st(self["@currentScope"])._methodScope())._unknownVariables())._add_(_st(aNode)._value());
+$6=_st(_st(self["@currentScope"])._methodScope())._unknownVariables();
+$7=_st(aNode)._value();
+_st($6)._add_($7);
 };
 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:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope", "and:", "isVariableGloballyUndefined:", "not", "includes:", "globalJsVariables", "current"],
-referencedClasses: ["UnknownVariableError", "Smalltalk"]
+messageSends: ["value", "ifTrue:ifFalse:", "and:", "not", "includes:", "globalJsVariables", "current", "isVariableGloballyUndefined:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope"],
+referencedClasses: ["Smalltalk", "UnknownVariableError"]
 }),
 smalltalk.SemanticAnalyzer);
 
@@ -1320,7 +1410,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@messageSends"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@messageSends"]=_st($Dictionary())._new();
 $1=self["@messageSends"];
 } else {
@@ -1394,6 +1484,32 @@ referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "nextBlockIndex",
+category: 'private',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
+$1=self["@blockIndex"];
+if(($receiver = $1) == nil || $receiver == null){
+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)})},
+args: [],
+source: "nextBlockIndex\x0a\x09blockIndex ifNil: [ blockIndex := 0 ].\x0a\x09\x0a\x09blockIndex := blockIndex + 1.\x0a\x09^ blockIndex",
+messageSends: ["ifNil:", "+"],
+referencedClasses: []
+}),
+smalltalk.SemanticAnalyzer);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "popScope",
@@ -1403,7 +1519,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 $1=self["@currentScope"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
 self["@currentScope"]=_st(self["@currentScope"])._outerScope();
@@ -1444,7 +1560,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@superSends"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@superSends"]=_st($Dictionary())._new();
 $1=self["@superSends"];
 } else {
@@ -1502,7 +1618,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 $1=_st(self["@currentScope"])._lookupVariable_(aString);
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
 self._errorShadowingVariable_(aString);
@@ -1510,7 +1626,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:", "errorShadowingVariable:", "lookupVariable:"],
+messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1542,17 +1658,18 @@ 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)})}));
+}, 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)})},
 args: ["aNode"],
-source: "visitBlockNode: aNode\x0a\x09self pushScope: self newBlockScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\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",
-messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "do:", "validateVariableScope:", "addArg:", "parameters", "visitBlockNode:", "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: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1564,49 +1681,27 @@ category: 'visiting',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(_st(aNode)._nodes())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._receiver_(_st(aNode)._receiver());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+var $3,$2,$1,$4;
 smalltalk.SemanticAnalyzer.superclass.fn.prototype._visitCascadeNode_.apply(_st(self), [aNode]);
-$1=_st(_st(_st(aNode)._nodes())._first())._superSend();
+$3=_st(aNode)._nodes();
+$ctx1.sendIdx["nodes"]=1;
+$2=_st($3)._first();
+$1=_st($2)._superSend();
 if(smalltalk.assert($1)){
-_st(_st(aNode)._nodes())._do_((function(each){
+$4=_st(aNode)._nodes();
+_st($4)._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._superSend_(true);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
 args: ["aNode"],
-source: "visitCascadeNode: aNode\x0a\x09\x22Populate the receiver into all children\x22\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09each receiver: aNode receiver ].\x0a\x09super visitCascadeNode: aNode.\x0a\x09aNode nodes first superSend ifTrue: [\x0a\x09\x09aNode nodes do: [ :each | each superSend: true ]]",
-messageSends: ["do:", "receiver:", "receiver", "nodes", "visitCascadeNode:", "ifTrue:", "superSend:", "superSend", "first"],
+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: []
 }),
 smalltalk.SemanticAnalyzer);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "visitClassReferenceNode:",
-category: 'visiting',
-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)})},
-args: ["aNode"],
-source: "visitClassReferenceNode: aNode\x0a\x09self classReferences add: aNode value.\x0a\x09aNode binding: (ClassRefVar new name: aNode value; yourself)",
-messageSends: ["add:", "value", "classReferences", "binding:", "name:", "new", "yourself"],
-referencedClasses: ["ClassRefVar"]
-}),
-smalltalk.SemanticAnalyzer);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "visitMethodNode:",
@@ -1614,29 +1709,30 @@ category: 'visiting',
 fn: function (aNode){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1,$2,$3,$4;
 self._pushScope_(self._newMethodScope());
 _st(aNode)._scope_(self["@currentScope"]);
 _st(self["@currentScope"])._node_(aNode);
-_st(_st(self._theClass())._allInstanceVariableNames())._do_((function(each){
+$1=_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)})}));
-_st(_st(aNode)._arguments())._do_((function(each){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+$ctx1.sendIdx["do:"]=1;
+$2=_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)})}));
+}, 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());
+$3=aNode;
+_st($3)._classReferences_(self._classReferences());
+_st($3)._sendIndexes_(self._messageSends());
+$4=_st($3)._superSends_(_st(self._superSends())._keys());
 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:", "addIVar:", "allInstanceVariableNames", "theClass", "validateVariableScope:", "addArg:", "arguments", "visitMethodNode:", "classReferences:", "classReferences", "messageSends:", "keys", "messageSends", "superSends:", "superSends", "popScope"],
+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\x09sendIndexes: self messageSends;\x0a\x09\x09superSends: self superSends keys.\x0a\x09self popScope",
+messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "superSends:", "keys", "superSends", "popScope"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1660,7 +1756,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:", "localReturn:", "addNonLocalReturn:", "methodScope", "isMethodScope", "visitReturnNode:"],
+messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1674,34 +1770,70 @@ 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;
-$1=_st(_st(_st(aNode)._receiver())._value()).__eq("super");
+var $3,$2,$1,$4,$5,$6,$8,$9,$7,$11,$12,$10,$13,$15,$16,$14,$19,$20,$18,$17,$21,$24,$25,$23,$22;
+$3=_st(aNode)._receiver();
+$ctx1.sendIdx["receiver"]=1;
+$2=_st($3)._value();
+$1=_st($2).__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(){
+$4=_st(aNode)._receiver();
+$ctx1.sendIdx["receiver"]=2;
+_st($4)._value_("self");
+$5=self._superSends();
+$ctx1.sendIdx["superSends"]=1;
+$6=_st(aNode)._selector();
+$ctx1.sendIdx["selector"]=1;
+_st($5)._at_ifAbsentPut_($6,(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st($Set())._new();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(self._superSends())._at_(_st(aNode)._selector()))._add_(aNode);
+$ctx2.sendIdx["new"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+$ctx1.sendIdx["at:ifAbsentPut:"]=1;
+$8=self._superSends();
+$9=_st(aNode)._selector();
+$ctx1.sendIdx["selector"]=2;
+$7=_st($8)._at_($9);
+$ctx1.sendIdx["at:"]=1;
+_st($7)._add_(aNode);
+$ctx1.sendIdx["add:"]=1;
 } else {
-$2=_st(_st($IRSendInliner())._inlinedSelectors())._includes_(_st(aNode)._selector());
-if(smalltalk.assert($2)){
+$11=_st($IRSendInliner())._inlinedSelectors();
+$12=_st(aNode)._selector();
+$ctx1.sendIdx["selector"]=3;
+$10=_st($11)._includes_($12);
+if(smalltalk.assert($10)){
 _st(aNode)._shouldBeInlined_(true);
-_st(_st(aNode)._receiver())._shouldBeAliased_(true);
+$13=_st(aNode)._receiver();
+_st($13)._shouldBeAliased_(true);
 };
 };
-_st(self._messageSends())._at_ifAbsentPut_(_st(aNode)._selector(),(function(){
+$15=self._messageSends();
+$ctx1.sendIdx["messageSends"]=1;
+$16=_st(aNode)._selector();
+$ctx1.sendIdx["selector"]=4;
+$14=_st($15)._at_ifAbsentPut_($16,(function(){
 return smalltalk.withContext(function($ctx2) {
 return _st($Set())._new();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st(_st(self._messageSends())._at_(_st(aNode)._selector()))._add_(aNode);
-_st(aNode)._index_(_st(_st(self._messageSends())._at_(_st(aNode)._selector()))._size());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}));
+$19=self._messageSends();
+$ctx1.sendIdx["messageSends"]=2;
+$20=_st(aNode)._selector();
+$ctx1.sendIdx["selector"]=5;
+$18=_st($19)._at_($20);
+$ctx1.sendIdx["at:"]=2;
+$17=_st($18)._add_(aNode);
+$21=aNode;
+$24=self._messageSends();
+$25=_st(aNode)._selector();
+$23=_st($24)._at_($25);
+$22=_st($23)._size();
+_st($21)._index_($22);
 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 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:", "superSend:", "value:", "receiver", "at:ifAbsentPut:", "selector", "new", "superSends", "add:", "at:", "ifTrue:", "shouldBeInlined:", "shouldBeAliased:", "includes:", "inlinedSelectors", "=", "value", "messageSends", "index:", "size", "visitSendNode:"],
+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);
@@ -1717,12 +1849,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)})}));
+}, 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)})},
 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:", "validateVariableScope:", "addTemp:", "temps", "visitSequenceNode:"],
+messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"],
 referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer);
@@ -1733,26 +1865,52 @@ selector: "visitVariableNode:",
 category: 'visiting',
 fn: function (aNode){
 var self=this;
+var binding;
+function $ClassRefVar(){return smalltalk.ClassRefVar||(typeof ClassRefVar=="undefined"?nil:ClassRefVar)}
 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){
+var $1,$3,$2,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13;
+binding=_st(self["@currentScope"])._lookupVariable_(aNode);
+$1=binding;
+if(($receiver = $1) == nil || $receiver == null){
+$3=_st(aNode)._value();
+$ctx1.sendIdx["value"]=1;
+$2=_st($3)._isCapitalized();
+if(smalltalk.assert($2)){
+$4=_st($ClassRefVar())._new();
+$ctx1.sendIdx["new"]=1;
+$5=$4;
+$6=_st(aNode)._value();
+$ctx1.sendIdx["value"]=2;
+_st($5)._name_($6);
+$ctx1.sendIdx["name:"]=1;
+$7=_st($4)._yourself();
+$ctx1.sendIdx["yourself"]=1;
+binding=$7;
+binding;
+$8=self._classReferences();
+$9=_st(aNode)._value();
+$ctx1.sendIdx["value"]=3;
+_st($8)._add_($9);
+} else {
 self._errorUnknownVariable_(aNode);
-$4=_st($UnknownVar())._new();
-_st($4)._name_(_st(aNode)._value());
-$5=_st($4)._yourself();
-$2=$5;
+$10=_st($UnknownVar())._new();
+$11=$10;
+$12=_st(aNode)._value();
+_st($11)._name_($12);
+$13=_st($10)._yourself();
+binding=$13;
+binding;
+};
 } else {
-$2=$3;
+$1;
 };
-_st($1)._binding_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},smalltalk.SemanticAnalyzer)})},
+_st(aNode)._binding_(binding);
+return self}, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode,binding:binding},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:", "errorUnknownVariable:", "name:", "value", "new", "yourself", "lookupVariable:"],
-referencedClasses: ["UnknownVar"]
+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\x09| binding |\x0a\x09binding := currentScope lookupVariable: aNode.\x0a\x09\x0a\x09binding ifNil: [\x0a\x09\x09aNode value isCapitalized\x0a\x09\x09\x09ifTrue: [ \x22Capital letter variables might be globals.\x22\x0a\x09\x09\x09\x09binding := ClassRefVar new name: aNode value; yourself.\x0a\x09\x09\x09\x09self classReferences add: aNode value]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09self errorUnknownVariable: aNode.\x0a\x09\x09\x09\x09binding := UnknownVar new name: aNode value; yourself ] ].\x0a\x09\x09\x0a\x09aNode binding: binding.",
+messageSends: ["lookupVariable:", "ifNil:", "ifTrue:ifFalse:", "isCapitalized", "value", "name:", "new", "yourself", "add:", "classReferences", "errorUnknownVariable:", "binding:"],
+referencedClasses: ["ClassRefVar", "UnknownVar"]
 }),
 smalltalk.SemanticAnalyzer);
 
@@ -1778,4 +1936,4 @@ referencedClasses: []
 }),
 smalltalk.SemanticAnalyzer.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

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

@@ -1,1259 +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)})}));
-$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('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:", "codeGeneratorClass", "new", "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:", "targetClass", "compiler", "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)})}));
-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 $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
-return smalltalk.withContext(function($ctx1) { 
-self["@analyzer"]=_st($SemanticAnalyzer())._on_($Object());
-return self}, function($ctx1) {$ctx1.fill(self,"setUp",{},smalltalk.SemanticAnalyzerTest)})},
-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)})}),$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)})}),$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)})}),$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)})}),$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)})}),$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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 267 - 523
js/Compiler-Tests.js


+ 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)})}));
-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)})}));
-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)})}));
-$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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
-messageSends: ["with:", "asString", "h1", "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:", "asJQuery", "new"]}),
-smalltalk.Counter.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 13 - 8
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";
@@ -14,7 +15,7 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"decrease",{},smalltalk.Counter)})},
 args: [],
 source: "decrease\x0a\x09count := count - 1.\x0a\x09header contents: [:html | html with: count asString]",
@@ -34,7 +35,7 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"increase",{},smalltalk.Counter)})},
 args: [],
 source: "increase\x0a\x09count := count + 1.\x0a\x09header contents: [:html | html with: count asString]",
@@ -70,24 +71,28 @@ return smalltalk.withContext(function($ctx1) {
 var $1,$2,$3,$4,$5,$6;
 $1=_st(html)._h1();
 _st($1)._with_(_st(self["@count"])._asString());
+$ctx1.sendIdx["with:"]=1;
 $2=_st($1)._yourself();
 self["@header"]=$2;
 $3=_st(html)._button();
+$ctx1.sendIdx["button"]=1;
 _st($3)._with_("++");
+$ctx1.sendIdx["with:"]=2;
 $4=_st($3)._onClick_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._increase();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["onClick:"]=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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.Counter)})},
 args: ["html"],
 source: "renderOn: html\x0a\x09header := html h1\x0a\x09with: count asString;\x0a\x09yourself.\x0a\x09html button\x0a\x09with: '++';\x0a\x09onClick: [self increase].\x0a\x09html button\x0a\x09with: '--';\x0a\x09onClick: [self decrease]",
-messageSends: ["with:", "asString", "h1", "yourself", "button", "onClick:", "increase", "decrease"],
+messageSends: ["with:", "h1", "asString", "yourself", "button", "onClick:", "increase", "decrease"],
 referencedClasses: []
 }),
 smalltalk.Counter);
@@ -104,9 +109,9 @@ _st(self._new())._appendToJQuery_("body"._asJQuery());
 return self}, function($ctx1) {$ctx1.fill(self,"tryExample",{},smalltalk.Counter.klass)})},
 args: [],
 source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",
-messageSends: ["appendToJQuery:", "asJQuery", "new"],
+messageSends: ["appendToJQuery:", "new", "asJQuery"],
 referencedClasses: []
 }),
 smalltalk.Counter.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

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

@@ -1,406 +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('HLDebuggerContextSelected', 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.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('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);

+ 47 - 3
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(
@@ -133,7 +134,44 @@ smalltalk.addClass('HLPrintItRequested', smalltalk.HLCodeHandled, [], 'Helios-An
 smalltalk.HLPrintItRequested.comment="I am emitted by a `HLCodeWidget` before an object is printed.";
 
 
-smalltalk.addClass('HLDebuggerContextSelected', smalltalk.HLAnnouncement, ['context'], 'Helios-Announcements');
+smalltalk.addClass('HLDebuggerAnnouncement', smalltalk.HLAnnouncement, ['context'], 'Helios-Announcements');
+smalltalk.addMethod(
+smalltalk.method({
+selector: "context",
+category: 'accessing',
+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)})},
+args: [],
+source: "context\x0a\x09^ context",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLDebuggerAnnouncement);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "context:",
+category: 'accessing',
+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)})},
+args: ["aContext"],
+source: "context: aContext\x0a\x09context := aContext",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLDebuggerAnnouncement);
+
+
+
+smalltalk.addClass('HLDebuggerContextSelected', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
 smalltalk.addMethod(
 smalltalk.method({
 selector: "context",
@@ -170,6 +208,12 @@ smalltalk.HLDebuggerContextSelected);
 
 
 
+smalltalk.addClass('HLDebuggerStepped', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
+
+
+smalltalk.addClass('HLDebuggerWhere', smalltalk.HLDebuggerAnnouncement, [], 'Helios-Announcements');
+
+
 smalltalk.addClass('HLDiveRequested', smalltalk.HLAnnouncement, [], 'Helios-Announcements');
 
 
@@ -534,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 $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-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:", "model", "new", "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)})}));
-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:", "model", "new", "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:", "model", "new", "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:", "renderPanesOn:", "with:", "codeWidget", "showComment", "model"]}),
-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:", "new", "announcer"]}),
-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:", "new", "announcer"]}),
-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:", "new", "announcer"]}),
-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:", "new", "announcer"]}),
-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:", "new", "announcer"]}),
-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:", "new", "announcer"]}),
-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:", "theNonMetaClass", "selectedClass", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"showComment:",{aBoolean:aBoolean},smalltalk.HLBrowserModel)})},
-messageSends: ["withChangesDo:", "announce:", "new", "announcer"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"showInstance:",{aBoolean:aBoolean},smalltalk.HLBrowserModel)})},
-messageSends: ["withChangesDo:", "ifNotNil:", "selectedClass:", "ifTrue:ifFalse:", "theNonMetaClass", "selectedClass", "theMetaClass", "announce:", "new", "announcer"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"invalidateChildrenSelector:",{aSelector:aSelector},smalltalk.HLClassCache)})},
-messageSends: ["do:", "removeSelector:", "cacheFor:", "selectorsCache", "invalidateChildrenSelector:", "subclasses", "theClass"]}),
-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:", "removeSelector:", "cacheFor:", "superclass", "theClass", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverridden:",{aMethod:aMethod},smalltalk.HLClassCache)})},
-messageSends: ["at:ifAbsentPut:", "selector", "isOverridden", "overriddenCache"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isOverride:",{aMethod:aMethod},smalltalk.HLClassCache)})},
-messageSends: ["at:ifAbsentPut:", "selector", "isOverride", "overrideCache"]}),
-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)})}));
-_st(self._overrideCache())._removeKey_ifAbsent_(aSelector,(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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:", "new", "announcer", "model"]}),
-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:", "new", "announcer", "model"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"getChildrenOf:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["select:", "=", "superclass", "items"]}),
-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)})}));
-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)})}));
-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:", "includes:", "items", "=", "selectedPackage", "model", "package", "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:", "=", "selectedPackage", "model", "package", "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)})}));
-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:", "=", "selectedPackage", "model", "package", "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:", "=", "selectedPackage", "model", "package", "theClass", "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:", "activateItem:", "focus", "hasFocus"]}),
-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)})})));
-_st($3)._with_("Instance");
-$5=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._showInstance_(true);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$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)})})));
-_st($6)._with_("Class");
-$8=_st($6)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._showInstance_(false);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $8;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}));
-checkbox=$12;
-checkbox;
-return _st(html)._with_("Doc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "streamContents:", "nextPutAll:", "ifTrue:", "showInstance", "button", "onClick:", "showInstance:", "showClass", "label", "type:", "input", "toggleShowComment", "at:put:", "showComment"]}),
-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)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._activateListItem_(_st(li)._asJQuery());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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)})}));
-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:", "cssClassForItem:", "tag:", "renderItemLabel:level:on:", "a", "onClick:", "activateListItem:", "asJQuery", "do:", "renderItem:level:on:", "+", "getChildrenOf:"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItem:on:",{aClass:aClass,html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["renderItem:on:", "do:", "renderItem:level:on:", "getChildrenOf:"]}),
-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)})}));
-return _st(str)._nextPutAll_(_st(aClass)._name());
-}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:level:on:",{aClass:aClass,anInteger:anInteger,html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["html:", "streamContents:", "timesRepeat:", "nextPutAll:", "name", "asJQuery", "span"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderListOn:",{html:html},smalltalk.HLClassesListWidget)})},
-messageSends: ["do:", "renderItem:on:", "getRootClassesOf:", "items"]}),
-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)})})))._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)})}));
-};
-_st($1)._items_($2);
-return self}, function($ctx1) {$ctx1.fill(self,"setItemsForPackage:",{aPackage:aPackage},smalltalk.HLClassesListWidget)})},
-messageSends: ["items:", "ifNil:ifNotNil:", "sort:", "<", "name", "asArray", "asSet", "collect:", "theNonMetaClass", "classes"]}),
-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:", "not", "showComment", "model"]}),
-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)})}));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"documentation",{},smalltalk.HLDocumentationWidget)})},
-messageSends: ["ifNil:ifNotNil:", "ifEmpty:", "defaultDocumentation", "comment", "selectedItem"]}),
-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:", "defaultHead", "name", "selectedItem"]}),
-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:", "refresh", "=", "theNonMetaClass", "selectedClass", "model", "theClass"]}),
-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)})}));
-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)})}));
-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)})}));
-return $5;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "renderInheritanceOn:", "with:", "h1", "class:", "button", "onClick:", "editDocumentation", "html:", "makeHtml:", "documentation", "new", "at:", "div", "asJQuery", "selectedItem"]}),
-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)})}));
-return $5;
-};
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderInheritanceOn:",{html:html},smalltalk.HLDocumentationWidget)})},
-messageSends: ["class:", "div", "with:", "ifNil:ifNotNil:", "em", "name", "superclass", "selectedItem", "a", "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:", "theNonMetaClass", "selectedClass", "model"]}),
-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:", "methods", "methodsInProtocol:", "=", "allProtocol"]}),
-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:", "=", "methodClass", "method", "selectedClass", "model", "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:", "=", "method", "selectedMethod", "model", "selectedItem:", "selectItem:", "setItemsForSelectedProtocol", "refresh", "allProtocol", "selectedProtocol"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-$1=self;
-throw $early=[$1];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}));
-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:", "=", "selector", "items", "ifNotNil:", "ifTrue:", "selectedItem:", "selectItem:", "and:", "selectedItem", "selectedClass", "model", "methodClass", "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:", "selector", "isCompiledMethod", "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:", "=", "theClass", "selectedClass", "model", "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:", "=", "theClass", "selectedClass", "model", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overrideSelectors",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["at:ifAbsentPut:", "inject:into:", "new", "addAll:", "selectors", "yourself", "allSuperclasses", "selectedClass", "model", "selectorsCache"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"overridenSelectors",{},smalltalk.HLMethodsListWidget)})},
-messageSends: ["at:ifAbsentPut:", "inject:into:", "new", "addAll:", "selectors", "yourself", "allSubclasses", "selectedClass", "model", "selectorsCache"]}),
-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)})}));
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLMethodsListWidget)})},
-messageSends: ["ifFalse:ifTrue:", "class:", "div", "with:", "renderContentOn:", "showInstance", "model"]}),
-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)})})))._sorted();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectorsInProtocol:",{aString:aString},smalltalk.HLMethodsListWidget)})},
-messageSends: ["sorted", "collect:", "selector", "methodsInProtocol:"]}),
-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:", "new", "announcer", "model"]}),
-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=self["@items"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"initializeItems",{},smalltalk.HLPackagesListWidget)})},
-messageSends: ["sort:", "<", "name", "packages", "model"]}),
-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:", "initializeItems", "refresh", "includes:", "package", "theClass", "items"]}),
-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:", "activateItem:", "focus", "hasFocus"]}),
-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:", "selectedItem:", "selectItem:", "selectedProtocol", "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:", "activateItem:", "focus", "hasFocus"]}),
-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)})}));
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["ifFalse:ifTrue:", "class:", "div", "with:", "renderContentOn:", "showInstance", "model"]}),
-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)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"cacheFor:",{aClass:aClass},smalltalk.HLSelectorsCache)})},
-messageSends: ["ifNil:", "at:ifAbsentPut:", "name", "newCacheFor:", "classesCache"]}),
-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:", "selector", "cacheFor:", "methodClass"]}),
-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 $MethodAdded(){return smalltalk.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
-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;
-$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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 258 - 176
js/Helios-Browser.js


+ 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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLEditCommentCommand)})},
-messageSends: ["and:", "notNil", "selectedClass", "model", "showComment"]}),
-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:", "not", "showComment", "model"]}),
-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);

+ 21 - 9
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');
 
@@ -354,16 +355,21 @@ category: 'testing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._showComment())._and_((function(){
+var $3,$2,$5,$4,$1;
+$3=self._model();
+$ctx1.sendIdx["model"]=1;
+$2=_st($3)._showComment();
+$1=_st($2)._and_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._model())._selectedClass())._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$5=self._model();
+$4=_st($5)._selectedClass();
+return _st($4)._notNil();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"isActive",{},smalltalk.HLEditCommentCommand)})},
 args: [],
 source: "isActive\x0a\x09^ self model showComment and: [ self model selectedClass notNil ]",
-messageSends: ["and:", "notNil", "selectedClass", "model", "showComment"],
+messageSends: ["and:", "showComment", "model", "notNil", "selectedClass"],
 referencedClasses: []
 }),
 smalltalk.HLEditCommentCommand);
@@ -445,11 +451,17 @@ category: 'executing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-_st(self._model())._showComment_(_st(_st(self._model())._showComment())._not());
+var $1,$4,$3,$2;
+$1=self._model();
+$ctx1.sendIdx["model"]=1;
+$4=self._model();
+$3=_st($4)._showComment();
+$2=_st($3)._not();
+_st($1)._showComment_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLToggleClassCommentCommand)})},
 args: [],
 source: "execute\x0a\x09self model showComment: self model showComment not",
-messageSends: ["showComment:", "not", "showComment", "model"],
+messageSends: ["showComment:", "model", "not", "showComment"],
 referencedClasses: []
 }),
 smalltalk.HLToggleClassCommentCommand);
@@ -589,4 +601,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:", "asGroupBinding", "asActionBinding", "isBindingGroup"]}),
-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=classes;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"concreteClasses",{classes:classes},smalltalk.HLCommand.klass)})},
-messageSends: ["new", "ifTrue:", "add:", "isConcrete", "do:", "addAll:", "concreteClasses", "subclasses"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"registerConcreteClassesOn:",{aBinding:aBinding,newBinding:newBinding},smalltalk.HLCommand.klass)})},
-messageSends: ["ifTrue:ifFalse:", "registerOn:", "isConcrete", "do:", "registerConcreteClassesOn:", "subclasses"]}),
-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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"registerConcreteClassesOn:for:",{aBinding:aBinding,aModel:aModel,newBinding:newBinding},smalltalk.HLModelCommand.klass)})},
-messageSends: ["ifTrue:ifFalse:", "registerOn:for:", "and:", "isValidFor:", "isConcrete", "do:", "registerConcreteClassesOn:for:", "subclasses"]}),
-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)})}));
-_st($2)._confirmCallback_((function(tab){
-return smalltalk.withContext(function($ctx2) {
-return _st(tab)._focus();
-}, function($ctx2) {$ctx2.fillBlock({tab:tab},$ctx1)})}));
-_st($2)._cancelCallback_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(activeTab)._activate();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$3=_st($2)._show();
-$1=$3;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"execute",{activeTab:activeTab},smalltalk.HLSwitchTabCommand)})},
-messageSends: ["selectedTab", "tabs:", "tabs", "new", "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);

+ 23 - 18
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(
@@ -42,7 +43,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"asBinding",{},smalltalk.HLCommand)})},
 args: [],
 source: "asBinding\x0a\x09^ self isBindingGroup\x0a\x09\x09ifTrue: [ self asGroupBinding ]\x0a\x09\x09ifFalse: [ self asActionBinding ]",
-messageSends: ["ifTrue:ifFalse:", "asGroupBinding", "asActionBinding", "isBindingGroup"],
+messageSends: ["ifTrue:ifFalse:", "isBindingGroup", "asGroupBinding", "asActionBinding"],
 referencedClasses: []
 }),
 smalltalk.HLCommand);
@@ -381,13 +382,13 @@ _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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 $2=classes;
 return $2;
 }, function($ctx1) {$ctx1.fill(self,"concreteClasses",{classes:classes},smalltalk.HLCommand.klass)})},
 args: [],
 source: "concreteClasses\x0a\x09| classes |\x0a\x09\x0a\x09classes := OrderedCollection new.\x0a\x09\x0a\x09self isConcrete\x0a\x09\x09ifTrue: [ classes add: self ].\x0a\x09\x09\x0a\x09self subclasses do: [ :each | \x0a\x09\x09classes addAll: each concreteClasses ].\x0a\x09\x09\x0a\x09^ classes",
-messageSends: ["new", "ifTrue:", "add:", "isConcrete", "do:", "addAll:", "concreteClasses", "subclasses"],
+messageSends: ["new", "ifTrue:", "isConcrete", "add:", "do:", "subclasses", "addAll:", "concreteClasses"],
 referencedClasses: ["OrderedCollection"]
 }),
 smalltalk.HLCommand.klass);
@@ -512,11 +513,11 @@ newBinding;
 _st(self._subclasses())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._registerConcreteClassesOn_(newBinding);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"registerConcreteClassesOn:",{aBinding:aBinding,newBinding:newBinding},smalltalk.HLCommand.klass)})},
 args: ["aBinding"],
 source: "registerConcreteClassesOn: aBinding\x0a\x09| newBinding |\x0a\x09\x0a\x09self isConcrete\x0a\x09\x09ifTrue: [ newBinding := self registerOn: aBinding ]\x0a\x09\x09ifFalse: [ newBinding := aBinding ].\x0a\x09\x09\x0a\x09self subclasses do: [ :each | each registerConcreteClassesOn: newBinding ]",
-messageSends: ["ifTrue:ifFalse:", "registerOn:", "isConcrete", "do:", "registerConcreteClassesOn:", "subclasses"],
+messageSends: ["ifTrue:ifFalse:", "isConcrete", "registerOn:", "do:", "subclasses", "registerConcreteClassesOn:"],
 referencedClasses: []
 }),
 smalltalk.HLCommand.klass);
@@ -658,7 +659,7 @@ var $1;
 $1=_st(self._isConcrete())._and_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._isValidFor_(aModel);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 if(smalltalk.assert($1)){
 newBinding=self._registerOn_for_(aBinding,aModel);
 newBinding;
@@ -669,11 +670,11 @@ 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)})}));
+}, 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)})},
 args: ["aBinding", "aModel"],
 source: "registerConcreteClassesOn: aBinding for: aModel\x0a\x09| newBinding |\x0a\x09\x0a\x09(self isConcrete and: [ self isValidFor: aModel ])\x0a\x09\x09ifTrue: [ newBinding := self registerOn: aBinding for: aModel ]\x0a\x09\x09ifFalse: [ newBinding := aBinding ].\x0a\x09\x09\x0a\x09self subclasses do: [ :each |\x0a\x09\x09each registerConcreteClassesOn: newBinding for: aModel ]",
-messageSends: ["ifTrue:ifFalse:", "registerOn:for:", "and:", "isValidFor:", "isConcrete", "do:", "registerConcreteClassesOn:for:", "subclasses"],
+messageSends: ["ifTrue:ifFalse:", "and:", "isConcrete", "isValidFor:", "registerOn:for:", "do:", "subclasses", "registerConcreteClassesOn:for:"],
 referencedClasses: []
 }),
 smalltalk.HLModelCommand.klass);
@@ -850,30 +851,34 @@ var self=this;
 var activeTab;
 function $HLTabSelectionWidget(){return smalltalk.HLTabSelectionWidget||(typeof HLTabSelectionWidget=="undefined"?nil:HLTabSelectionWidget)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$1;
+var $2,$3,$4,$5,$1;
 activeTab=self._selectedTab();
+$ctx1.sendIdx["selectedTab"]=1;
 $2=_st($HLTabSelectionWidget())._new();
 _st($2)._tabs_(self._tabs());
-_st($2)._selectedTab_(self._selectedTab());
+$3=$2;
+$4=self._selectedTab();
+_st($3)._selectedTab_($4);
 _st($2)._selectCallback_((function(tab){
 return smalltalk.withContext(function($ctx2) {
 return _st(tab)._activate();
-}, function($ctx2) {$ctx2.fillBlock({tab:tab},$ctx1)})}));
+$ctx2.sendIdx["activate"]=1;
+}, 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)})}));
+}, 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=_st($2)._show();
-$1=$3;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+$5=_st($2)._show();
+$1=$5;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"execute",{activeTab:activeTab},smalltalk.HLSwitchTabCommand)})},
 args: [],
 source: "execute\x0a\x09| activeTab |\x0a\x09\x0a\x09activeTab := self selectedTab.\x0a\x09\x0a\x09^ HLTabSelectionWidget new\x0a\x09\x09tabs: self tabs;\x0a\x09\x09selectedTab: self selectedTab;\x0a\x09\x09selectCallback: [ :tab | tab activate ];\x0a\x09\x09confirmCallback: [ :tab | tab focus ];\x0a\x09\x09cancelCallback: [ activeTab activate ];\x0a\x09\x09show",
-messageSends: ["selectedTab", "tabs:", "tabs", "new", "selectedTab:", "selectCallback:", "activate", "confirmCallback:", "focus", "cancelCallback:", "show"],
+messageSends: ["selectedTab", "tabs:", "new", "tabs", "selectedTab:", "selectCallback:", "activate", "confirmCallback:", "focus", "cancelCallback:", "show"],
 referencedClasses: ["HLTabSelectionWidget"]
 }),
 smalltalk.HLSwitchTabCommand);
@@ -968,4 +973,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:", "input", "model"]}),
-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:", "input", "model"]}),
-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:", "name", "selectedClass", "model", "selector", "selectedMethod"]}),
-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: [",", "allSelectors", "model", "availableClassNames"]}),
-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:", "input", "model"]}),
-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:", "input", "model"]}),
-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:", "input", "model"]}),
-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:", "input", "model"]}),
-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:", "input", "model"]}),
-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);

+ 30 - 21
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(
@@ -239,7 +240,7 @@ _st(self._model())._copyClassTo_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLCopyClassCommand)})},
 args: [],
 source: "execute\x0a\x09self model copyClassTo: self input",
-messageSends: ["copyClassTo:", "input", "model"],
+messageSends: ["copyClassTo:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLCopyClassCommand);
@@ -391,7 +392,7 @@ _st(self._model())._openClassNamed_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLFindClassCommand)})},
 args: [],
 source: "execute\x0a\x09self model openClassNamed: self input",
-messageSends: ["openClassNamed:", "input", "model"],
+messageSends: ["openClassNamed:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLFindClassCommand);
@@ -506,11 +507,14 @@ category: 'defaults',
 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){
+var $3,$2,$5,$4,$1;
+$3=self._model();
+$ctx1.sendIdx["model"]=1;
+$2=_st($3)._selectedMethod();
+if(($receiver = $2) == nil || $receiver == null){
+$5=self._model();
+$4=_st($5)._selectedClass();
+if(($receiver = $4) == nil || $receiver == null){
 $1="";
 } else {
 var class_;
@@ -526,7 +530,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLFindReferencesCommand)})},
 args: [],
 source: "defaultInput\x0a\x09^ self model selectedMethod \x0a\x09\x09ifNil: [\x0a\x09\x09\x09self model selectedClass\x0a\x09\x09\x09\x09ifNil: [ '' ]\x0a\x09\x09\x09\x09ifNotNil: [ :class | class name ] ]\x0a\x09\x09ifNotNil: [ :method | method selector ]",
-messageSends: ["ifNil:ifNotNil:", "name", "selectedClass", "model", "selector", "selectedMethod"],
+messageSends: ["ifNil:ifNotNil:", "selectedMethod", "model", "selectedClass", "name", "selector"],
 referencedClasses: []
 }),
 smalltalk.HLFindReferencesCommand);
@@ -574,13 +578,18 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._model())._availableClassNames()).__comma(_st(self._model())._allSelectors());
+var $3,$2,$5,$4,$1;
+$3=self._model();
+$ctx1.sendIdx["model"]=1;
+$2=_st($3)._availableClassNames();
+$5=self._model();
+$4=_st($5)._allSelectors();
+$1=_st($2).__comma($4);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"inputCompletion",{},smalltalk.HLFindReferencesCommand)})},
 args: [],
 source: "inputCompletion\x0a\x09^ self model availableClassNames, self model allSelectors",
-messageSends: [",", "allSelectors", "model", "availableClassNames"],
+messageSends: [",", "availableClassNames", "model", "allSelectors"],
 referencedClasses: []
 }),
 smalltalk.HLFindReferencesCommand);
@@ -783,7 +792,7 @@ _st(self._model())._moveClassToPackage_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveClassToPackageCommand)})},
 args: [],
 source: "execute\x0a\x09self model moveClassToPackage: self input",
-messageSends: ["moveClassToPackage:", "input", "model"],
+messageSends: ["moveClassToPackage:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLMoveClassToPackageCommand);
@@ -985,7 +994,7 @@ _st(self._model())._moveMethodToClass_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveMethodToClassCommand)})},
 args: [],
 source: "execute\x0a\x09self model moveMethodToClass: self input",
-messageSends: ["moveMethodToClass:", "input", "model"],
+messageSends: ["moveMethodToClass:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLMoveMethodToClassCommand);
@@ -1118,7 +1127,7 @@ _st(self._model())._moveMethodToProtocol_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLMoveMethodToProtocolCommand)})},
 args: [],
 source: "execute\x0a\x09self model moveMethodToProtocol: self input",
-messageSends: ["moveMethodToProtocol:", "input", "model"],
+messageSends: ["moveMethodToProtocol:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLMoveMethodToProtocolCommand);
@@ -1621,12 +1630,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(_st(self._model())._selectedClass())._name();
+$1=_st(_st(_st(self._model())._selectedClass())._theNonMetaClass())._name();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultInput",{},smalltalk.HLRenameClassCommand)})},
 args: [],
-source: "defaultInput\x0a\x09^ self model selectedClass name",
-messageSends: ["name", "selectedClass", "model"],
+source: "defaultInput\x0a\x09^ self model selectedClass theNonMetaClass name",
+messageSends: ["name", "theNonMetaClass", "selectedClass", "model"],
 referencedClasses: []
 }),
 smalltalk.HLRenameClassCommand);
@@ -1658,7 +1667,7 @@ _st(self._model())._renameClassTo_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameClassCommand)})},
 args: [],
 source: "execute\x0a\x09self model renameClassTo: self input",
-messageSends: ["renameClassTo:", "input", "model"],
+messageSends: ["renameClassTo:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLRenameClassCommand);
@@ -1809,7 +1818,7 @@ _st(self._model())._renameProtocolTo_(self._input());
 return self}, function($ctx1) {$ctx1.fill(self,"execute",{},smalltalk.HLRenameProtocolCommand)})},
 args: [],
 source: "execute\x0a\x09self model renameProtocolTo: self input",
-messageSends: ["renameProtocolTo:", "input", "model"],
+messageSends: ["renameProtocolTo:", "model", "input"],
 referencedClasses: []
 }),
 smalltalk.HLRenameProtocolCommand);
@@ -1897,4 +1906,4 @@ referencedClasses: []
 }),
 smalltalk.HLRenameProtocolCommand.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

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

@@ -1,4055 +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 $HLChangeForbidden(){return smalltalk.HLChangeForbidden||(typeof HLChangeForbidden=="undefined"?nil:HLChangeForbidden)}
-function $HLAboutToChange(){return smalltalk.HLAboutToChange||(typeof HLAboutToChange=="undefined"?nil:HLAboutToChange)}
-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)})}))._on_do_($HLChangeForbidden(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withChangesDo:",{aBlock:aBlock},smalltalk.HLModel)})},
-messageSends: ["on:do:", "announce:", "actionBlock:", "new", "announcer", "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:", "selectedClass", "environment", "announce:", "theClass:", "new", "variableName:", "yourself", "announcer"]}),
-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:", "selectedClass", "environment"]}),
-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:", "selectedPackage", "environment"]}),
-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:", "protocol", "selectedMethod", "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:", "selectedClass", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString,method:method},smalltalk.HLToolModel)})},
-messageSends: ["withCompileErrorHandling:", "compileMethod:for:protocol:", "selectedClass", "compilationProtocol", "environment", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"copyClassTo:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "copyClass:to:", "theNonMetaClass", "selectedClass", "environment"]}),
-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:", "error:", "new", "yourself", "announcer"]}),
-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:", "size", "first", "announce:", "line:", "asNumber", "new", "column:", "message:", "error:", "yourself", "announcer"]}),
-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:", "error:", "new", "yourself", "announcer"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveClassToPackage:",{aPackageName:aPackageName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveClass:toPackage:", "theNonMetaClass", "selectedClass", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethodToClass:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveMethod:toClass:", "selectedMethod", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"moveMethodToProtocol:",{aProtocol:aProtocol},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "moveMethod:toProtocol:", "selectedMethod", "environment"]}),
-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)})}));
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeClass",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", ",", "name", "selectedClass", "removeClass:", "environment", "manager"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeMethod",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", ",", "selector", "selectedMethod", "name", "methodClass", "removeMethod:", "environment", "manager"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeProtocol",{},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "confirm:ifTrue:", ",", "selectedProtocol", "removeProtocol:from:", "selectedClass", "environment", "manager"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renameClassTo:",{aClassName:aClassName},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "renameClass:to:", "theNonMetaClass", "selectedClass", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renameProtocolTo:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["withChangesDo:", "renameProtocol:to:in:", "selectedProtocol", "selectedClass", "environment"]}),
-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:", "new", "announcer", "ifTrue:ifFalse:", "compileClassDefinition:", "compileMethod:", "shouldCompileClassDefinition:"]}),
-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:", "new", "announcer"]}),
-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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedClass:",{aClass:aClass},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "and:", "isNil", "=", "selectedClass", "withChangesDo:", "selectedProtocol:", "ifNil:ifNotNil:", "selectedPackage:", "package", "theNonMetaClass", "ifTrue:ifFalse:", "theMetaClass", "showInstance", "announce:", "on:", "announcer"]}),
-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)})}));
-};
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"selectedMethod",{},smalltalk.HLToolModel)})},
-messageSends: ["ifNotNil:", "at:ifAbsent:", "methodDictionary", "selectedClass"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedMethod:",{aCompiledMethod:aCompiledMethod},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "ifNil:ifNotNil:", "methodClass", "package", "theNonMetaClass", "selector", "announce:", "on:", "announcer"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedPackage:",{aPackage:aPackage},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "selectedClass:", "announce:", "on:", "announcer"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"selectedProtocol:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["ifTrue:", "=", "withChangesDo:", "selectedMethod:", "announce:", "on:", "announcer"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shouldCompileClassDefinition:",{aString:aString},smalltalk.HLToolModel)})},
-messageSends: ["or:", "match:", "isNil", "selectedClass"]}),
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}),$UnknownVariableError(),(function(ex){
-return smalltalk.withContext(function($ctx3) {
-return self._handleUnkownVariableError_(ex);
-}, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$CompilerError(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return self._handleCompileError_(ex);
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"withCompileErrorHandling:",{aBlock:aBlock},smalltalk.HLToolModel)})},
-messageSends: ["evaluate:on:do:", "handleParseError:", "environment", "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)})}))._appendToJQuery_("body"._asJQuery());
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-return _st("#helper"._asJQuery())._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._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:", ",", "first:", "label", ">", "size"]}),
-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:", "focus", "widget", "canHaveFocus"]}),
-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)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-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 $HLTabWidget(){return smalltalk.HLTabWidget||(typeof HLTabWidget=="undefined"?nil:HLTabWidget)}
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-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:", "on:labelled:", "tabLabel", "class", "current"]}),
-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)})}))._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)})}))._appendToJQuery_(_st(self["@wrapper"])._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLWidget)})},
-messageSends: ["div", "appendToJQuery:", "asJQuery", "renderContentOn:"]}),
-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 $HLTabWidget(){return smalltalk.HLTabWidget||(typeof HLTabWidget=="undefined"?nil:HLTabWidget)}
-function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"?nil:HLManager)}
-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:", "on:labelled:", "new", "tabLabel", "current"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"hasFocus",{},smalltalk.HLFocusableWidget)})},
-messageSends: ["and:", "hasClass:", "focusClass", "asJQuery", "wrapper", "notNil"]}),
-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)})}));
-$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)})}));
-$4=_st($3)._onFocus_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._wrapper())._asJQuery())._addClass_(self._focusClass());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLFocusableWidget)})},
-messageSends: ["class:", "div", "yourself", "with:", "renderContentOn:", "at:put:", "onBlur:", "removeClass:", "focusClass", "asJQuery", "wrapper", "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)})})))._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:", "asNumber", "attr:", "items", "ifFalse:", "selectItem:", "==", "selectedItem"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLListWidget)})},
-messageSends: ["activateListItem:", "next", "find:", "asJQuery", "wrapper", "ifEmpty:", "activateFirstListItem", "get"]}),
-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:", "scrollTop:", "-", "+", "top", "position", "scrollTop", "get:", "<", "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:", "ifNil:", "activateFirstListItem", "selectedItem", "isEmpty", "items"]}),
-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)})})))._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)})}));
-$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)})}));
-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)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._activateListItem_(_st(li)._asJQuery());
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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:", "cssClassForItem:", "tag:", "renderItemLabel:on:", "a", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderListOn:",{html:html},smalltalk.HLListWidget)})},
-messageSends: ["new", "do:", "renderItem:on:", "items"]}),
-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)})}));
-_st($1)._whileKeyDown_do_((40),(function(){
-return smalltalk.withContext(function($ctx2) {
-return self._activateNextListItem();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$2=_st($1)._rebindKeys();
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLListWidget)})},
-messageSends: ["whileKeyDown:do:", "activatePreviousListItem", "on:", "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:", "focus", "next"]}),
-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:", "focus", "previous"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLNavigationListWidget)})},
-messageSends: ["setupKeyBindings", "keydown:", "ifTrue:", "nextFocus", "=", "which", "previousFocus", "asJQuery", "wrapper"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{anItem:anItem},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "activateListItem:", "model"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateNextListItem",{},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "activateNextListItem", "model"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activatePreviousListItem",{},smalltalk.HLToolListWidget)})},
-messageSends: ["withChangesDo:", "activatePreviousListItem", "model"]}),
-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)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each)._for_(self._model());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"menuCommands",{},smalltalk.HLToolListWidget)})},
-messageSends: ["select:", "and:", "isActive", "isAction", "=", "commandCategory", "category", "collect:", "for:", "model", "isValidFor:", "concreteClasses"]}),
-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)})}));
-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)})}));
-$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)})}));
-return $10;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4)})}));
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $8;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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:", "menuLabel", "onClick:", "execute:", "li"]}),
-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)})}))._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)})});
-} 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) { 
-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,"renderItemLabel:on:",{aTab:aTab,html:html},smalltalk.HLTabListWidget)})},
-messageSends: ["class:", "cssClass", "span", "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=parent;
-if(($receiver = $2) == nil || $receiver == undefined){
-$3=_st($Environment())._new();
-return $3;
-} else {
-$2;
-};
-$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:", "parent", "opener", "new", "at:"]}),
-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)})})));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"removeTab:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["ifFalse:", "includes:", "tabs", "removeFromHistory:", "remove:", "flushBindings", "keyBinder", "remove", "refresh", "ifNotEmpty:", "activate", "last", "history"]}),
-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)})}));
-$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)})})))._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)})})))._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)})}));
-return $8;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4)})}));
-}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderAddOn:",{html:html},smalltalk.HLManager)})},
-messageSends: ["class:", "li", "with:", "a", "at:put:", "tag:", "ul", "do:", "tabLabel", "onClick:", "openAsTab", "sorted:", "<", "tabPriority", "select:", "canBeOpenAsTab", "withAllSubclasses"]}),
-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)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-$9=_st(html)._span();
-_st($9)._class_(_st(each)._cssClass());
-$10=_st($9)._with_(_st(each)._displayLabel());
-return $10;
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4)})}));
-$11=_st($8)._onClick_((function(){
-return smalltalk.withContext(function($ctx5) {
-return _st(each)._activate();
-}, function($ctx5) {$ctx5.fillBlock({},$ctx4)})}));
-return $11;
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
-return $7;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}));
-return self._renderAddOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabsOn:",{html:html},smalltalk.HLManager)})},
-messageSends: ["class:", "ul", "with:", "do:", "ifTrue:ifFalse:", "isActive", "li", "onClick:", "removeTab:", "tag:", "cssClass", "span", "displayLabel", "a", "activate", "tabs", "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=aTab;
-_st($1)._show();
-$2=_st($1)._focus();
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{aTab:aTab},smalltalk.HLManager)})},
-messageSends: ["do:", "hide", "tabs", "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)})}));
-if(smalltalk.assert($1)){
-return false;
-};
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"clearKeydownEvent",{},smalltalk.HLManager.klass)})},
-messageSends: ["keydown:", "ifTrue:", "and:", "<=", "keyCode", ">=", "asJQuery"]}),
-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:", "asJQuery", "current", "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)})}))._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)})}));
-$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)})}));
-confirmButton=$6;
-return confirmButton;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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)})}));
-_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:", "renderButtonsOn:", "hasButtons", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLModalWidget)})},
-messageSends: ["keyup:", "ifTrue:", "cancel", "=", "asciiValue", "esc", "keyCode", "asJQuery"]}),
-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)})});
-} 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)})});
-} 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:", "confirmationString", "span"]}),
-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:", "val", "asJQuery", "actionBlock"]}),
-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:", "value", "asJQuery"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"flush",{},smalltalk.HLProgressWidget)})},
-messageSends: ["do:", "removeProgressBar:", "progressBars"]}),
-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:", "remove", "isVisible"]}),
-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)})}));
-_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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderMainOn:",{html:html},smalltalk.HLProgressWidget)})},
-messageSends: ["do:", "with:", "progressBars"]}),
-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:", "show", "isVisible"]}),
-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)})});
-} 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:", "selectedTab", "confirmCallback"]}),
-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)})});
-} 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:", "cssClass", "span", "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)})}));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return self._selectTab_(each);
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
-return $2;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabsOn:",{html:html},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["do:", "with:", "renderTab:on:", "a", "onClick:", "selectTab:", "li", "tabs"]}),
-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)})});
-} 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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},smalltalk.HLTabSelectionWidget)})},
-messageSends: ["setupKeyBindings", "keyup:", "ifTrue:", "confirm", "=", "asciiValue", "cr", "keyCode", "asJQuery"]}),
-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)})}));
-_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)})}))._valueWithTimeout_((10));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._remove();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((500));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"evaluateAt:",{anInteger:anInteger},smalltalk.HLProgressBarWidget)})},
-messageSends: ["updateProgress:", "*", "/", "size", "collection", "ifTrue:ifFalse:", "valueWithTimeout:", "value:", "at:", "workBlock", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLProgressBarWidget)})},
-messageSends: ["with:", "label", "span", "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:", ",", "asString", "asJQuery"]}),
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 294 - 177
js/Helios-Core.js


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

@@ -1,702 +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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._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)})}));
-$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:", "outerContext", "ifNotNil:", "and:", "isBlockContext", "notNil", "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:", "model", "new", "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)}
-return smalltalk.withContext(function($ctx1) { 
-_st(_st(self._model())._announcer())._on_send_to_($HLDebuggerContextSelected(),"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:", "on:", "context", "inspectorWidget"]}),
-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 $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-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:", "codeWidget", "on:", "model", "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, ['highlightedNode'], '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) { 
-var $1;
-_st(self["@editor"])._clearGutter_("stops");
-$1=self._highlightedNode();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-var node;
-node=$receiver;
-_st(self["@editor"])._removeLineClass_where_class_(_st(_st(_st(node)._position())._x()).__minus((1)),"background","highlighted");
-};
-return self}, function($ctx1) {$ctx1.fill(self,"clearHighlight",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["clearGutter:", "ifNotNil:", "removeLineClass:where:class:", "-", "x", "position", "highlightedNode"]}),
-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;
-var anchor,head,selection;
-return smalltalk.withContext(function($ctx1) { 
-head=smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(self._highlightedNode())._position())._x()).__minus((1))),"ch".__minus_gt(_st(_st(_st(self._highlightedNode())._position())._y()).__minus((1)))]);
-anchor=smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(self._highlightedNode())._extent())._x()).__minus((1))),"ch".__minus_gt(_st(_st(_st(self._highlightedNode())._extent())._y()).__minus((1)))]);
-_st(self["@editor"])._setSelection_to_(head,anchor);
-return self}, function($ctx1) {$ctx1.fill(self,"highlight",{anchor:anchor,head:head,selection:selection},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["->", "-", "x", "position", "highlightedNode", "y", "extent", "setSelection:to:"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightLine:",
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@editor"])._addLineClass_where_class_(anInteger,"background","highlighted");
-return self}, function($ctx1) {$ctx1.fill(self,"highlightLine:",{anInteger:anInteger},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["addLineClass:where:class:"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightNode:",
-fn: function (aNode){
-var self=this;
-var line;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=aNode;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-line=_st(_st(_st(aNode)._position())._x()).__minus((1));
-line;
-$2=self;
-_st($2)._clearHighlight();
-_st($2)._addStopAt_(line);
-_st($2)._highlightLine_(line);
-$3=_st($2)._highlightedNode_(aNode);
-$3;
-};
-return self}, function($ctx1) {$ctx1.fill(self,"highlightNode:",{aNode:aNode,line:line},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["ifNotNil:", "-", "x", "position", "clearHighlight", "addStopAt:", "highlightLine:", "highlightedNode:"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightedNode",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@highlightedNode"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"highlightedNode",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: []}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightedNode:",
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@highlightedNode"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"highlightedNode:",{aNode:aNode},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: []}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "observeBrowserModel",
-fn: function (){
-var self=this;
-function $HLDebuggerContextSelected(){return smalltalk.HLDebuggerContextSelected||(typeof HLDebuggerContextSelected=="undefined"?nil:HLDebuggerContextSelected)}
-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);
-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._highlightNode_(_st(self._browserModel())._nextNode());
-return self}, function($ctx1) {$ctx1.fill(self,"onContextSelected",{},smalltalk.HLDebuggerCodeWidget)})},
-messageSends: ["highlightNode:", "nextNode", "browserModel"]}),
-smalltalk.HLDebuggerCodeWidget);
-
-
-
-smalltalk.addClass('HLDebuggerModel', smalltalk.HLToolModel, ['rootContext', 'currentContext', 'contexts', 'interpreter'], '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 $ASTDebugger(){return smalltalk.ASTDebugger||(typeof ASTDebugger=="undefined"?nil:ASTDebugger)}
-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"];
-self["@interpreter"]=_st($ASTDebugger())._context_(aContext);
-self["@interpreter"];
-$1=_st($HLDebuggerContextSelected())._new();
-_st($1)._context_(aContext);
-$2=_st($1)._yourself();
-return _st(self._announcer())._announce_($2);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"currentContext:",{aContext:aContext},smalltalk.HLDebuggerModel)})},
-messageSends: ["withChangesDo:", "selectedMethod:", "method", "context:", "announce:", "new", "yourself", "announcer"]}),
-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)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(self["@contexts"])._add_(context);
-context=_st(context)._outerContext();
-return context;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initializeContexts",{context:context},smalltalk.HLDebuggerModel)})},
-messageSends: ["new", "rootContext", "whileTrue:", "add:", "outerContext", "notNil"]}),
-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=self["@interpreter"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.HLDebuggerModel)})},
-messageSends: []}),
-smalltalk.HLDebuggerModel);
-
-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.HLDebuggerModel)})},
-messageSends: ["nextNode", "interpreter"]}),
-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: "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 $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-function $HLDebugger(){return smalltalk.HLDebugger||(typeof HLDebugger=="undefined"?nil:HLDebugger)}
-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)})}))._on_do_($Error(),(function(error){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($ErrorHandler())._new())._handleError_(error);
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.HLErrorHandler)})},
-messageSends: ["onErrorHandled", "on:do:", "handleError:", "new", "openAsTab", "on:", "context"]}),
-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: "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);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 329 - 145
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(
@@ -45,34 +46,40 @@ 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;
+var $2,$3,$1,$4,$5,$6,$7,$8;
 variables=_st($Dictionary())._new();
 inspectedContext=self._context();
-_st(variables)._addAll_(_st(inspectedContext)._locals());
+$2=variables;
+$3=_st(inspectedContext)._locals();
+$ctx1.sendIdx["locals"]=1;
+$1=_st($2)._addAll_($3);
+$ctx1.sendIdx["addAll:"]=1;
 _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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+}, 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;
+$4=inspectedContext;
+if(($receiver = $4) == nil || $receiver == null){
+return $4;
 } else {
-return _st(variables)._addAll_(_st(inspectedContext)._locals());
+$5=variables;
+$6=_st(inspectedContext)._locals();
+return _st($5)._addAll_($6);
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$2=anInspector;
-_st($2)._setLabel_("Context");
-$3=_st($2)._setVariables_(variables);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+$7=anInspector;
+_st($7)._setLabel_("Context");
+$8=_st($7)._setVariables_(variables);
 return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables,inspectedContext:inspectedContext},smalltalk.HLContextInspectorDecorator)})},
 args: ["anInspector"],
 source: "inspectOn: anInspector\x0a\x09| variables inspectedContext |\x0a\x09\x0a\x09variables := Dictionary new.\x0a\x09inspectedContext := self context.\x0a\x09\x0a\x09variables addAll: inspectedContext locals.\x0a\x09\x0a\x09[ inspectedContext notNil and: [ inspectedContext isBlockContext ] ] whileTrue: [\x0a\x09\x09inspectedContext := inspectedContext outerContext.\x0a\x09\x09inspectedContext ifNotNil: [\x0a\x09\x09\x09variables addAll: inspectedContext locals ] ].\x0a\x09\x0a\x09anInspector\x0a\x09\x09setLabel: 'Context';\x0a\x09\x09setVariables: variables",
-messageSends: ["new", "context", "addAll:", "locals", "whileTrue:", "outerContext", "ifNotNil:", "and:", "isBlockContext", "notNil", "setLabel:", "setVariables:"],
+messageSends: ["new", "context", "addAll:", "locals", "whileTrue:", "and:", "notNil", "isBlockContext", "outerContext", "ifNotNil:", "setLabel:", "setVariables:"],
 referencedClasses: ["Dictionary"]
 }),
 smalltalk.HLContextInspectorDecorator);
@@ -112,7 +119,7 @@ function $HLDebuggerCodeWidget(){return smalltalk.HLDebuggerCodeWidget||(typeof
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLDebuggerCodeWidget())._new();
 _st($3)._browserModel_(self._model());
 $4=_st($3)._yourself();
@@ -125,7 +132,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLDebugger)})},
 args: [],
 source: "codeWidget\x0a\x09^ codeWidget ifNil: [ codeWidget := HLDebuggerCodeWidget new\x0a\x09\x09browserModel: self model;\x0a\x09\x09yourself ]",
-messageSends: ["ifNil:", "browserModel:", "model", "new", "yourself"],
+messageSends: ["ifNil:", "browserModel:", "new", "model", "yourself"],
 referencedClasses: ["HLDebuggerCodeWidget"]
 }),
 smalltalk.HLDebugger);
@@ -174,7 +181,7 @@ function $HLInspectorWidget(){return smalltalk.HLInspectorWidget||(typeof HLInsp
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@inspectorWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@inspectorWidget"]=_st($HLInspectorWidget())._new();
 $1=self["@inspectorWidget"];
 } else {
@@ -199,7 +206,7 @@ function $HLDebuggerModel(){return smalltalk.HLDebuggerModel||(typeof HLDebugger
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@model"]=_st($HLDebuggerModel())._new();
 $1=self["@model"];
 } else {
@@ -221,13 +228,23 @@ category: 'actions',
 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);
+var $3,$2,$1,$6,$5,$4;
+$3=self._model();
+$ctx1.sendIdx["model"]=1;
+$2=_st($3)._announcer();
+$ctx1.sendIdx["announcer"]=1;
+$1=_st($2)._on_send_to_($HLDebuggerContextSelected(),"onContextSelected:",self);
+$ctx1.sendIdx["on:send:to:"]=1;
+$6=self._model();
+$5=_st($6)._announcer();
+$4=_st($5)._on_send_to_($HLDebuggerStepped(),"onContextSelected:",self);
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLDebugger)})},
 args: [],
-source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLDebuggerContextSelected\x0a\x09\x09send: #onContextSelected:\x0a\x09\x09to: self",
+source: "observeModel\x0a\x09self model announcer \x0a\x09\x09on: HLDebuggerContextSelected\x0a\x09\x09send: #onContextSelected:\x0a\x09\x09to: self.\x0a\x09\x09\x0a\x09self model announcer \x0a\x09\x09on: HLDebuggerStepped\x0a\x09\x09send: #onContextSelected:\x0a\x09\x09to: self",
 messageSends: ["on:send:to:", "announcer", "model"],
-referencedClasses: ["HLDebuggerContextSelected"]
+referencedClasses: ["HLDebuggerContextSelected", "HLDebuggerStepped"]
 }),
 smalltalk.HLDebugger);
 
@@ -243,7 +260,7 @@ _st(self._inspectorWidget())._inspect_(_st($HLContextInspectorDecorator())._on_(
 return self}, function($ctx1) {$ctx1.fill(self,"onContextSelected:",{anAnnouncement:anAnnouncement},smalltalk.HLDebugger)})},
 args: ["anAnnouncement"],
 source: "onContextSelected: anAnnouncement\x0a\x09self inspectorWidget inspect: (HLContextInspectorDecorator on: anAnnouncement context)",
-messageSends: ["inspect:", "on:", "context", "inspectorWidget"],
+messageSends: ["inspect:", "inspectorWidget", "on:", "context"],
 referencedClasses: ["HLContextInspectorDecorator"]
 }),
 smalltalk.HLDebugger);
@@ -271,16 +288,26 @@ selector: "renderContentOn:",
 category: 'rendering',
 fn: function (html){
 var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
 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()))));
+var $2,$4,$6,$7,$8,$5,$3,$1;
+$2=html;
+$4=$HLContainer();
+$6=$HLHorizontalSplitter();
+$7=self._stackListWidget();
+$8=_st($HLVerticalSplitter())._with_with_(self._codeWidget(),self._inspectorWidget());
+$5=_st($6)._with_with_($7,$8);
+$ctx1.sendIdx["with:with:"]=1;
+$3=_st($4)._with_($5);
+$1=_st($2)._with_($3);
+$ctx1.sendIdx["with:"]=1;
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLDebugger)})},
 args: ["html"],
 source: "renderContentOn: html\x0a\x09html with: (HLContainer with: (HLHorizontalSplitter\x0a\x09\x09with: self stackListWidget\x0a\x09\x09with: (HLVerticalSplitter\x0a\x09\x09\x09with: self codeWidget\x0a\x09\x09\x09with: self inspectorWidget)))",
 messageSends: ["with:", "with:with:", "stackListWidget", "codeWidget", "inspectorWidget"],
-referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter", "HLContainer"]
+referencedClasses: ["HLContainer", "HLHorizontalSplitter", "HLVerticalSplitter"]
 }),
 smalltalk.HLDebugger);
 
@@ -294,7 +321,7 @@ function $HLStackListWidget(){return smalltalk.HLStackListWidget||(typeof HLStac
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@stackListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLStackListWidget())._on_(self._model());
 _st($3)._next_(self._codeWidget());
 $4=_st($3)._yourself();
@@ -307,7 +334,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"stackListWidget",{},smalltalk.HLDebugger)})},
 args: [],
 source: "stackListWidget\x0a\x09^ stackListWidget ifNil: [ \x0a\x09\x09stackListWidget := (HLStackListWidget on: self model)\x0a\x09\x09\x09next: self codeWidget;\x0a\x09\x09\x09yourself ]",
-messageSends: ["ifNil:", "next:", "codeWidget", "on:", "model", "yourself"],
+messageSends: ["ifNil:", "next:", "on:", "model", "codeWidget", "yourself"],
 referencedClasses: ["HLStackListWidget"]
 }),
 smalltalk.HLDebugger);
@@ -319,8 +346,10 @@ category: 'actions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-smalltalk.HLDebugger.superclass.fn.prototype._unregister.apply(_st(self), []);
-_st(self._inspectorWidget())._unregister();
+var $1,$2;
+$1=smalltalk.HLDebugger.superclass.fn.prototype._unregister.apply(_st(self), []);
+$ctx1.sendIdx["unregister"]=1;
+$2=_st(self._inspectorWidget())._unregister();
 return self}, function($ctx1) {$ctx1.fill(self,"unregister",{},smalltalk.HLDebugger)})},
 args: [],
 source: "unregister\x0a\x09super unregister.\x0a\x09self inspectorWidget unregister",
@@ -384,7 +413,7 @@ referencedClasses: []
 smalltalk.HLDebugger.klass);
 
 
-smalltalk.addClass('HLDebuggerCodeWidget', smalltalk.HLBrowserCodeWidget, ['highlightedNode'], 'Helios-Debugger');
+smalltalk.addClass('HLDebuggerCodeWidget', smalltalk.HLBrowserCodeWidget, [], 'Helios-Debugger');
 smalltalk.addMethod(
 smalltalk.method({
 selector: "addStopAt:",
@@ -408,20 +437,11 @@ category: 'actions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-_st(self["@editor"])._clearGutter_("stops");
-$1=self._highlightedNode();
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
-} else {
-var node;
-node=$receiver;
-_st(self["@editor"])._removeLineClass_where_class_(_st(_st(_st(node)._position())._x()).__minus((1)),"background","highlighted");
-};
+_st(self._editor())._clearGutter_("stops");
 return self}, function($ctx1) {$ctx1.fill(self,"clearHighlight",{},smalltalk.HLDebuggerCodeWidget)})},
 args: [],
-source: "clearHighlight\x0a\x09editor clearGutter: 'stops'.\x0a\x09self highlightedNode ifNotNil: [ :node |\x0a\x09\x09editor \x0a\x09\x09\x09removeLineClass: node position x - 1\x0a\x09\x09\x09where: 'background'\x0a\x09\x09\x09class: 'highlighted' ]",
-messageSends: ["clearGutter:", "ifNotNil:", "removeLineClass:where:class:", "-", "x", "position", "highlightedNode"],
+source: "clearHighlight\x0a\x09self editor clearGutter: 'stops'",
+messageSends: ["clearGutter:", "editor"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerCodeWidget);
@@ -470,31 +490,12 @@ selector: "highlight",
 category: 'actions',
 fn: function (){
 var self=this;
-var anchor,head,selection;
 return smalltalk.withContext(function($ctx1) { 
-head=smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(self._highlightedNode())._position())._x()).__minus((1))),"ch".__minus_gt(_st(_st(_st(self._highlightedNode())._position())._y()).__minus((1)))]);
-anchor=smalltalk.HashedCollection._from_(["line".__minus_gt(_st(_st(_st(self._highlightedNode())._extent())._x()).__minus((1))),"ch".__minus_gt(_st(_st(_st(self._highlightedNode())._extent())._y()).__minus((1)))]);
-_st(self["@editor"])._setSelection_to_(head,anchor);
-return self}, function($ctx1) {$ctx1.fill(self,"highlight",{anchor:anchor,head:head,selection:selection},smalltalk.HLDebuggerCodeWidget)})},
+self._highlightNode_(_st(self._browserModel())._nextNode());
+return self}, function($ctx1) {$ctx1.fill(self,"highlight",{},smalltalk.HLDebuggerCodeWidget)})},
 args: [],
-source: "highlight\x0a\x09| anchor head selection |\x0a\x09\x0a\x09head := #{\x0a\x09\x09'line' -> (self highlightedNode position x - 1).\x0a\x09\x09'ch' -> (self highlightedNode position y - 1)\x0a\x09}.\x0a\x09\x0a\x09anchor := #{\x0a\x09\x09'line' -> (self highlightedNode extent x - 1).\x0a\x09\x09'ch' -> (self highlightedNode extent y - 1)\x0a\x09}.\x0a\x09\x0a\x09editor setSelection: head to: anchor",
-messageSends: ["->", "-", "x", "position", "highlightedNode", "y", "extent", "setSelection:to:"],
-referencedClasses: []
-}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightLine:",
-category: 'actions',
-fn: function (anInteger){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self["@editor"])._addLineClass_where_class_(anInteger,"background","highlighted");
-return self}, function($ctx1) {$ctx1.fill(self,"highlightLine:",{anInteger:anInteger},smalltalk.HLDebuggerCodeWidget)})},
-args: ["anInteger"],
-source: "highlightLine: anInteger\x0a\x09editor \x0a\x09\x09addLineClass: anInteger\x0a\x09\x09where: 'background'\x0a\x09\x09class: 'highlighted'",
-messageSends: ["addLineClass:where:class:"],
+source: "highlight\x0a\x09self highlightNode: self browserModel nextNode",
+messageSends: ["highlightNode:", "nextNode", "browserModel"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerCodeWidget);
@@ -505,60 +506,65 @@ selector: "highlightNode:",
 category: 'actions',
 fn: function (aNode){
 var self=this;
-var line;
+var token;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
+var $1,$2,$7,$6,$5,$4,$10,$9,$8,$3,$14,$13,$12,$11,$15,$20,$19,$18,$17,$21,$16,$26,$25,$24,$23,$27,$22;
 $1=aNode;
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
-line=_st(_st(_st(aNode)._position())._x()).__minus((1));
-line;
-$2=self;
-_st($2)._clearHighlight();
-_st($2)._addStopAt_(line);
-_st($2)._highlightLine_(line);
-$3=_st($2)._highlightedNode_(aNode);
-$3;
+$2=self._editor();
+$ctx1.sendIdx["editor"]=1;
+$7=_st(aNode)._position();
+$ctx1.sendIdx["position"]=1;
+$6=_st($7)._x();
+$ctx1.sendIdx["x"]=1;
+$5=_st($6).__minus((1));
+$ctx1.sendIdx["-"]=1;
+$4="line".__minus_gt($5);
+$ctx1.sendIdx["->"]=1;
+$10=_st(aNode)._position();
+$ctx1.sendIdx["position"]=2;
+$9=_st($10)._y();
+$8="ch".__minus_gt($9);
+$ctx1.sendIdx["->"]=2;
+$3=smalltalk.HashedCollection._from_([$4,$8]);
+token=_st($2)._getTokenAt_($3);
+token;
+self._clearHighlight();
+$14=_st(aNode)._position();
+$ctx1.sendIdx["position"]=3;
+$13=_st($14)._x();
+$ctx1.sendIdx["x"]=2;
+$12=_st($13).__minus((1));
+$ctx1.sendIdx["-"]=2;
+$11=self._addStopAt_($12);
+$11;
+$15=self._editor();
+$20=_st(aNode)._position();
+$ctx1.sendIdx["position"]=4;
+$19=_st($20)._x();
+$ctx1.sendIdx["x"]=3;
+$18=_st($19).__minus((1));
+$ctx1.sendIdx["-"]=3;
+$17="line".__minus_gt($18);
+$ctx1.sendIdx["->"]=3;
+$21="ch".__minus_gt(_st(token)._start());
+$ctx1.sendIdx["->"]=4;
+$16=smalltalk.HashedCollection._from_([$17,$21]);
+$26=_st(aNode)._position();
+$25=_st($26)._x();
+$24=_st($25).__minus((1));
+$23="line".__minus_gt($24);
+$ctx1.sendIdx["->"]=5;
+$27="ch".__minus_gt(_st(token)._end());
+$22=smalltalk.HashedCollection._from_([$23,$27]);
+_st($15)._setSelection_to_($16,$22);
 };
-return self}, function($ctx1) {$ctx1.fill(self,"highlightNode:",{aNode:aNode,line:line},smalltalk.HLDebuggerCodeWidget)})},
-args: ["aNode"],
-source: "highlightNode: aNode\x0a\x09| line |\x0a\x09aNode ifNotNil: [\x0a\x09\x09line := aNode position x - 1.\x0a\x09\x09self \x0a\x09\x09\x09clearHighlight; \x0a\x09\x09\x09addStopAt: line;\x0a\x09\x09\x09highlightLine: line;\x0a\x09\x09\x09highlightedNode: aNode\x0a\x09\x09]",
-messageSends: ["ifNotNil:", "-", "x", "position", "clearHighlight", "addStopAt:", "highlightLine:", "highlightedNode:"],
-referencedClasses: []
-}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightedNode",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=self["@highlightedNode"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"highlightedNode",{},smalltalk.HLDebuggerCodeWidget)})},
-args: [],
-source: "highlightedNode\x0a\x09^ highlightedNode",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.HLDebuggerCodeWidget);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "highlightedNode:",
-category: 'accessing',
-fn: function (aNode){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self["@highlightedNode"]=aNode;
-return self}, function($ctx1) {$ctx1.fill(self,"highlightedNode:",{aNode:aNode},smalltalk.HLDebuggerCodeWidget)})},
+return self}, function($ctx1) {$ctx1.fill(self,"highlightNode:",{aNode:aNode,token:token},smalltalk.HLDebuggerCodeWidget)})},
 args: ["aNode"],
-source: "highlightedNode: aNode\x0a\x09highlightedNode := aNode",
-messageSends: [],
+source: "highlightNode: aNode\x0a\x09| token |\x0a\x09\x0a\x09aNode ifNotNil: [\x0a\x09\x09token := self editor getTokenAt: #{ \x0a\x09\x09\x09'line' -> (aNode position x - 1). \x0a\x09\x09\x09'ch' -> aNode position y \x0a\x09\x09}.\x0a\x0a\x09\x09self\x0a\x09\x09\x09clearHighlight;\x0a\x09\x09\x09addStopAt: aNode position x - 1.\x0a\x0a\x09\x09self editor \x0a\x09\x09\x09setSelection: #{ 'line' -> (aNode position x - 1). 'ch' -> token start }\x0a\x09\x09\x09to: #{ 'line' -> (aNode position x - 1). 'ch' -> token end } ]",
+messageSends: ["ifNotNil:", "getTokenAt:", "editor", "->", "-", "x", "position", "y", "clearHighlight", "addStopAt:", "setSelection:to:", "start", "end"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerCodeWidget);
@@ -570,14 +576,31 @@ category: 'actions',
 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) { 
+var $3,$2,$1,$6,$5,$4,$9,$8,$7;
 smalltalk.HLDebuggerCodeWidget.superclass.fn.prototype._observeBrowserModel.apply(_st(self), []);
-_st(_st(self._browserModel())._announcer())._on_send_to_($HLDebuggerContextSelected(),"onContextSelected",self);
+$3=self._browserModel();
+$ctx1.sendIdx["browserModel"]=1;
+$2=_st($3)._announcer();
+$ctx1.sendIdx["announcer"]=1;
+$1=_st($2)._on_send_to_($HLDebuggerContextSelected(),"onContextSelected",self);
+$ctx1.sendIdx["on:send:to:"]=1;
+$6=self._browserModel();
+$ctx1.sendIdx["browserModel"]=2;
+$5=_st($6)._announcer();
+$ctx1.sendIdx["announcer"]=2;
+$4=_st($5)._on_send_to_($HLDebuggerStepped(),"onContextSelected",self);
+$ctx1.sendIdx["on:send:to:"]=2;
+$9=self._browserModel();
+$8=_st($9)._announcer();
+$7=_st($8)._on_send_to_($HLDebuggerWhere(),"onContextSelected",self);
 return self}, function($ctx1) {$ctx1.fill(self,"observeBrowserModel",{},smalltalk.HLDebuggerCodeWidget)})},
 args: [],
-source: "observeBrowserModel\x0a\x09super observeBrowserModel.\x0a\x09\x0a\x09self browserModel announcer \x0a\x09\x09on: HLDebuggerContextSelected\x0a\x09\x09send: #onContextSelected\x0a\x09\x09to: self",
+source: "observeBrowserModel\x0a\x09super observeBrowserModel.\x0a\x09\x0a\x09self browserModel announcer \x0a\x09\x09on: HLDebuggerContextSelected\x0a\x09\x09send: #onContextSelected\x0a\x09\x09to: self.\x0a\x09\x0a\x09self browserModel announcer \x0a\x09\x09on: HLDebuggerStepped\x0a\x09\x09send: #onContextSelected\x0a\x09\x09to: self.\x0a\x09\x0a\x09self browserModel announcer \x0a\x09\x09on: HLDebuggerWhere\x0a\x09\x09send: #onContextSelected\x0a\x09\x09to: self",
 messageSends: ["observeBrowserModel", "on:send:to:", "announcer", "browserModel"],
-referencedClasses: ["HLDebuggerContextSelected"]
+referencedClasses: ["HLDebuggerContextSelected", "HLDebuggerStepped", "HLDebuggerWhere"]
 }),
 smalltalk.HLDebuggerCodeWidget);
 
@@ -588,18 +611,18 @@ category: 'reactions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._highlightNode_(_st(self._browserModel())._nextNode());
+self._highlight();
 return self}, function($ctx1) {$ctx1.fill(self,"onContextSelected",{},smalltalk.HLDebuggerCodeWidget)})},
 args: [],
-source: "onContextSelected\x0a\x09self highlightNode: self browserModel nextNode",
-messageSends: ["highlightNode:", "nextNode", "browserModel"],
+source: "onContextSelected\x0a\x09self highlight",
+messageSends: ["highlight"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerCodeWidget);
 
 
 
-smalltalk.addClass('HLDebuggerModel', smalltalk.HLToolModel, ['rootContext', 'currentContext', 'contexts', 'interpreter'], 'Helios-Debugger');
+smalltalk.addClass('HLDebuggerModel', smalltalk.HLToolModel, ['rootContext', 'currentContext', 'contexts'], 'Helios-Debugger');
 smalltalk.HLDebuggerModel.comment="I am a model for Helios debugging.\x0a\x0aMy instances hold a reference to an `AIContext` instance, built from a `MethodContext`. The context should be the root of the context stack.";
 smalltalk.addMethod(
 smalltalk.method({
@@ -628,7 +651,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=self["@currentContext"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 self._currentContext_(self._rootContext());
 } else {
 $1;
@@ -649,7 +672,6 @@ selector: "currentContext:",
 category: 'accessing',
 fn: function (aContext){
 var self=this;
-function $ASTDebugger(){return smalltalk.ASTDebugger||(typeof ASTDebugger=="undefined"?nil:ASTDebugger)}
 function $HLDebuggerContextSelected(){return smalltalk.HLDebuggerContextSelected||(typeof HLDebuggerContextSelected=="undefined"?nil:HLDebuggerContextSelected)}
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
@@ -658,18 +680,16 @@ return smalltalk.withContext(function($ctx2) {
 self._selectedMethod_(_st(aContext)._method());
 self["@currentContext"]=aContext;
 self["@currentContext"];
-self["@interpreter"]=_st($ASTDebugger())._context_(aContext);
-self["@interpreter"];
 $1=_st($HLDebuggerContextSelected())._new();
 _st($1)._context_(aContext);
 $2=_st($1)._yourself();
 return _st(self._announcer())._announce_($2);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"currentContext:",{aContext:aContext},smalltalk.HLDebuggerModel)})},
 args: ["aContext"],
-source: "currentContext: aContext\x0a\x09self withChangesDo: [ \x0a\x09\x09self selectedMethod: aContext method.\x0a\x09\x09currentContext := aContext.\x0a\x09\x09interpreter := ASTDebugger context: aContext.\x0a\x09\x09self announcer announce: (HLDebuggerContextSelected new\x0a\x09\x09\x09context: aContext;\x0a\x09\x09\x09yourself) ]",
-messageSends: ["withChangesDo:", "selectedMethod:", "method", "context:", "announce:", "new", "yourself", "announcer"],
-referencedClasses: ["ASTDebugger", "HLDebuggerContextSelected"]
+source: "currentContext: aContext\x0a\x09self withChangesDo: [ \x0a\x09\x09self selectedMethod: aContext method.\x0a\x09\x09currentContext := aContext.\x0a\x09\x09self announcer announce: (HLDebuggerContextSelected new\x0a\x09\x09\x09context: aContext;\x0a\x09\x09\x09yourself) ]",
+messageSends: ["withChangesDo:", "selectedMethod:", "method", "announce:", "announcer", "context:", "new", "yourself"],
+referencedClasses: ["HLDebuggerContextSelected"]
 }),
 smalltalk.HLDebuggerModel);
 
@@ -687,16 +707,16 @@ context=self._rootContext();
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(context)._notNil();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"initializeContexts",{context:context},smalltalk.HLDebuggerModel)})},
 args: [],
 source: "initializeContexts\x0a\x09\x22Flatten the context stack into an OrderedCollection\x22\x0a\x09\x0a\x09| context |\x0a\x09\x0a\x09contexts := OrderedCollection new.\x0a\x09context := self rootContext.\x0a\x09\x0a\x09[ context notNil ] whileTrue: [\x0a\x09\x09contexts add: context.\x0a\x09\x09context := context outerContext ]",
-messageSends: ["new", "rootContext", "whileTrue:", "add:", "outerContext", "notNil"],
+messageSends: ["new", "rootContext", "whileTrue:", "notNil", "add:", "outerContext"],
 referencedClasses: ["OrderedCollection"]
 }),
 smalltalk.HLDebuggerModel);
@@ -727,12 +747,12 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=self["@interpreter"];
+$1=_st(self._currentContext())._interpreter();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.HLDebuggerModel)})},
 args: [],
-source: "interpreter\x0a\x09^ interpreter",
-messageSends: [],
+source: "interpreter\x0a\x09^ self currentContext interpreter",
+messageSends: ["interpreter", "currentContext"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerModel);
@@ -745,16 +765,38 @@ fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._interpreter())._nextNode();
+$1=_st(self._interpreter())._node();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.HLDebuggerModel)})},
 args: [],
-source: "nextNode\x0a\x09^ self interpreter nextNode",
-messageSends: ["nextNode", "interpreter"],
+source: "nextNode\x0a\x09^ self interpreter node",
+messageSends: ["node", "interpreter"],
 referencedClasses: []
 }),
 smalltalk.HLDebuggerModel);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "restart",
+category: 'actions',
+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)})},
+args: [],
+source: "restart\x0a\x09self interpreter restart.\x0a\x09self announcer announce: (HLDebuggerStepped new\x0a\x09\x09context: self currentContext;\x0a\x09\x09yourself)",
+messageSends: ["restart", "interpreter", "announce:", "announcer", "context:", "new", "currentContext", "yourself"],
+referencedClasses: ["HLDebuggerStepped"]
+}),
+smalltalk.HLDebuggerModel);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "rootContext",
@@ -773,6 +815,45 @@ referencedClasses: []
 }),
 smalltalk.HLDebuggerModel);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "stepOver",
+category: 'actions',
+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)})},
+args: [],
+source: "stepOver\x0a\x09self interpreter stepOver.\x0a\x09self announcer announce: (HLDebuggerStepped new\x0a\x09\x09context: self currentContext;\x0a\x09\x09yourself)",
+messageSends: ["stepOver", "interpreter", "announce:", "announcer", "context:", "new", "currentContext", "yourself"],
+referencedClasses: ["HLDebuggerStepped"]
+}),
+smalltalk.HLDebuggerModel);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "where",
+category: 'actions',
+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)})},
+args: [],
+source: "where\x0a\x09self announcer announce: HLDebuggerWhere new",
+messageSends: ["announce:", "announcer", "new"],
+referencedClasses: ["HLDebuggerWhere"]
+}),
+smalltalk.HLDebuggerModel);
+
 
 smalltalk.addMethod(
 smalltalk.method({
@@ -803,23 +884,23 @@ selector: "handleError:",
 category: 'error handling',
 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)}
-function $HLDebugger(){return smalltalk.HLDebugger||(typeof HLDebugger=="undefined"?nil:HLDebugger)}
 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)})}))._on_do_($Error(),(function(error){
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.HLErrorHandler)})},
 args: ["anError"],
 source: "handleError: anError\x0a\x09self onErrorHandled.\x0a\x0a\x09[ \x0a\x09\x09(HLDebugger on: anError context) openAsTab \x0a\x09] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :error | ErrorHandler new handleError: error ]",
-messageSends: ["onErrorHandled", "on:do:", "handleError:", "new", "openAsTab", "on:", "context"],
-referencedClasses: ["Error", "ErrorHandler", "HLDebugger"]
+messageSends: ["onErrorHandled", "on:do:", "openAsTab", "on:", "context", "handleError:", "new"],
+referencedClasses: ["HLDebugger", "Error", "ErrorHandler"]
 }),
 smalltalk.HLErrorHandler);
 
@@ -873,7 +954,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@items"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@items"]=_st(self._model())._contexts();
 $1=self["@items"];
 } else {
@@ -904,6 +985,77 @@ referencedClasses: []
 }),
 smalltalk.HLStackListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "renderButtonsOn:",
+category: 'rendering',
+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");
+$ctx1.sendIdx["class:"]=1;
+$2=_st($1)._with_((function(){
+return smalltalk.withContext(function($ctx2) {
+$3=_st(html)._button();
+$ctx2.sendIdx["button"]=1;
+_st($3)._class_("btn restart");
+$ctx2.sendIdx["class:"]=2;
+_st($3)._with_("Restart");
+$ctx2.sendIdx["with:"]=2;
+$4=_st($3)._onClick_((function(){
+return smalltalk.withContext(function($ctx3) {
+return self._restart();
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["onClick:"]=1;
+$4;
+$5=_st(html)._button();
+$ctx2.sendIdx["button"]=2;
+_st($5)._class_("btn where");
+$ctx2.sendIdx["class:"]=3;
+_st($5)._with_("Where");
+$ctx2.sendIdx["with:"]=3;
+$6=_st($5)._onClick_((function(){
+return smalltalk.withContext(function($ctx3) {
+return self._where();
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
+$ctx2.sendIdx["onClick:"]=2;
+$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)})}));
+$ctx1.sendIdx["with:"]=1;
+return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLStackListWidget)})},
+args: ["html"],
+source: "renderButtonsOn: html\x0a\x09html div \x0a\x09\x09class: 'debugger_bar'; \x0a\x09\x09with: [\x0a\x09\x09\x09html button \x0a\x09\x09\x09\x09class: 'btn restart';\x0a\x09\x09\x09\x09with: 'Restart';\x0a\x09\x09\x09\x09onClick: [ self restart ].\x0a\x09\x09\x09html button \x0a\x09\x09\x09\x09class: 'btn where';\x0a\x09\x09\x09\x09with: 'Where';\x0a\x09\x09\x09\x09onClick: [ self where ].\x0a\x09\x09\x09html button \x0a\x09\x09\x09\x09class: 'btn stepOver';\x0a\x09\x09\x09\x09with: 'Step over';\x0a\x09\x09\x09\x09onClick: [ self stepOver ] ]",
+messageSends: ["class:", "div", "with:", "button", "onClick:", "restart", "where", "stepOver"],
+referencedClasses: []
+}),
+smalltalk.HLStackListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "restart",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._model())._restart();
+return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.HLStackListWidget)})},
+args: [],
+source: "restart\x0a\x09self model restart",
+messageSends: ["restart", "model"],
+referencedClasses: []
+}),
+smalltalk.HLStackListWidget);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "selectItem:",
@@ -920,5 +1072,37 @@ referencedClasses: []
 }),
 smalltalk.HLStackListWidget);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "stepOver",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._model())._stepOver();
+return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.HLStackListWidget)})},
+args: [],
+source: "stepOver\x0a\x09self model stepOver",
+messageSends: ["stepOver", "model"],
+referencedClasses: []
+}),
+smalltalk.HLStackListWidget);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "where",
+category: 'actions',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._model())._where();
+return self}, function($ctx1) {$ctx1.fill(self,"where",{},smalltalk.HLStackListWidget)})},
+args: [],
+source: "where\x0a\x09self model where",
+messageSends: ["where", "model"],
+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:", "selectionDisplayString", "div"]}),
-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:", "printString", "instVarObjectAt:", "includes:", "keys", "variables"]}),
-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:", "on:", "announcer"]}),
-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:", "resetItems", "refresh", "=", "items", "variables"]}),
-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)})}));
-self["@diveButton"]=$2;
-return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLInspectorVariablesWidget)})},
-messageSends: ["class:", "button", "with:", "onClick:", "announce:", "new", "announcer"]}),
-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:", "code", "new", "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:", "model", "new", "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:", "code", "codeWidget", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeCodeWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["on:do:", "onDoneIt", "announcer", "codeWidget"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeVariablesWidget",{},smalltalk.HLInspectorWidget)})},
-messageSends: ["on:do:", "onDive", "announcer", "variablesWidget"]}),
-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:", "selectedInstVarObject", "model", "new", "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:", "selectedInstVarObject", "model", "codeWidget", "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 $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-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:", "model", "new", "yourself"]}),
-smalltalk.HLInspectorWidget);
-
-
-
-smalltalk.addClass('HLInspector', smalltalk.HLInspectorWidget, [], 'Helios-Inspector');
-smalltalk.addMethod(
-smalltalk.method({
-selector: "renderContentOn:",
-fn: function (html){
-var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithInterval_((500));
-return self}, function($ctx1) {$ctx1.fill(self,"watchChanges",{},smalltalk.HLInspector.klass)})},
-messageSends: ["valueWithInterval:", "do:", "refresh", "inspectors"]}),
-smalltalk.HLInspector.klass);
-
-})(global_smalltalk,global_nil,global__st);

+ 68 - 50
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(
@@ -47,7 +48,7 @@ _st(_st(html)._div())._with_(self._selectionDisplayString());
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspectorDisplayWidget)})},
 args: ["html"],
 source: "renderContentOn: html\x0a\x09\x0a    html div with: self selectionDisplayString",
-messageSends: ["with:", "selectionDisplayString", "div"],
+messageSends: ["with:", "div", "selectionDisplayString"],
 referencedClasses: []
 }),
 smalltalk.HLInspectorDisplayWidget);
@@ -72,7 +73,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"selectionDisplayString",{selection:selection},smalltalk.HLInspectorDisplayWidget)})},
 args: [],
 source: "selectionDisplayString\x0a\x09|selection|\x0a\x09selection := model selection.\x0a    ^ (model variables keys includes: selection)\x0a    \x09ifTrue:[(model instVarObjectAt: selection) printString]\x0a      \x09ifFalse:['']",
-messageSends: ["selection", "ifTrue:ifFalse:", "printString", "instVarObjectAt:", "includes:", "keys", "variables"],
+messageSends: ["selection", "ifTrue:ifFalse:", "includes:", "keys", "variables", "printString", "instVarObjectAt:"],
 referencedClasses: []
 }),
 smalltalk.HLInspectorDisplayWidget);
@@ -90,7 +91,7 @@ function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@announcer"]=_st($Announcer())._new();
 $1=self["@announcer"];
 } else {
@@ -115,7 +116,7 @@ function $HLCodeModel(){return smalltalk.HLCodeModel||(typeof HLCodeModel=="unde
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@code"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@code"]=_st($HLCodeModel())._on_(self._environment());
 $1=self["@code"];
 } else {
@@ -140,7 +141,7 @@ function $HLManager(){return smalltalk.HLManager||(typeof HLManager=="undefined"
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@environment"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st(_st($HLManager())._current())._environment();
 } else {
 $1=$2;
@@ -249,7 +250,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@label"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st(self._inspectee())._printString();
 } else {
 $1=$2;
@@ -354,7 +355,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@selection"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -381,7 +382,7 @@ _st(self._announcer())._announce_(_st($HLInstanceVariableSelected())._on_(self["
 return self}, function($ctx1) {$ctx1.fill(self,"selection:",{anObject:anObject},smalltalk.HLInspectorModel)})},
 args: ["anObject"],
 source: "selection: anObject\x0a\x09selection := anObject.\x0a\x0a\x09self announcer announce: (HLInstanceVariableSelected on: selection)",
-messageSends: ["announce:", "on:", "announcer"],
+messageSends: ["announce:", "announcer", "on:"],
 referencedClasses: ["HLInstanceVariableSelected"]
 }),
 smalltalk.HLInspectorModel);
@@ -412,7 +413,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@variables"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=_st($Dictionary())._new();
 } else {
 $1=$2;
@@ -476,7 +477,7 @@ function $Announcer(){return smalltalk.Announcer||(typeof Announcer=="undefined"
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@announcer"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@announcer"]=_st($Announcer())._new();
 $1=self["@announcer"];
 } else {
@@ -577,7 +578,7 @@ smalltalk.HLInspectorVariablesWidget.superclass.fn.prototype._refresh.apply(_st(
 return self}, function($ctx1) {$ctx1.fill(self,"refresh",{},smalltalk.HLInspectorVariablesWidget)})},
 args: [],
 source: "refresh\x0a\x09self variables = self items ifFalse: [\x0a\x09\x09self resetItems.\x0a    \x09super refresh ]",
-messageSends: ["ifFalse:", "resetItems", "refresh", "=", "items", "variables"],
+messageSends: ["ifFalse:", "=", "variables", "items", "resetItems", "refresh"],
 referencedClasses: []
 }),
 smalltalk.HLInspectorVariablesWidget);
@@ -597,12 +598,12 @@ _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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 self["@diveButton"]=$2;
 return self}, function($ctx1) {$ctx1.fill(self,"renderButtonsOn:",{html:html},smalltalk.HLInspectorVariablesWidget)})},
 args: ["html"],
 source: "renderButtonsOn: html\x0a\x09diveButton := html button \x0a\x09\x09class: 'btn';\x0a\x09\x09with: 'Dive'; \x0a\x09\x09onClick: [ self announcer announce: HLDiveRequested new ]",
-messageSends: ["class:", "button", "with:", "onClick:", "announce:", "new", "announcer"],
+messageSends: ["class:", "button", "with:", "onClick:", "announce:", "announcer", "new"],
 referencedClasses: ["HLDiveRequested"]
 }),
 smalltalk.HLInspectorVariablesWidget);
@@ -725,7 +726,7 @@ function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="u
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@codeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLCodeWidget())._new();
 _st($3)._model_(_st(self["@model"])._code());
 _st($3)._receiver_(_st(self["@model"])._inspectee());
@@ -739,7 +740,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"codeWidget",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "codeWidget\x0a\x09^ codeWidget ifNil: [\x0a\x09\x09codeWidget := HLCodeWidget new\x0a    \x09\x09model: model code;\x0a        \x09receiver: model inspectee;\x0a        \x09yourself ]",
-messageSends: ["ifNil:", "model:", "code", "new", "receiver:", "inspectee", "yourself"],
+messageSends: ["ifNil:", "model:", "new", "code", "receiver:", "inspectee", "yourself"],
 referencedClasses: ["HLCodeWidget"]
 }),
 smalltalk.HLInspectorWidget);
@@ -754,7 +755,7 @@ function $HLInspectorDisplayWidget(){return smalltalk.HLInspectorDisplayWidget||
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@displayWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLInspectorDisplayWidget())._new();
 _st($3)._model_(self._model());
 $4=_st($3)._yourself();
@@ -767,7 +768,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"displayWidget",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "displayWidget\x0a\x09^ displayWidget ifNil: [\x0a\x09\x09displayWidget := HLInspectorDisplayWidget new\x0a    \x09\x09model: self model;\x0a        \x09yourself ]",
-messageSends: ["ifNil:", "model:", "model", "new", "yourself"],
+messageSends: ["ifNil:", "model:", "new", "model", "yourself"],
 referencedClasses: ["HLInspectorDisplayWidget"]
 }),
 smalltalk.HLInspectorWidget);
@@ -796,11 +797,10 @@ category: 'actions',
 fn: function (anObject){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 _st(self._model())._inspect_on_(anObject,self);
-$1=self;
-_st($1)._refreshVariablesWidget();
-$2=_st($1)._refreshDisplayWidget();
+self._refreshVariablesWidget();
+$1=self._refreshDisplayWidget();
 return self}, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},smalltalk.HLInspectorWidget)})},
 args: ["anObject"],
 source: "inspect: anObject\x0a\x09self model inspect: anObject on: self.\x0a    \x0a\x09self \x0a    \x09refreshVariablesWidget;\x0a\x09\x09refreshDisplayWidget",
@@ -871,7 +871,7 @@ function $HLInspectorModel(){return smalltalk.HLInspectorModel||(typeof HLInspec
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self._model_(_st($HLInspectorModel())._new());
 $1=self["@model"];
 } else {
@@ -893,17 +893,16 @@ category: 'accessing',
 fn: function (aModel){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 self["@model"]=aModel;
 _st(self._codeWidget())._model_(_st(aModel)._code());
-$1=self;
-_st($1)._observeCodeWidget();
-_st($1)._observeVariablesWidget();
-$2=_st($1)._observeModel();
+self._observeCodeWidget();
+self._observeVariablesWidget();
+$1=self._observeModel();
 return self}, function($ctx1) {$ctx1.fill(self,"model:",{aModel:aModel},smalltalk.HLInspectorWidget)})},
 args: ["aModel"],
 source: "model: aModel\x0a\x09model := aModel. \x0a    self codeWidget model: aModel code.\x0a    \x0a    self \x0a        observeCodeWidget;\x0a    \x09observeVariablesWidget;\x0a        observeModel",
-messageSends: ["model:", "code", "codeWidget", "observeCodeWidget", "observeVariablesWidget", "observeModel"],
+messageSends: ["model:", "codeWidget", "code", "observeCodeWidget", "observeVariablesWidget", "observeModel"],
 referencedClasses: []
 }),
 smalltalk.HLInspectorWidget);
@@ -919,11 +918,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeCodeWidget",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "observeCodeWidget\x0a\x09self codeWidget announcer \x0a    \x09on: HLDoItExecuted \x0a        do: [ self onDoneIt ]",
-messageSends: ["on:do:", "onDoneIt", "announcer", "codeWidget"],
+messageSends: ["on:do:", "announcer", "codeWidget", "onDoneIt"],
 referencedClasses: ["HLDoItExecuted"]
 }),
 smalltalk.HLInspectorWidget);
@@ -956,11 +955,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeVariablesWidget",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "observeVariablesWidget\x0a\x09self variablesWidget announcer \x0a        on: HLDiveRequested do:[ self onDive ]",
-messageSends: ["on:do:", "onDive", "announcer", "variablesWidget"],
+messageSends: ["on:do:", "announcer", "variablesWidget", "onDive"],
 referencedClasses: ["HLDiveRequested"]
 }),
 smalltalk.HLInspectorWidget);
@@ -980,7 +979,7 @@ $2=_st($1)._openAsTab();
 return self}, function($ctx1) {$ctx1.fill(self,"onDive",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "onDive\x0a\x0a\x09HLInspector new \x0a\x09\x09inspect: self model selectedInstVarObject;\x0a\x09\x09openAsTab",
-messageSends: ["inspect:", "selectedInstVarObject", "model", "new", "openAsTab"],
+messageSends: ["inspect:", "new", "selectedInstVarObject", "model", "openAsTab"],
 referencedClasses: ["HLInspector"]
 }),
 smalltalk.HLInspectorWidget);
@@ -1028,7 +1027,7 @@ self._refreshDisplayWidget();
 return self}, function($ctx1) {$ctx1.fill(self,"onInstanceVariableSelected",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "onInstanceVariableSelected\x0a\x09self codeWidget receiver: self model selectedInstVarObject.\x0a\x09self refreshDisplayWidget",
-messageSends: ["receiver:", "selectedInstVarObject", "model", "codeWidget", "refreshDisplayWidget"],
+messageSends: ["receiver:", "codeWidget", "selectedInstVarObject", "model", "refreshDisplayWidget"],
 referencedClasses: []
 }),
 smalltalk.HLInspectorWidget);
@@ -1119,15 +1118,21 @@ selector: "renderContentOn:",
 category: 'rendering',
 fn: function (html){
 var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
 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()));
+var $1,$3,$4,$2;
+$1=html;
+$3=$HLHorizontalSplitter();
+$4=_st($HLVerticalSplitter())._with_with_(self._variablesWidget(),self._displayWidget());
+$2=_st($3)._with_with_($4,self._codeWidget());
+$ctx1.sendIdx["with:with:"]=1;
+_st($1)._with_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspectorWidget)})},
 args: ["html"],
 source: "renderContentOn: html\x0a   \x09html with: (HLHorizontalSplitter\x0a    \x09with: (HLVerticalSplitter \x0a            with: self variablesWidget\x0a            with: self displayWidget)\x0a        with: self codeWidget)",
 messageSends: ["with:", "with:with:", "variablesWidget", "displayWidget", "codeWidget"],
-referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter"]
+referencedClasses: ["HLHorizontalSplitter", "HLVerticalSplitter"]
 }),
 smalltalk.HLInspectorWidget);
 
@@ -1207,7 +1212,7 @@ function $HLInspectorVariablesWidget(){return smalltalk.HLInspectorVariablesWidg
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@variablesWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLInspectorVariablesWidget())._new();
 _st($3)._model_(self._model());
 $4=_st($3)._yourself();
@@ -1220,7 +1225,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"variablesWidget",{},smalltalk.HLInspectorWidget)})},
 args: [],
 source: "variablesWidget\x0a\x09^ variablesWidget ifNil: [\x0a\x09\x09variablesWidget := HLInspectorVariablesWidget new\x0a    \x09\x09model: self model;\x0a        \x09yourself ]",
-messageSends: ["ifNil:", "model:", "model", "new", "yourself"],
+messageSends: ["ifNil:", "model:", "new", "model", "yourself"],
 referencedClasses: ["HLInspectorVariablesWidget"]
 }),
 smalltalk.HLInspectorWidget);
@@ -1234,17 +1239,30 @@ selector: "renderContentOn:",
 category: 'rendering',
 fn: function (html){
 var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
 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();
+var $2,$4,$6,$8,$9,$7,$5,$3,$1,$10;
+$2=html;
+$4=$HLContainer();
+$6=$HLHorizontalSplitter();
+$8=$HLVerticalSplitter();
+$9=self._variablesWidget();
+$ctx1.sendIdx["variablesWidget"]=1;
+$7=_st($8)._with_with_($9,self._displayWidget());
+$5=_st($6)._with_with_($7,self._codeWidget());
+$ctx1.sendIdx["with:with:"]=1;
+$3=_st($4)._with_($5);
+$1=_st($2)._with_($3);
+$ctx1.sendIdx["with:"]=1;
+$10=self._variablesWidget();
+_st($10)._focus();
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLInspector)})},
 args: ["html"],
 source: "renderContentOn: html\x0a   \x09html with: (HLContainer with: (HLHorizontalSplitter\x0a    \x09with: (HLVerticalSplitter \x0a            with: self variablesWidget\x0a            with: self displayWidget)\x0a        with: self codeWidget)).\x0a\x09\x0a\x09self variablesWidget focus",
 messageSends: ["with:", "with:with:", "variablesWidget", "displayWidget", "codeWidget", "focus"],
-referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter", "HLContainer"]
+referencedClasses: ["HLContainer", "HLHorizontalSplitter", "HLVerticalSplitter"]
 }),
 smalltalk.HLInspector);
 
@@ -1312,7 +1330,7 @@ function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof Ordere
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@inspectors"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@inspectors"]=_st($OrderedCollection())._new();
 $1=self["@inspectors"];
 } else {
@@ -1419,14 +1437,14 @@ 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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithInterval_((500));
+}, 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)})},
 args: [],
 source: "watchChanges\x0a\x09[ self inspectors do: [ :each | each refresh ] ]\x0a\x09\x09valueWithInterval: 500",
-messageSends: ["valueWithInterval:", "do:", "refresh", "inspectors"],
+messageSends: ["valueWithInterval:", "do:", "inspectors", "refresh"],
 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:", "showWidget:", "inputWidget", "helper", "current", "executeCommand", "isInputRequired", "command"]}),
-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)})}));
-$5=_st($2)._yourself();
-$1=$5;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputBinding",{},smalltalk.HLBindingAction)})},
-messageSends: ["label:", "inputLabel", "command", "new", "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)})}));
-$5=_st($2)._yourself();
-$1=$5;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"inputWidget",{},smalltalk.HLBindingAction)})},
-messageSends: ["ghostText:", "displayLabel", "command", "new", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"activeBindings",{},smalltalk.HLBindingGroup)})},
-messageSends: ["select:", "isActive", "bindings"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.HLBindingGroup)})},
-messageSends: ["detect:ifNone:", "=", "label", "bindings"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"atKey:",{anInteger:anInteger},smalltalk.HLBindingGroup)})},
-messageSends: ["detect:ifNone:", "=", "key", "bindings"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.HLBindingGroup)})},
-messageSends: ["do:", "release", "bindings"]}),
-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:", "renderBindingGroup:on:", "isActive"]}),
-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)})});
-$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)})}))._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)})}));
-self._message_(_st(ex)._messageText());
-return self._errorStatus();
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"evaluate:",{aString:aString},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["on:do:", "one:do:", "clearStatus", "asJQuery", "input", "message:", "messageText", "errorStatus", "value:", "callback"]}),
-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)})}))._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)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self["@input"])._asJQuery())._focus();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((10));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLBindingActionInputWidget)})},
-messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "ghostText", "input", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "evaluate:", "val", "asJQuery", "=", "which", "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 $HLCloseTabCommand(){return smalltalk.HLCloseTabCommand||(typeof HLCloseTabCommand=="undefined"?nil:HLCloseTabCommand)}
-function $HLBindingGroup(){return smalltalk.HLBindingGroup||(typeof HLBindingGroup=="undefined"?nil:HLBindingGroup)}
-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:", "asBinding", "new", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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:", "deactivate", "preventDefault", "or:", "and:", "ctrlKey", "=", "which", "escapeKey", "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:", "which", "selectedBinding", "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:", "activate", "preventDefault", "ctrlKey", "=", "activationKey", "which"]}),
-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:", "handleActiveKeyDown:", "handleInactiveKeyDown:", "isActive"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupEvents",{},smalltalk.HLKeyBinder)})},
-messageSends: ["keydown:", "handleKeyDown:", "asJQuery"]}),
-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)})}));
-return $6;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._renderBindingActionFor_on_(each,html);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderBindingGroup:on:",{aBindingGroup:aBindingGroup,html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["do:", "renderBindingActionFor:on:", "sorted:", "<", "key", "activeBindings"]}),
-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)})}));
-$2=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._keyBinder())._deactivate();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-$4=_st($3)._onClick_((function(){
-return smalltalk.withContext(function($ctx4) {
-return _st(self._keyBinder())._activate();
-}, function($ctx4) {$ctx4.fillBlock({},$ctx3)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}))._appendToJQuery_("body"._asJQuery());
-return self}, function($ctx1) {$ctx1.fill(self,"renderCog",{},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["appendToJQuery:", "asJQuery", "id:", "div", "with:", "class:", "tag:", "a", "onClick:", "activate", "keyBinder"]}),
-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)})}));
-$4;
-return self._renderCloseOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
-messageSends: ["class:", "cssClass", "div", "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)})}))._appendToJQuery_("body"._asJQuery());
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st("#helper"._asJQuery())._fadeOut_((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._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)})}),(function(e){
-return smalltalk.withContext(function($ctx2) {
-return self._handleKeyUp();
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"bindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["bindKeyDown:keyUp:", "handleKeyDown:", "handleKeyUp", "widget"]}),
-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)})}));
-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:", "whileKeyDownDo:", "and:", "not", "isKeyDown", "=", "which"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{anEvent:anEvent},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["keysAndValuesDo:", "handleEvent:forKey:action:", "keyBindings"]}),
-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:", "ifNotNil:", "clearInterval", "clearTimeout", "isKeyDown"]}),
-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)})}))._valueWithInterval_(self._repeatInterval());
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"startRepeatingAction:",{aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
-messageSends: ["valueWithInterval:", "repeatInterval", "ifTrue:ifFalse:", "value", "handleKeyUp", "hasFocus", "widget"]}),
-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)})}))._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);

+ 248 - 164
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.";
@@ -12,7 +13,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 return self}, function($ctx1) {$ctx1.fill(self,"apply",{},smalltalk.HLBinding)})},
 args: [],
-source: "apply\x0a\x09",
+source: "apply",
 messageSends: [],
 referencedClasses: []
 }),
@@ -231,7 +232,7 @@ self._executeCommand();
 return self}, function($ctx1) {$ctx1.fill(self,"apply",{},smalltalk.HLBindingAction)})},
 args: [],
 source: "apply\x0a\x09self command isInputRequired\x0a\x09\x09ifTrue: [ HLKeyBinder current helper showWidget: self inputWidget ]\x0a\x09\x09ifFalse: [ self executeCommand ]",
-messageSends: ["ifTrue:ifFalse:", "showWidget:", "inputWidget", "helper", "current", "executeCommand", "isInputRequired", "command"],
+messageSends: ["ifTrue:ifFalse:", "isInputRequired", "command", "showWidget:", "helper", "current", "inputWidget", "executeCommand"],
 referencedClasses: ["HLKeyBinder"]
 }),
 smalltalk.HLBindingAction);
@@ -312,26 +313,42 @@ 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;
+var $2,$3,$5,$4,$6,$8,$7,$9,$11,$10,$12,$14,$13,$15,$16,$17,$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());
+$3=$2;
+$5=self._command();
+$ctx1.sendIdx["command"]=1;
+$4=_st($5)._inputLabel();
+_st($3)._label_($4);
+$6=$2;
+$8=self._command();
+$ctx1.sendIdx["command"]=2;
+$7=_st($8)._displayLabel();
+_st($6)._ghostText_($7);
+$9=$2;
+$11=self._command();
+$ctx1.sendIdx["command"]=3;
+$10=_st($11)._defaultInput();
+_st($9)._defaultValue_($10);
+$12=$2;
+$14=self._command();
+$ctx1.sendIdx["command"]=4;
+$13=_st($14)._inputCompletion();
+_st($12)._inputCompletion_($13);
 _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)})}));
-$5=_st($2)._yourself();
-$1=$5;
+$15=self._command();
+_st($15)._input_(val);
+$16=_st($15)._execute();
+return $16;
+}, function($ctx2) {$ctx2.fillBlock({val:val},$ctx1,1)})}));
+$17=_st($2)._yourself();
+$1=$17;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"inputBinding",{},smalltalk.HLBindingAction)})},
 args: [],
 source: "inputBinding\x0a\x09^ HLBindingInput new\x0a\x09\x09label: self command inputLabel;\x0a\x09\x09ghostText: self command displayLabel;\x0a\x09\x09defaultValue: self command defaultInput;\x0a\x09\x09inputCompletion: self command inputCompletion;\x0a\x09\x09callback: [ :val | \x0a\x09\x09\x09self command \x0a\x09\x09\x09\x09input: val;\x0a\x09\x09\x09\x09execute ];\x0a\x09\x09yourself",
-messageSends: ["label:", "inputLabel", "command", "new", "ghostText:", "displayLabel", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "execute", "yourself"],
+messageSends: ["label:", "new", "inputLabel", "command", "ghostText:", "displayLabel", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "execute", "yourself"],
 referencedClasses: ["HLBindingInput"]
 }),
 smalltalk.HLBindingAction);
@@ -344,25 +361,35 @@ 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;
+var $2,$3,$5,$4,$6,$8,$7,$9,$11,$10,$12,$13,$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());
+$3=$2;
+$5=self._command();
+$ctx1.sendIdx["command"]=1;
+$4=_st($5)._displayLabel();
+_st($3)._ghostText_($4);
+$6=$2;
+$8=self._command();
+$ctx1.sendIdx["command"]=2;
+$7=_st($8)._defaultInput();
+_st($6)._defaultValue_($7);
+$9=$2;
+$11=self._command();
+$10=_st($11)._inputCompletion();
+_st($9)._inputCompletion_($10);
 _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)})}));
-$5=_st($2)._yourself();
-$1=$5;
+self._input_(value);
+$12=self._executeCommand();
+return $12;
+}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,1)})}));
+$13=_st($2)._yourself();
+$1=$13;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"inputWidget",{},smalltalk.HLBindingAction)})},
 args: [],
 source: "inputWidget\x0a\x09^ HLBindingActionInputWidget new\x0a\x09\x09ghostText: self command displayLabel;\x0a\x09\x09defaultValue: self command defaultInput;\x0a\x09\x09inputCompletion: self command inputCompletion;\x0a\x09\x09callback: [ :value | \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09input: value;\x0a\x09\x09\x09\x09executeCommand ];\x0a\x09\x09yourself",
-messageSends: ["ghostText:", "displayLabel", "command", "new", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "executeCommand", "yourself"],
+messageSends: ["ghostText:", "new", "displayLabel", "command", "defaultValue:", "defaultInput", "inputCompletion:", "inputCompletion", "callback:", "input:", "executeCommand", "yourself"],
 referencedClasses: ["HLBindingActionInputWidget"]
 }),
 smalltalk.HLBindingAction);
@@ -400,12 +427,12 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"activeBindings",{},smalltalk.HLBindingGroup)})},
 args: [],
 source: "activeBindings\x0a\x09^ self bindings select: [ :each | each isActive ]",
-messageSends: ["select:", "isActive", "bindings"],
+messageSends: ["select:", "bindings", "isActive"],
 referencedClasses: []
 }),
 smalltalk.HLBindingGroup);
@@ -477,15 +504,15 @@ 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)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},smalltalk.HLBindingGroup)})},
 args: ["aString"],
 source: "at: aString\x0a\x09^ self bindings \x0a    \x09detect: [ :each | each label = aString ]\x0a      \x09ifNone: [ nil ]",
-messageSends: ["detect:ifNone:", "=", "label", "bindings"],
+messageSends: ["detect:ifNone:", "bindings", "=", "label"],
 referencedClasses: []
 }),
 smalltalk.HLBindingGroup);
@@ -498,12 +525,11 @@ fn: function (aString,aBinding){
 var self=this;
 var binding;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 binding=self._at_(aString);
 $1=binding;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
+if(($receiver = $1) == nil || $receiver == null){
+return self;
 } else {
 $1;
 };
@@ -527,15 +553,15 @@ 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)})}),(function(){
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
 return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"atKey:",{anInteger:anInteger},smalltalk.HLBindingGroup)})},
 args: ["anInteger"],
 source: "atKey: anInteger\x0a\x09^ self bindings \x0a    \x09detect: [ :each | each key = anInteger ]\x0a      \x09ifNone: [ nil ]",
-messageSends: ["detect:ifNone:", "=", "key", "bindings"],
+messageSends: ["detect:ifNone:", "bindings", "=", "key"],
 referencedClasses: []
 }),
 smalltalk.HLBindingGroup);
@@ -550,7 +576,7 @@ function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof Ordere
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@bindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@bindings"]=_st($OrderedCollection())._new();
 $1=self["@bindings"];
 } else {
@@ -611,11 +637,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"release",{},smalltalk.HLBindingGroup)})},
 args: [],
 source: "release\x0a\x09self bindings do: [ :each | each release ]",
-messageSends: ["do:", "release", "bindings"],
+messageSends: ["do:", "bindings", "release"],
 referencedClasses: []
 }),
 smalltalk.HLBindingGroup);
@@ -635,7 +661,7 @@ _st(aBindingHelper)._renderBindingGroup_on_(self,html);
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:html:",{aBindingHelper:aBindingHelper,html:html},smalltalk.HLBindingGroup)})},
 args: ["aBindingHelper", "html"],
 source: "renderOn: aBindingHelper html: html\x0a\x09self isActive ifTrue: [\x0a\x09\x09aBindingHelper renderBindingGroup: self on: html ]",
-messageSends: ["ifTrue:", "renderBindingGroup:on:", "isActive"],
+messageSends: ["ifTrue:", "isActive", "renderBindingGroup:on:"],
 referencedClasses: []
 }),
 smalltalk.HLBindingGroup);
@@ -653,10 +679,10 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@callback"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@callback"]=(function(value){
 return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})});
+}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1,2)})});
 $1=self["@callback"];
 } else {
 $1=$2;
@@ -713,7 +739,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@defaultValue"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -771,19 +797,19 @@ return smalltalk.withContext(function($ctx1) {
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self._callback())._value_(aString);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(ex){
+}, 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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)})}));
 self._message_(_st(ex)._messageText());
 return self._errorStatus();
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"evaluate:",{aString:aString},smalltalk.HLBindingActionInputWidget)})},
 args: ["aString"],
 source: "evaluate: aString\x09\x0a\x09[ self callback value: aString ]\x0a\x09\x09on: Error\x0a\x09\x09do: [:ex |\x0a\x09\x09\x09self input asJQuery \x0a\x09\x09\x09\x09one: 'keydown' \x0a\x09\x09\x09\x09do: [ self clearStatus ].\x0a\x09\x09\x09self message: ex messageText.\x0a\x09\x09\x09self errorStatus ]",
-messageSends: ["on:do:", "one:do:", "clearStatus", "asJQuery", "input", "message:", "messageText", "errorStatus", "value:", "callback"],
+messageSends: ["on:do:", "value:", "callback", "one:do:", "asJQuery", "input", "clearStatus", "message:", "messageText", "errorStatus"],
 referencedClasses: ["Error"]
 }),
 smalltalk.HLBindingActionInputWidget);
@@ -849,7 +875,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@inputCompletion"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=[];
 } else {
 $1=$2;
@@ -888,7 +914,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@message"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@message"]="";
 $1=self["@message"];
 } else {
@@ -926,11 +952,10 @@ category: 'actions',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 $1=self["@wrapper"];
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
+if(($receiver = $1) == nil || $receiver == null){
+return self;
 } else {
 $1;
 };
@@ -951,46 +976,58 @@ category: 'rendering',
 fn: function (html){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$6,$5,$7,$8,$3;
+var $1,$2,$4,$6,$8,$10,$9,$7,$5,$11,$12,$13,$3,$14;
 $1=self["@wrapper"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 self["@wrapper"]=_st(html)._span();
+$ctx1.sendIdx["span"]=1;
 self["@wrapper"];
 } else {
 $1;
 };
 $2=self["@wrapper"];
 _st($2)._class_(self._status());
+$ctx1.sendIdx["class:"]=1;
 $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){
+$6=$4;
+$7=_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());
+$8=_st(_st(event)._which()).__eq((13));
+if(smalltalk.assert($8)){
+$10=_st(self["@input"])._asJQuery();
+$ctx3.sendIdx["asJQuery"]=1;
+$9=_st($10)._val();
+return self._evaluate_($9);
 };
-}, function($ctx3) {$ctx3.fillBlock({event:event},$ctx2)})}))._yourself());
+}, function($ctx3) {$ctx3.fillBlock({event:event},$ctx2,3)})}))._yourself();
+$ctx2.sendIdx["yourself"]=1;
+$5=_st($6)._onKeyDown_($7);
 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;
+$11=_st(self["@input"])._asJQuery();
+$ctx2.sendIdx["asJQuery"]=2;
+_st($11)._typeahead_(smalltalk.HashedCollection._from_(["source".__minus_gt(self._inputCompletion())]));
+$12=_st(html)._span();
+_st($12)._class_("help-inline");
+_st($12)._with_(self._message());
+$13=_st($12)._yourself();
+self["@messageTag"]=$13;
 return self["@messageTag"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+$ctx1.sendIdx["with:"]=1;
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(self["@input"])._asJQuery())._focus();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((10));
+$14=_st(self["@input"])._asJQuery();
+return _st($14)._focus();
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)})}))._valueWithTimeout_((10));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLBindingActionInputWidget)})},
 args: ["html"],
 source: "renderOn: html\x0a\x09wrapper ifNil: [ wrapper := html span ].\x0a\x0a\x09wrapper \x0a\x09\x09class: self status;\x0a\x09\x09with: [\x0a\x09\x09\x09input := html input\x0a\x09\x09\x09\x09placeholder: self ghostText;\x0a\x09\x09\x09\x09value: self defaultValue;\x0a\x09\x09\x09\x09onKeyDown: [ :event | \x0a\x09\x09\x09\x09\x09event which = 13 ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self evaluate: input asJQuery val ] ]\x0a\x09\x09\x09\x09yourself.\x0a\x09\x09\x09input asJQuery \x0a\x09\x09\x09\x09typeahead: #{ 'source' -> self inputCompletion }.\x0a\x09\x09\x09messageTag := (html span\x0a\x09\x09\x09\x09class: 'help-inline';\x0a\x09\x09\x09\x09with: self message;\x0a\x09\x09\x09\x09yourself) ].\x0a\x09\x0a\x09\x22Evaluate with a timeout to ensure focus.\x0a\x09Commands can be executed from a menu, clicking on the menu to\x0a\x09evaluate the command would give it the focus otherwise\x22\x0a\x09\x0a\x09[ input asJQuery focus ] valueWithTimeout: 10",
-messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "ghostText", "input", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "evaluate:", "val", "asJQuery", "=", "which", "typeahead:", "->", "inputCompletion", "message", "valueWithTimeout:", "focus"],
+messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "input", "ghostText", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "=", "which", "evaluate:", "val", "asJQuery", "typeahead:", "->", "inputCompletion", "message", "valueWithTimeout:", "focus"],
 referencedClasses: []
 }),
 smalltalk.HLBindingActionInputWidget);
@@ -1004,7 +1041,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@status"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@status"]="info";
 $1=self["@status"];
 } else {
@@ -1094,11 +1131,10 @@ category: 'actions',
 fn: function (aBinding){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 $1=_st(aBinding)._isActive();
 if(! smalltalk.assert($1)){
-$2=self;
-return $2;
+return self;
 };
 self._selectBinding_(aBinding);
 _st(aBinding)._apply();
@@ -1119,7 +1155,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@bindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@bindings"]=self._defaultBindings();
 $1=self["@bindings"];
 } else {
@@ -1143,7 +1179,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 $1=self["@selectedBinding"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
 _st(self["@selectedBinding"])._release();
@@ -1165,25 +1201,35 @@ category: 'defaults',
 fn: function (){
 var self=this;
 var group;
-function $HLCloseTabCommand(){return smalltalk.HLCloseTabCommand||(typeof HLCloseTabCommand=="undefined"?nil:HLCloseTabCommand)}
 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;
+var $1,$2,$4,$3,$5,$7,$6,$8,$9;
 $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;
+$ctx1.sendIdx["new"]=1;
+$2=$1;
+$4=_st($HLCloseTabCommand())._new();
+$ctx1.sendIdx["new"]=2;
+$3=_st($4)._asBinding();
+$ctx1.sendIdx["asBinding"]=1;
+_st($2)._add_($3);
+$ctx1.sendIdx["add:"]=1;
+$5=$1;
+$7=_st($HLSwitchTabCommand())._new();
+$6=_st($7)._asBinding();
+_st($5)._add_($6);
+$8=_st($1)._yourself();
+group=$8;
 _st($HLOpenCommand())._registerConcreteClassesOn_(group);
-$3=group;
-return $3;
+$9=group;
+return $9;
 }, function($ctx1) {$ctx1.fill(self,"defaultBindings",{group:group},smalltalk.HLKeyBinder)})},
 args: [],
 source: "defaultBindings\x0a\x09| group |\x0a\x09\x0a\x09group := HLBindingGroup new\x0a\x09\x09add: HLCloseTabCommand new asBinding;\x0a\x09\x09add: HLSwitchTabCommand new asBinding;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09HLOpenCommand registerConcreteClassesOn: group.\x0a\x09\x09\x09\x09\x0a\x09^ group",
-messageSends: ["add:", "asBinding", "new", "yourself", "registerConcreteClassesOn:"],
-referencedClasses: ["HLCloseTabCommand", "HLBindingGroup", "HLSwitchTabCommand", "HLOpenCommand"]
+messageSends: ["add:", "new", "asBinding", "yourself", "registerConcreteClassesOn:"],
+referencedClasses: ["HLBindingGroup", "HLCloseTabCommand", "HLSwitchTabCommand", "HLOpenCommand"]
 }),
 smalltalk.HLKeyBinder);
 
@@ -1226,25 +1272,31 @@ category: 'events',
 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(){
+var $3,$2,$5,$4,$1,$6;
+$3=_st(event)._which();
+$ctx1.sendIdx["which"]=1;
+$2=_st($3).__eq(self._escapeKey());
+$ctx1.sendIdx["="]=1;
+$1=_st($2)._or_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st(event)._which()).__eq((71)))._and_((function(){
+$5=_st(event)._which();
+$4=_st($5).__eq((71));
+return _st($4)._and_((function(){
 return smalltalk.withContext(function($ctx3) {
 return _st(event)._ctrlKey();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, 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;
+$6=self._handleBindingFor_(event);
+return $6;
 }, function($ctx1) {$ctx1.fill(self,"handleActiveKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
 args: ["event"],
 source: "handleActiveKeyDown: event\x0a\x0a\x09\x22ESC or ctrl+g deactivate the keyBinder\x22\x0a\x09(event which = self escapeKey or: [\x0a\x09\x09event which = 71 and: [ event ctrlKey ] ])\x0a        \x09ifTrue: [ \x0a            \x09self deactivate.\x0a\x09\x09\x09\x09event preventDefault.\x0a\x09\x09\x09\x09^ false ].\x0a            \x0a    \x22Handle the keybinding\x22\x0a    ^ self handleBindingFor: event",
-messageSends: ["ifTrue:", "deactivate", "preventDefault", "or:", "and:", "ctrlKey", "=", "which", "escapeKey", "handleBindingFor:"],
+messageSends: ["ifTrue:", "or:", "=", "which", "escapeKey", "and:", "ctrlKey", "deactivate", "preventDefault", "handleBindingFor:"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinder);
@@ -1260,7 +1312,7 @@ return smalltalk.withContext(function($ctx1) {
 var $1;
 binding=_st(self._selectedBinding())._atKey_(_st(anEvent)._which());
 $1=binding;
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
 self._applyBinding_(binding);
@@ -1270,7 +1322,7 @@ return false;
 return self}, function($ctx1) {$ctx1.fill(self,"handleBindingFor:",{anEvent:anEvent,binding:binding},smalltalk.HLKeyBinder)})},
 args: ["anEvent"],
 source: "handleBindingFor: anEvent\x0a\x09| binding |\x0a    binding := self selectedBinding atKey: anEvent which.\x0a    \x0a    binding ifNotNil: [ \x0a    \x09self applyBinding: binding.\x0a\x09\x09anEvent preventDefault.\x0a\x09\x09^ false ]",
-messageSends: ["atKey:", "which", "selectedBinding", "ifNotNil:", "applyBinding:", "preventDefault"],
+messageSends: ["atKey:", "selectedBinding", "which", "ifNotNil:", "applyBinding:", "preventDefault"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinder);
@@ -1282,11 +1334,11 @@ category: 'events',
 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();
+var $2,$3,$1;
+$2=_st(_st(event)._which()).__eq(self._activationKey());
 if(smalltalk.assert($2)){
+$3=_st(event)._ctrlKey();
+if(smalltalk.assert($3)){
 self._activate();
 _st(event)._preventDefault();
 return false;
@@ -1295,7 +1347,7 @@ return false;
 return self}, function($ctx1) {$ctx1.fill(self,"handleInactiveKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
 args: ["event"],
 source: "handleInactiveKeyDown: event\x0a\x09event which = self activationKey ifTrue: [\x0a    \x09event ctrlKey ifTrue: [\x0a\x09\x09\x09self activate. \x0a            event preventDefault. \x0a            ^ false ] ]",
-messageSends: ["ifTrue:", "activate", "preventDefault", "ctrlKey", "=", "activationKey", "which"],
+messageSends: ["ifTrue:", "=", "which", "activationKey", "ctrlKey", "activate", "preventDefault"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinder);
@@ -1318,7 +1370,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{event:event},smalltalk.HLKeyBinder)})},
 args: ["event"],
 source: "handleKeyDown: event\x0a\x09^ self isActive\x0a    \x09ifTrue: [ self handleActiveKeyDown: event ]\x0a      \x09ifFalse: [ self handleInactiveKeyDown: event ]",
-messageSends: ["ifTrue:ifFalse:", "handleActiveKeyDown:", "handleInactiveKeyDown:", "isActive"],
+messageSends: ["ifTrue:ifFalse:", "isActive", "handleActiveKeyDown:", "handleInactiveKeyDown:"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinder);
@@ -1388,11 +1440,10 @@ category: 'actions',
 fn: function (aBinding){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1;
 $1=_st(aBinding).__eq(self["@selectedBinding"]);
 if(smalltalk.assert($1)){
-$2=self;
-return $2;
+return self;
 };
 self["@selectedBinding"]=aBinding;
 _st(self._helper())._refresh();
@@ -1413,7 +1464,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@selectedBinding"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=self._bindings();
 } else {
 $1=$2;
@@ -1437,11 +1488,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({event:event},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"setupEvents",{},smalltalk.HLKeyBinder)})},
 args: [],
 source: "setupEvents\x0a\x09'body' asJQuery keydown: [ :event | self handleKeyDown: event ]",
-messageSends: ["keydown:", "handleKeyDown:", "asJQuery"],
+messageSends: ["keydown:", "asJQuery", "handleKeyDown:"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinder);
@@ -1475,7 +1526,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@current"]=smalltalk.HLKeyBinder.klass.superclass.fn.prototype._new.apply(_st(self), []);
 $1=self["@current"];
 } else {
@@ -1617,12 +1668,16 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$3,$4,$5,$6,$2;
 $1=_st(html)._span();
+$ctx1.sendIdx["span"]=1;
 _st($1)._class_("command");
+$ctx1.sendIdx["class:"]=1;
 $2=_st($1)._with_((function(){
 return smalltalk.withContext(function($ctx2) {
 $3=_st(html)._span();
 _st($3)._class_("label");
+$ctx2.sendIdx["class:"]=2;
 $4=_st($3)._with_(_st(_st(aBinding)._shortcut())._asLowercase());
+$ctx2.sendIdx["with:"]=2;
 $4;
 $5=_st(html)._a();
 _st($5)._class_("action");
@@ -1630,9 +1685,10 @@ _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)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
 return $6;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["with:"]=1;
 return self}, function($ctx1) {$ctx1.fill(self,"renderBindingActionFor:on:",{aBinding:aBinding,html:html},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["aBinding", "html"],
 source: "renderBindingActionFor: aBinding on: html\x0a\x09html span class: 'command'; with: [\x0a\x09\x09html span \x0a\x09\x09\x09class: 'label'; \x0a\x09\x09\x09with: aBinding shortcut asLowercase.\x0a  \x09\x09html a \x0a        \x09class: 'action'; \x0a            with: aBinding displayLabel;\x0a  \x09\x09\x09onClick: [ self keyBinder applyBinding: aBinding ] ]",
@@ -1648,17 +1704,21 @@ category: 'rendering',
 fn: function (aBindingGroup,html){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 _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)})})))._do_((function(each){
+$1=_st(a)._key();
+$ctx2.sendIdx["key"]=1;
+$2=_st(b)._key();
+return _st($1).__lt($2);
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderBindingGroup:on:",{aBindingGroup:aBindingGroup,html:html},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["aBindingGroup", "html"],
 source: "renderBindingGroup: aBindingGroup on: html\x0a\x09(aBindingGroup activeBindings \x0a    \x09sorted: [ :a :b | a key < b key ])\x0a        do: [ :each | self renderBindingActionFor: each on: html ]",
-messageSends: ["do:", "renderBindingActionFor:on:", "sorted:", "<", "key", "activeBindings"],
+messageSends: ["do:", "sorted:", "activeBindings", "<", "key", "renderBindingActionFor:on:"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinderHelperWidget);
@@ -1673,14 +1733,15 @@ return smalltalk.withContext(function($ctx1) {
 var $1,$2;
 $1=_st(html)._a();
 _st($1)._class_("close");
+$ctx1.sendIdx["class:"]=1;
 _st($1)._with_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(_st(html)._tag_("i"))._class_("icon-remove");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderCloseOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["html"],
 source: "renderCloseOn: html\x0a\x09html a\x0a\x09\x09class: 'close';\x0a\x09\x09with: [ (html tag: 'i') class: 'icon-remove' ];\x0a\x09\x09onClick: [ self keyBinder deactivate ]",
@@ -1707,19 +1768,20 @@ $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)})}));
+}, 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)})}));
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)})}));
 return $4;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["with:"]=1;
 return $2;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}))._appendToJQuery_("body"._asJQuery());
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})}))._appendToJQuery_("body"._asJQuery());
 return self}, function($ctx1) {$ctx1.fill(self,"renderCog",{},smalltalk.HLKeyBinderHelperWidget)})},
 args: [],
 source: "renderCog\x0a\x09[ :html |\x0a\x09\x09html \x0a\x09\x09\x09div id: 'cog-helper'; \x0a\x09\x09\x09with: [\x0a\x09\x09\x09\x09html a \x0a\x09\x09\x09\x09\x09with: [ (html tag: 'i') class: 'icon-cog' ];\x0a\x09\x09\x09\x09\x09onClick: [ self keyBinder activate ] ] ]\x0a\x09\x09appendToJQuery: 'body' asJQuery",
-messageSends: ["appendToJQuery:", "asJQuery", "id:", "div", "with:", "class:", "tag:", "a", "onClick:", "activate", "keyBinder"],
+messageSends: ["appendToJQuery:", "id:", "div", "with:", "a", "class:", "tag:", "onClick:", "activate", "keyBinder", "asJQuery"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinderHelperWidget);
@@ -1733,6 +1795,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$3,$4,$2;
 $1=_st(html)._div();
+$ctx1.sendIdx["div"]=1;
 _st($1)._class_(self._cssClass());
 $2=_st($1)._with_((function(){
 return smalltalk.withContext(function($ctx2) {
@@ -1742,14 +1805,15 @@ _st($3)._id_(self._mainId());
 $4=_st($3)._with_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._renderSelectedBindingOn_(html);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
 $4;
 return self._renderCloseOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["with:"]=1;
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["html"],
 source: "renderContentOn: html\x0a\x09html div class: self cssClass; with: [\x0a      \x09self renderLabelOn:html.\x0a\x09\x09html div\x0a\x09\x09\x09id: self mainId;\x0a\x09\x09\x09with: [ self renderSelectedBindingOn: html ].\x0a\x09\x09self renderCloseOn: html ]",
-messageSends: ["class:", "cssClass", "div", "with:", "renderLabelOn:", "id:", "mainId", "renderSelectedBindingOn:", "renderCloseOn:"],
+messageSends: ["class:", "div", "cssClass", "with:", "renderLabelOn:", "id:", "mainId", "renderSelectedBindingOn:", "renderCloseOn:"],
 referencedClasses: []
 }),
 smalltalk.HLKeyBinderHelperWidget);
@@ -1766,7 +1830,7 @@ $1=_st(html)._span();
 _st($1)._class_("selected");
 $3=$1;
 $5=_st(self._selectedBinding())._label();
-if(($receiver = $5) == nil || $receiver == undefined){
+if(($receiver = $5) == nil || $receiver == null){
 $4="Action";
 } else {
 $4=$5;
@@ -1790,7 +1854,7 @@ return smalltalk.withContext(function($ctx1) {
 _st(self._selectedBinding())._renderOn_html_(self,html);
 return self}, function($ctx1) {$ctx1.fill(self,"renderSelectedBindingOn:",{html:html},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["html"],
-source: "renderSelectedBindingOn: html\x0a\x09self selectedBinding renderOn: self html: html\x0a\x09",
+source: "renderSelectedBindingOn: html\x0a\x09self selectedBinding renderOn: self html: html",
 messageSends: ["renderOn:html:", "selectedBinding"],
 referencedClasses: []
 }),
@@ -1803,19 +1867,29 @@ category: 'rendering',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-_st("#helper"._asJQuery())._remove();
-_st((function(html){
+var $1,$3,$5,$7,$6,$4,$2,$8,$9;
+$1="#helper"._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+_st($1)._remove();
+$2=(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)})}))._appendToJQuery_("body"._asJQuery());
+$3=_st(html)._div();
+_st($3)._id_("helper");
+$5=$3;
+$7="Press ".__comma(_st(self._keyBinder())._activationKeyLabel());
+$6=_st($7).__comma(" to start");
+$ctx2.sendIdx[","]=1;
+$4=_st($5)._with_($6);
+return $4;
+}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)})});
+$8="body"._asJQuery();
+$ctx1.sendIdx["asJQuery"]=2;
+_st($2)._appendToJQuery_($8);
 _st((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st("#helper"._asJQuery())._fadeOut_((1000));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((2000));
+$9="#helper"._asJQuery();
+return _st($9)._fadeOut_((1000));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._valueWithTimeout_((2000));
 return self}, function($ctx1) {$ctx1.fill(self,"renderStart",{},smalltalk.HLKeyBinderHelperWidget)})},
 args: [],
 source: "renderStart\x0a\x09'#helper' asJQuery remove.\x0a\x0a\x09[ :html |\x0a\x09\x09html div \x0a\x09\x09\x09id: 'helper';\x0a\x09\x09\x09with: 'Press ', self keyBinder activationKeyLabel, ' to start' ] appendToJQuery: 'body' asJQuery.\x0a\x09\x0a\x09[ '#helper' asJQuery fadeOut: 1000 ] \x0a\x09\x09valueWithTimeout: 2000",
@@ -1882,8 +1956,19 @@ category: 'actions',
 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());
+var $3,$2,$1,$4,$7,$6,$5;
+$3=self._mainId();
+$ctx1.sendIdx["mainId"]=1;
+$2="#".__comma($3);
+$ctx1.sendIdx[","]=1;
+$1=_st($2)._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+_st($1)._empty();
+$4=aWidget;
+$7=self._mainId();
+$6="#".__comma($7);
+$5=_st($6)._asJQuery();
+_st($4)._appendToJQuery_($5);
 return self}, function($ctx1) {$ctx1.fill(self,"showWidget:",{aWidget:aWidget},smalltalk.HLKeyBinderHelperWidget)})},
 args: ["aWidget"],
 source: "showWidget: aWidget\x0a\x09\x22Some actions need to display more info to the user or request input.\x0a\x09This method is the right place for that\x22\x0a\x09\x0a\x09('#', self mainId) asJQuery empty.\x0a\x09aWidget appendToJQuery: ('#', self mainId) asJQuery",
@@ -1927,14 +2012,14 @@ 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)})}),(function(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)})}));
+}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"bindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
 args: [],
 source: "bindKeys\x0a\x09self widget \x0a\x09\x09bindKeyDown: [ :e | self handleKeyDown: e ] \x0a\x09\x09keyUp: [ :e | self handleKeyUp ]",
-messageSends: ["bindKeyDown:keyUp:", "handleKeyDown:", "handleKeyUp", "widget"],
+messageSends: ["bindKeyDown:keyUp:", "widget", "handleKeyDown:", "handleKeyUp"],
 referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler);
@@ -1966,14 +2051,14 @@ 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)})}));
+}, 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)})},
 args: ["anEvent", "anInteger", "aBlock"],
 source: "handleEvent: anEvent forKey: anInteger action: aBlock\x0a\x09(anEvent which = anInteger and: [ self isKeyDown not ])\x0a\x09\x09ifTrue: [ self whileKeyDownDo: aBlock ]",
-messageSends: ["ifTrue:", "whileKeyDownDo:", "and:", "not", "isKeyDown", "=", "which"],
+messageSends: ["ifTrue:", "and:", "=", "which", "not", "isKeyDown", "whileKeyDownDo:"],
 referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler);
@@ -1988,11 +2073,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({key:key,action:action},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{anEvent:anEvent},smalltalk.HLRepeatedKeyDownHandler)})},
 args: ["anEvent"],
 source: "handleKeyDown: anEvent\x0a\x09self keyBindings keysAndValuesDo: [ :key :action | \x0a\x09\x09self handleEvent: anEvent forKey: key action: action ]",
-messageSends: ["keysAndValuesDo:", "handleEvent:forKey:action:", "keyBindings"],
+messageSends: ["keysAndValuesDo:", "keyBindings", "handleEvent:forKey:action:"],
 referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler);
@@ -2010,13 +2095,13 @@ if(smalltalk.assert($1)){
 self["@keyDown"]=false;
 self["@keyDown"];
 $2=self["@interval"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $2;
 } else {
 _st(self["@interval"])._clearInterval();
 };
 $3=self["@delay"];
-if(($receiver = $3) == nil || $receiver == undefined){
+if(($receiver = $3) == nil || $receiver == null){
 $3;
 } else {
 _st(self["@delay"])._clearTimeout();
@@ -2025,7 +2110,7 @@ _st(self["@delay"])._clearTimeout();
 return self}, function($ctx1) {$ctx1.fill(self,"handleKeyUp",{},smalltalk.HLRepeatedKeyDownHandler)})},
 args: [],
 source: "handleKeyUp\x0a\x09self isKeyDown ifTrue: [\x0a\x09\x09keyDown := false.\x0a\x09\x09interval ifNotNil: [ interval clearInterval ].\x0a\x09\x09delay ifNotNil: [ delay clearTimeout ] ]",
-messageSends: ["ifTrue:", "ifNotNil:", "clearInterval", "clearTimeout", "isKeyDown"],
+messageSends: ["ifTrue:", "isKeyDown", "ifNotNil:", "clearInterval", "clearTimeout"],
 referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler);
@@ -2039,7 +2124,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@keyDown"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=false;
 } else {
 $1=$2;
@@ -2063,7 +2148,7 @@ function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefin
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@keyBindings"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@keyBindings"]=_st($Dictionary())._new();
 $1=self["@keyBindings"];
 } else {
@@ -2085,10 +2170,9 @@ category: 'binding',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._unbindKeys();
-$2=_st($1)._bindKeys();
+var $1;
+self._unbindKeys();
+$1=self._bindKeys();
 return self}, function($ctx1) {$ctx1.fill(self,"rebindKeys",{},smalltalk.HLRepeatedKeyDownHandler)})},
 args: [],
 source: "rebindKeys\x0a\x09self \x0a\x09\x09unbindKeys;\x0a\x09\x09bindKeys",
@@ -2106,7 +2190,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@repeatInterval"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=self._defaultRepeatInterval();
 } else {
 $1=$2;
@@ -2152,12 +2236,12 @@ return _st(aBlock)._value();
 } else {
 return self._handleKeyUp();
 };
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithInterval_(self._repeatInterval());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithInterval_(self._repeatInterval());
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"startRepeatingAction:",{aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
 args: ["aBlock"],
 source: "startRepeatingAction: aBlock\x0a\x09^ [ (self widget hasFocus)\x0a\x09\x09ifTrue: [ aBlock value ]\x0a\x09\x09ifFalse: [ self handleKeyUp ] ] valueWithInterval: self repeatInterval",
-messageSends: ["valueWithInterval:", "repeatInterval", "ifTrue:ifFalse:", "value", "handleKeyUp", "hasFocus", "widget"],
+messageSends: ["valueWithInterval:", "ifTrue:ifFalse:", "hasFocus", "widget", "value", "handleKeyUp", "repeatInterval"],
 referencedClasses: []
 }),
 smalltalk.HLRepeatedKeyDownHandler);
@@ -2207,7 +2291,7 @@ self["@delay"]=_st((function(){
 return smalltalk.withContext(function($ctx2) {
 self["@interval"]=self._startRepeatingAction_(aBlock);
 return self["@interval"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((300));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}))._valueWithTimeout_((300));
 return self}, function($ctx1) {$ctx1.fill(self,"whileKeyDownDo:",{aBlock:aBlock},smalltalk.HLRepeatedKeyDownHandler)})},
 args: ["aBlock"],
 source: "whileKeyDownDo: aBlock\x0a\x09keyDown := true.\x0a\x09aBlock value.\x0a\x09delay := [ interval := self startRepeatingAction: aBlock ] \x0a\x09\x09valueWithTimeout: 300",
@@ -2272,4 +2356,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)})}));
-self._setupSplitter();
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLSplitter)})},
-messageSends: ["class:", "panesCssClass", "div", "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)})})),"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)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLHorizontalSplitter)})},
-messageSends: ["draggable:", "->", "parent", "asJQuery", "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)})})),"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)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLVerticalSplitter)})},
-messageSends: ["draggable:", "->", "parent", "asJQuery", "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);

+ 134 - 30
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(
@@ -168,29 +169,38 @@ category: 'rendering',
 fn: function (html){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$3,$4,$5,$6,$2;
+var $1,$3,$4,$5,$6,$7,$2;
 $1=_st(html)._div();
+$ctx1.sendIdx["div"]=1;
 _st($1)._class_(self._panesCssClass());
+$ctx1.sendIdx["class:"]=1;
 $2=_st($1)._with_((function(){
 return smalltalk.withContext(function($ctx2) {
 $3=_st(html)._div();
+$ctx2.sendIdx["div"]=2;
 _st($3)._class_("pane");
+$ctx2.sendIdx["class:"]=2;
 $4=_st($3)._with_(self._firstWidget());
+$ctx2.sendIdx["with:"]=2;
 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;
+$ctx2.sendIdx["div"]=3;
+self["@splitter"]=_st($5)._class_(self._cssClass());
+$ctx2.sendIdx["class:"]=3;
+self["@splitter"];
+$6=_st(html)._div();
+_st($6)._class_("pane");
+$7=_st($6)._with_(self._secondWidget());
+self["@secondPane"]=$7;
 return self["@secondPane"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["with:"]=1;
 self._setupSplitter();
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLSplitter)})},
 args: ["html"],
 source: "renderOn: html\x0a\x09html div class: self panesCssClass; with: [\x0a\x09\x09firstPane := html div class: 'pane'; with: self firstWidget.\x0a    \x09splitter := html div class: self cssClass.\x0a    \x09secondPane := html div class: 'pane'; with: self secondWidget ].\x0a        \x0a\x09self setupSplitter",
-messageSends: ["class:", "panesCssClass", "div", "with:", "firstWidget", "cssClass", "secondWidget", "setupSplitter"],
+messageSends: ["class:", "div", "panesCssClass", "with:", "firstWidget", "cssClass", "secondWidget", "setupSplitter"],
 referencedClasses: []
 }),
 smalltalk.HLSplitter);
@@ -344,14 +354,46 @@ 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();
+var $1,$3,$2,$6,$7,$5,$4,$9,$11,$10,$8,$13,$16,$15,$14,$12,$18,$21,$20,$19,$17;
+$1=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+container=_st($1)._parent();
+$3=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=2;
+$2=_st($3)._offset();
+offset=_st($2)._top();
 size=_st(container)._height();
-percentage=_st(_st(_st(size).__minus(_st(anInteger).__minus(offset))).__slash(size)).__star((100));
+$6=size;
+$7=_st(anInteger).__minus(offset);
+$ctx1.sendIdx["-"]=2;
+$5=_st($6).__minus($7);
+$ctx1.sendIdx["-"]=1;
+$4=_st($5).__slash(size);
+percentage=_st($4).__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("%"));
+$9=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=3;
+$11=_st(percentage)._asString();
+$ctx1.sendIdx["asString"]=1;
+$10=_st($11).__comma("%");
+$ctx1.sendIdx[","]=1;
+$8=_st($9)._css_put_("bottom",$10);
+$ctx1.sendIdx["css:put:"]=1;
+$13=_st(self["@splitter"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=4;
+$16=(100).__minus(percentage);
+$ctx1.sendIdx["-"]=3;
+$15=_st($16)._asString();
+$ctx1.sendIdx["asString"]=2;
+$14=_st($15).__comma("%");
+$ctx1.sendIdx[","]=2;
+$12=_st($13)._css_put_("top",$14);
+$ctx1.sendIdx["css:put:"]=2;
+$18=_st(self["@secondPane"])._asJQuery();
+$21=(100).__minus(percentage);
+$20=_st($21)._asString();
+$19=_st($20).__comma("%");
+$17=_st($18)._css_put_("top",$19);
 return self}, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage},smalltalk.HLHorizontalSplitter)})},
 args: ["anInteger"],
 source: "resize: anInteger\x0a\x09| container size offset percentage |\x0a    \x0a    container := firstPane asJQuery parent.\x0a\x09offset := firstPane asJQuery offset top.\x0a    size := container height.\x0a\x09\x0a\x09percentage := (size - (anInteger - offset)) / size * 100.\x0a\x09percentage := 80 min: (percentage max: 20).\x0a\x09\x0a    firstPane asJQuery css: 'bottom' put: percentage asString, '%'.\x0a\x09\x0a\x09splitter asJQuery css: 'top' put: (100 - percentage) asString, '%'.\x0a\x09secondPane asJQuery css: 'top' put: (100 - percentage) asString, '%'",
@@ -367,17 +409,32 @@ category: 'rendering',
 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){
+var $1,$3,$6,$5,$4,$7,$8,$9,$2;
+$1=_st(self["@splitter"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+$3="axis".__minus_gt("y");
+$ctx1.sendIdx["->"]=1;
+$6=_st(self["@splitter"])._asJQuery();
+$5=_st($6)._parent();
+$4="containment".__minus_gt($5);
+$ctx1.sendIdx["->"]=2;
+$7="helper".__minus_gt("clone");
+$ctx1.sendIdx["->"]=3;
+$8="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)})})),"drag".__minus_gt((function(e,ui){
+}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)})}));
+$ctx1.sendIdx["->"]=4;
+$9="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)})}))]));
+}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)})}));
+$2=smalltalk.HashedCollection._from_([$3,$4,$7,$8,$9]);
+_st($1)._draggable_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLHorizontalSplitter)})},
 args: [],
 source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ \x0a    \x09'axis' -> 'y'. \x0a        'containment' -> splitter asJQuery parent.\x0a        'helper' -> 'clone'.\x0a        'start' -> [ :e :ui | self startResizing: ui helper ].\x0a        'drag' -> [ :e :ui | self resize: ui offset top ] }",
-messageSends: ["draggable:", "->", "parent", "asJQuery", "startResizing:", "helper", "resize:", "top", "offset"],
+messageSends: ["draggable:", "asJQuery", "->", "parent", "startResizing:", "helper", "resize:", "top", "offset"],
 referencedClasses: []
 }),
 smalltalk.HLHorizontalSplitter);
@@ -461,14 +518,46 @@ 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();
+var $1,$3,$2,$6,$7,$5,$4,$9,$11,$10,$8,$13,$16,$15,$14,$12,$18,$21,$20,$19,$17;
+$1=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+container=_st($1)._parent();
+$3=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=2;
+$2=_st($3)._offset();
+offset=_st($2)._left();
 size=_st(container)._width();
-percentage=_st(_st(_st(size).__minus(_st(anInteger).__minus(offset))).__slash(size)).__star((100));
+$6=size;
+$7=_st(anInteger).__minus(offset);
+$ctx1.sendIdx["-"]=2;
+$5=_st($6).__minus($7);
+$ctx1.sendIdx["-"]=1;
+$4=_st($5).__slash(size);
+percentage=_st($4).__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("%"));
+$9=_st(self["@firstPane"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=3;
+$11=_st(percentage)._asString();
+$ctx1.sendIdx["asString"]=1;
+$10=_st($11).__comma("%");
+$ctx1.sendIdx[","]=1;
+$8=_st($9)._css_put_("right",$10);
+$ctx1.sendIdx["css:put:"]=1;
+$13=_st(self["@splitter"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=4;
+$16=(100).__minus(percentage);
+$ctx1.sendIdx["-"]=3;
+$15=_st($16)._asString();
+$ctx1.sendIdx["asString"]=2;
+$14=_st($15).__comma("%");
+$ctx1.sendIdx[","]=2;
+$12=_st($13)._css_put_("left",$14);
+$ctx1.sendIdx["css:put:"]=2;
+$18=_st(self["@secondPane"])._asJQuery();
+$21=(100).__minus(percentage);
+$20=_st($21)._asString();
+$19=_st($20).__comma("%");
+$17=_st($18)._css_put_("left",$19);
 return self}, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage},smalltalk.HLVerticalSplitter)})},
 args: ["anInteger"],
 source: "resize: anInteger\x0a\x09| container size offset percentage |\x0a    \x0a    container := firstPane asJQuery parent.\x0a\x09offset := firstPane asJQuery offset left.\x0a    size := container width.\x0a\x09\x0a\x09percentage := (size - (anInteger - offset)) / size * 100.\x0a\x09percentage := 80 min: (percentage max: 20).\x0a\x09\x0a    firstPane asJQuery css: 'right' put: percentage asString, '%'.\x0a\x09\x0a\x09splitter asJQuery css: 'left' put: (100 - percentage) asString, '%'.\x0a\x09secondPane asJQuery css: 'left' put: (100 - percentage) asString, '%'",
@@ -484,17 +573,32 @@ category: 'rendering',
 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){
+var $1,$3,$6,$5,$4,$7,$8,$9,$2;
+$1=_st(self["@splitter"])._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+$3="axis".__minus_gt("x");
+$ctx1.sendIdx["->"]=1;
+$6=_st(self["@splitter"])._asJQuery();
+$5=_st($6)._parent();
+$4="containment".__minus_gt($5);
+$ctx1.sendIdx["->"]=2;
+$7="helper".__minus_gt("clone");
+$ctx1.sendIdx["->"]=3;
+$8="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)})})),"drag".__minus_gt((function(e,ui){
+}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)})}));
+$ctx1.sendIdx["->"]=4;
+$9="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)})}))]));
+}, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)})}));
+$2=smalltalk.HashedCollection._from_([$3,$4,$7,$8,$9]);
+_st($1)._draggable_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"setupSplitter",{},smalltalk.HLVerticalSplitter)})},
 args: [],
 source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ \x0a    \x09'axis' -> 'x'. \x0a        'containment' -> splitter asJQuery parent.\x0a        'helper' -> 'clone'.\x0a        'start' -> [ :e :ui | self startResizing: ui helper ].\x0a        'drag' -> [ :e :ui | self resize: (ui offset left) ] }",
-messageSends: ["draggable:", "->", "parent", "asJQuery", "startResizing:", "helper", "resize:", "left", "offset"],
+messageSends: ["draggable:", "asJQuery", "->", "parent", "startResizing:", "helper", "resize:", "left", "offset"],
 referencedClasses: []
 }),
 smalltalk.HLVerticalSplitter);
@@ -532,4 +636,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:", "selector", "methodClass"]}),
-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:", "environment", "manager", "new", "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 $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-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:", "model", "new", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{anItem:anItem},smalltalk.HLReferencesListWidget)})},
-messageSends: ["withChangesDo:", "activateListItem:", "model"]}),
-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)})}));
-$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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLReferencesListWidget)})},
-messageSends: ["on:do:", "onSearchReferences:", "searchString", "announcer", "model", "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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-$3=self;
-throw $early=[$3];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "=", "selector", "items", "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:", ",", "selector", "name", "methodClass"]}),
-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)})})))._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLReferencesModel)})},
-messageSends: ["asSet", "collect:", "selector", "allMethods"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$2=references;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"classReferencesOf:",{aString:aString,references:references},smalltalk.HLReferencesModel)})},
-messageSends: ["new", "do:", "ifTrue:", "add:", "includes:", "referencedClasses", "values", "methodDictionary", "classesAndMetaclasses"]}),
-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)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"implementorsOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "methodReferenceOn:", "select:", "=", "selector", "allMethods"]}),
-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)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"regexpReferencesOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "methodReferenceOn:", "select:", "match:", "source", "allMethods"]}),
-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:", "searchString:", "new", "yourself", "announcer"]}),
-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)})})))._collect_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return self._methodReferenceOn_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"sendersOf:",{aString:aString},smalltalk.HLReferencesModel)})},
-messageSends: ["collect:", "methodReferenceOn:", "select:", "includes:", "messageSends", "allMethods"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateClassesAndMetaclassesCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["inject:into:", "new", "add:", "class", "yourself", "classes", "environment"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsCache",{},smalltalk.HLReferencesModel)})},
-messageSends: ["inject:into:", "new", ",", "methods", "classesAndMetaclasses"]}),
-smalltalk.HLReferencesModel);
-
-
-})(global_smalltalk,global_nil,global__st);

+ 99 - 71
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(
@@ -9,10 +10,9 @@ category: 'initialization',
 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());
+var $1;
+self._selector_(_st(aCompiledMethod)._selector());
+$1=self._methodClass_(_st(aCompiledMethod)._methodClass());
 return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethod:",{aCompiledMethod:aCompiledMethod},smalltalk.HLMethodReference)})},
 args: ["aCompiledMethod"],
 source: "initializeFromMethod: aCompiledMethod\x0a\x09self\x0a\x09\x09selector: aCompiledMethod selector;\x0a\x09\x09methodClass: aCompiledMethod methodClass",
@@ -34,7 +34,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.HLMethodReference)})},
 args: [],
 source: "method\x0a\x09^ self methodClass methodAt: self selector",
-messageSends: ["methodAt:", "selector", "methodClass"],
+messageSends: ["methodAt:", "methodClass", "selector"],
 referencedClasses: []
 }),
 smalltalk.HLMethodReference);
@@ -159,7 +159,7 @@ function $HLClassReferencesListWidget(){return smalltalk.HLClassReferencesListWi
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@classReferencesListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@classReferencesListWidget"]=_st($HLClassReferencesListWidget())._on_(self._model());
 self["@classReferencesListWidget"];
 $1=_st(self["@classReferencesListWidget"])._next_(self._regexpListWidget());
@@ -185,7 +185,7 @@ function $HLImplementorsListWidget(){return smalltalk.HLImplementorsListWidget||
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@implementorsListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@implementorsListWidget"]=_st($HLImplementorsListWidget())._on_(self._model());
 self["@implementorsListWidget"];
 $1=_st(self["@implementorsListWidget"])._next_(self._classReferencesListWidget());
@@ -211,7 +211,7 @@ function $HLReferencesModel(){return smalltalk.HLReferencesModel||(typeof HLRefe
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@model"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLReferencesModel())._new();
 _st($3)._environment_(_st(self._manager())._environment());
 $4=_st($3)._yourself();
@@ -224,7 +224,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"model",{},smalltalk.HLReferences)})},
 args: [],
 source: "model\x0a\x09^ model ifNil: [\x0a\x09\x09model := (HLReferencesModel new\x0a\x09\x09\x09environment: self manager environment;\x0a\x09\x09\x09yourself) ]",
-messageSends: ["ifNil:", "environment:", "environment", "manager", "new", "yourself"],
+messageSends: ["ifNil:", "environment:", "new", "environment", "manager", "yourself"],
 referencedClasses: ["HLReferencesModel"]
 }),
 smalltalk.HLReferences);
@@ -255,7 +255,7 @@ function $HLRegexpListWidget(){return smalltalk.HLRegexpListWidget||(typeof HLRe
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@regexpListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@regexpListWidget"]=_st($HLRegexpListWidget())._on_(self._model());
 self["@regexpListWidget"];
 $1=_st(self["@regexpListWidget"])._next_(self._sourceCodeWidget());
@@ -294,17 +294,35 @@ selector: "renderContentOn:",
 category: 'rendering',
 fn: function (html){
 var self=this;
-function $HLVerticalSplitter(){return smalltalk.HLVerticalSplitter||(typeof HLVerticalSplitter=="undefined"?nil:HLVerticalSplitter)}
-function $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
 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();
+var $2,$4,$6,$8,$10,$11,$9,$12,$7,$5,$3,$1,$13;
+$2=html;
+$4=$HLContainer();
+$6=$HLHorizontalSplitter();
+$8=$HLVerticalSplitter();
+$10=$HLVerticalSplitter();
+$11=self._sendersListWidget();
+$ctx1.sendIdx["sendersListWidget"]=1;
+$9=_st($10)._with_with_($11,self._implementorsListWidget());
+$ctx1.sendIdx["with:with:"]=3;
+$12=_st($HLVerticalSplitter())._with_with_(self._classReferencesListWidget(),self._regexpListWidget());
+$7=_st($8)._with_with_($9,$12);
+$ctx1.sendIdx["with:with:"]=2;
+$5=_st($6)._with_with_($7,self._sourceCodeWidget());
+$ctx1.sendIdx["with:with:"]=1;
+$3=_st($4)._with_($5);
+$1=_st($2)._with_($3);
+$ctx1.sendIdx["with:"]=1;
+$13=self._sendersListWidget();
+_st($13)._focus();
 return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html},smalltalk.HLReferences)})},
 args: ["html"],
 source: "renderContentOn: html\x0a\x09html with: (HLContainer with: (HLHorizontalSplitter \x0a    \x09with: (HLVerticalSplitter\x0a        \x09with: (HLVerticalSplitter\x0a            \x09with: self sendersListWidget\x0a                with: self implementorsListWidget)\x0a            with: (HLVerticalSplitter\x0a            \x09with: self classReferencesListWidget\x0a                with: self regexpListWidget)) \x0a        with: self sourceCodeWidget)).\x0a\x09\x0a\x09self sendersListWidget focus",
 messageSends: ["with:", "with:with:", "sendersListWidget", "implementorsListWidget", "classReferencesListWidget", "regexpListWidget", "sourceCodeWidget", "focus"],
-referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter", "HLContainer"]
+referencedClasses: ["HLContainer", "HLHorizontalSplitter", "HLVerticalSplitter"]
 }),
 smalltalk.HLReferences);
 
@@ -334,7 +352,7 @@ function $HLSendersListWidget(){return smalltalk.HLSendersListWidget||(typeof HL
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@sendersListWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@sendersListWidget"]=_st($HLSendersListWidget())._on_(self._model());
 self["@sendersListWidget"];
 $1=_st(self["@sendersListWidget"])._next_(self._implementorsListWidget());
@@ -360,7 +378,7 @@ function $HLBrowserCodeWidget(){return smalltalk.HLBrowserCodeWidget||(typeof HL
 return smalltalk.withContext(function($ctx1) { 
 var $2,$3,$4,$1;
 $2=self["@sourceCodeWidget"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $3=_st($HLBrowserCodeWidget())._new();
 _st($3)._browserModel_(self._model());
 $4=_st($3)._yourself();
@@ -373,7 +391,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"sourceCodeWidget",{},smalltalk.HLReferences)})},
 args: [],
 source: "sourceCodeWidget\x0a\x09^ sourceCodeWidget ifNil: [\x0a      \x09sourceCodeWidget := HLBrowserCodeWidget new\x0a\x09\x09\x09browserModel: self model;\x0a\x09\x09\x09yourself ]",
-messageSends: ["ifNil:", "browserModel:", "model", "new", "yourself"],
+messageSends: ["ifNil:", "browserModel:", "new", "model", "yourself"],
 referencedClasses: ["HLBrowserCodeWidget"]
 }),
 smalltalk.HLReferences);
@@ -455,11 +473,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"activateListItem:",{anItem:anItem},smalltalk.HLReferencesListWidget)})},
 args: ["anItem"],
 source: "activateListItem: anItem\x0a\x09self model withChangesDo: [ super activateListItem: anItem ]",
-messageSends: ["withChangesDo:", "activateListItem:", "model"],
+messageSends: ["withChangesDo:", "model", "activateListItem:"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesListWidget);
@@ -510,15 +528,16 @@ $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)})}));
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)})}));
+$ctx1.sendIdx["on:do:"]=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)})}));
+}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,2)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"observeModel",{},smalltalk.HLReferencesListWidget)})},
 args: [],
 source: "observeModel\x0a\x09self model announcer\x0a\x09\x09on: HLSearchReferences\x0a\x09\x09do: [ :ann | self onSearchReferences: ann searchString ];\x0a\x09\x09on: HLMethodSelected\x0a\x09\x09do: [ :ann | self onMethodSelected: ann item ]",
-messageSends: ["on:do:", "onSearchReferences:", "searchString", "announcer", "model", "onMethodSelected:", "item"],
+messageSends: ["on:do:", "announcer", "model", "onSearchReferences:", "searchString", "onMethodSelected:", "item"],
 referencedClasses: ["HLSearchReferences", "HLMethodSelected"]
 }),
 smalltalk.HLReferencesListWidget);
@@ -530,33 +549,36 @@ category: 'reactions',
 fn: function (aMethod){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3,$4,$5;
+var $1,$2,$3,$4,$6,$5;
 var $early={};
 try {
 $1=aMethod;
-if(($receiver = $1) == nil || $receiver == undefined){
-$2=self;
-return $2;
+if(($receiver = $1) == nil || $receiver == null){
+return self;
 } 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)})}),(function(){
+$2=each;
+$3=_st(aMethod)._selector();
+$ctx2.sendIdx["selector"]=1;
+return _st($2).__eq($3);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}),(function(){
 return smalltalk.withContext(function($ctx2) {
-$3=self;
-throw $early=[$3];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$4=self;
-_st($4)._selectedItem_(_st(aMethod)._selector());
-$5=_st($4)._activateItem_(_st(aMethod)._selector());
+throw $early=[self];
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
+$4=_st(aMethod)._selector();
+$ctx1.sendIdx["selector"]=2;
+self._selectedItem_($4);
+$6=_st(aMethod)._selector();
+$5=self._activateItem_($6);
 return self}
 catch(e) {if(e===$early)return e[0]; throw e}
 }, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{aMethod:aMethod},smalltalk.HLReferencesListWidget)})},
 args: ["aMethod"],
 source: "onMethodSelected: aMethod\x0a\x09aMethod ifNil: [ ^ self ].\x0a\x09self items detect: [ :each | each = aMethod selector ] ifNone: [ ^ self ].\x0a\x09\x0a\x09self \x0a\x09\x09selectedItem: aMethod selector;\x0a\x09\x09activateItem: aMethod selector",
-messageSends: ["ifNil:", "detect:ifNone:", "=", "selector", "items", "selectedItem:", "activateItem:"],
+messageSends: ["ifNil:", "detect:ifNone:", "items", "=", "selector", "selectedItem:", "activateItem:"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesListWidget);
@@ -584,11 +606,16 @@ category: 'rendering',
 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()));
+var $1,$3,$2;
+$1=html;
+$3=_st(_st(_st(aMethod)._methodClass())._name()).__comma(" >> #");
+$2=_st($3).__comma(_st(aMethod)._selector());
+$ctx1.sendIdx[","]=1;
+_st($1)._with_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aMethod:aMethod,html:html},smalltalk.HLReferencesListWidget)})},
 args: ["aMethod", "html"],
 source: "renderItemLabel: aMethod on: html\x0a\x09html with: aMethod methodClass name, ' >> #', aMethod selector",
-messageSends: ["with:", ",", "selector", "name", "methodClass"],
+messageSends: ["with:", ",", "name", "methodClass", "selector"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesListWidget);
@@ -810,12 +837,12 @@ 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)})})))._asSet();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asSet();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.HLReferencesModel)})},
 args: [],
 source: "allSelectors\x0a\x09^ (self allMethods \x0a\x09\x09collect: [ :each | each selector ])\x0a\x09\x09asSet",
-messageSends: ["asSet", "collect:", "selector", "allMethods"],
+messageSends: ["asSet", "collect:", "allMethods", "selector"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesModel);
@@ -829,24 +856,25 @@ var self=this;
 var references;
 function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $2,$1,$3;
 references=_st($OrderedCollection())._new();
-_st(self._classesAndMetaclasses())._do_((function(each){
+$1=_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)){
+$2=_st(_st(method)._referencedClasses())._includes_(aString);
+if(smalltalk.assert($2)){
 return _st(references)._add_(method);
 };
-}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$2=references;
-return $2;
+}, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,2)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+$ctx1.sendIdx["do:"]=1;
+$3=references;
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"classReferencesOf:",{aString:aString,references:references},smalltalk.HLReferencesModel)})},
 args: ["aString"],
 source: "classReferencesOf: aString\x0a\x09\x22Answer all methods referencing the class named aString\x22\x0a\x09\x0a\x09| references |\x0a\x09\x0a\x09references := OrderedCollection new.\x0a\x09\x0a\x09self classesAndMetaclasses do: [ :each |\x0a\x09\x09each methodDictionary values do: [ :method |\x0a\x09\x09\x09(method referencedClasses includes: aString) ifTrue: [\x0a\x09\x09\x09\x09references add: method ] ] ].\x0a\x09\x09\x09\x09\x0a\x09^ references",
-messageSends: ["new", "do:", "ifTrue:", "add:", "includes:", "referencedClasses", "values", "methodDictionary", "classesAndMetaclasses"],
+messageSends: ["new", "do:", "classesAndMetaclasses", "values", "methodDictionary", "ifTrue:", "includes:", "referencedClasses", "add:"],
 referencedClasses: ["OrderedCollection"]
 }),
 smalltalk.HLReferencesModel);
@@ -878,7 +906,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=self["@classesAndMetaclassesCache"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 self._updateClassesAndMetaclassesCache();
 } else {
 $1;
@@ -904,15 +932,15 @@ 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)})})))._collect_((function(each){
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"implementorsOf:",{aString:aString},smalltalk.HLReferencesModel)})},
 args: ["aString"],
 source: "implementorsOf: aString\x0a\x09^ (self allMethods select: [ :each |\x0a\x09\x09each selector = aString ])\x0a\x09\x09\x09collect: [ :each | self methodReferenceOn: each ]",
-messageSends: ["collect:", "methodReferenceOn:", "select:", "=", "selector", "allMethods"],
+messageSends: ["collect:", "select:", "allMethods", "=", "selector", "methodReferenceOn:"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesModel);
@@ -961,7 +989,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1,$2;
 $1=self["@methodsCache"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 self._updateMethodsCache();
 } else {
 $1;
@@ -987,15 +1015,15 @@ 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)})})))._collect_((function(each){
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"regexpReferencesOf:",{aString:aString},smalltalk.HLReferencesModel)})},
 args: ["aString"],
 source: "regexpReferencesOf: aString\x0a\x09^ (self allMethods select: [ :each |\x0a\x09\x09each source match: aString ])\x0a\x09\x09\x09collect: [ :each | self methodReferenceOn: each ]",
-messageSends: ["collect:", "methodReferenceOn:", "select:", "match:", "source", "allMethods"],
+messageSends: ["collect:", "select:", "allMethods", "match:", "source", "methodReferenceOn:"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesModel);
@@ -1017,7 +1045,7 @@ _st(self._announcer())._announce_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"search:",{aString:aString},smalltalk.HLReferencesModel)})},
 args: ["aString"],
 source: "search: aString\x0a\x09self updateCaches.\x0a\x09\x0a\x09self announcer announce: (HLSearchReferences new\x0a\x09\x09searchString: aString;\x0a\x09\x09yourself)",
-messageSends: ["updateCaches", "announce:", "searchString:", "new", "yourself", "announcer"],
+messageSends: ["updateCaches", "announce:", "announcer", "searchString:", "new", "yourself"],
 referencedClasses: ["HLSearchReferences"]
 }),
 smalltalk.HLReferencesModel);
@@ -1033,15 +1061,15 @@ 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)})})))._collect_((function(each){
+}, 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"sendersOf:",{aString:aString},smalltalk.HLReferencesModel)})},
 args: ["aString"],
 source: "sendersOf: aString\x0a\x09^ (self allMethods select: [ :each |\x0a\x09\x09each messageSends includes: aString ])\x0a\x09\x09\x09collect: [ :each | self methodReferenceOn: each ]",
-messageSends: ["collect:", "methodReferenceOn:", "select:", "includes:", "messageSends", "allMethods"],
+messageSends: ["collect:", "select:", "allMethods", "includes:", "messageSends", "methodReferenceOn:"],
 referencedClasses: []
 }),
 smalltalk.HLReferencesModel);
@@ -1053,10 +1081,9 @@ category: 'cache',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=self;
-_st($1)._updateClassesAndMetaclassesCache();
-$2=_st($1)._updateMethodsCache();
+var $1;
+self._updateClassesAndMetaclassesCache();
+$1=self._updateMethodsCache();
 return self}, function($ctx1) {$ctx1.fill(self,"updateCaches",{},smalltalk.HLReferencesModel)})},
 args: [],
 source: "updateCaches\x0a\x09self \x0a\x09\x09updateClassesAndMetaclassesCache;\x0a\x09\x09updateMethodsCache",
@@ -1078,14 +1105,15 @@ self["@classesAndMetaclassesCache"]=_st(_st(self._environment())._classes())._in
 return smalltalk.withContext(function($ctx2) {
 $1=acc;
 _st($1)._add_(each);
+$ctx2.sendIdx["add:"]=1;
 _st($1)._add_(_st(each)._class());
 $2=_st($1)._yourself();
 return $2;
-}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"updateClassesAndMetaclassesCache",{},smalltalk.HLReferencesModel)})},
 args: [],
 source: "updateClassesAndMetaclassesCache\x0a\x09classesAndMetaclassesCache := self environment classes \x0a\x09\x09inject: OrderedCollection new \x0a\x09\x09into: [ :acc :each |\x0a\x09\x09\x09acc \x0a\x09\x09\x09\x09add: each; \x0a\x09\x09\x09\x09add: each class;\x0a\x09\x09\x09\x09yourself ]",
-messageSends: ["inject:into:", "new", "add:", "class", "yourself", "classes", "environment"],
+messageSends: ["inject:into:", "classes", "environment", "new", "add:", "class", "yourself"],
 referencedClasses: ["OrderedCollection"]
 }),
 smalltalk.HLReferencesModel);
@@ -1101,14 +1129,14 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsCache",{},smalltalk.HLReferencesModel)})},
 args: [],
 source: "updateMethodsCache\x0a\x09methodsCache := self classesAndMetaclasses\x0a\x09\x09inject: OrderedCollection new\x0a\x09\x09into: [ :acc :each |\x0a\x09\x09\x09acc, each methods ]",
-messageSends: ["inject:into:", "new", ",", "methods", "classesAndMetaclasses"],
+messageSends: ["inject:into:", "classesAndMetaclasses", "new", ",", "methods"],
 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)})}));
-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:", "asString", "asJQuery"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["do:", "clear", "transcripts"]}),
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"show:",{aString:aString},smalltalk.HLTranscriptHandler.klass)})},
-messageSends: ["do:", "show:", "transcripts"]}),
-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);

+ 11 - 10
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.";
@@ -67,7 +68,7 @@ $2=_st($1)._with_((function(){
 return smalltalk.withContext(function($ctx2) {
 self["@textarea"]=_st(html)._textarea();
 return self["@textarea"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},smalltalk.HLTranscript)})},
 args: ["html"],
 source: "renderOn: html\x0a\x09html div\x0a\x09\x09class: 'transcript';\x0a\x09\x09with: [ textarea := html textarea ]",
@@ -85,7 +86,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 $1=self["@textarea"];
-if(($receiver = $1) == nil || $receiver == undefined){
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
 _st(_st(self["@textarea"])._asJQuery())._append_(_st(aString)._asString());
@@ -93,7 +94,7 @@ _st(_st(self["@textarea"])._asJQuery())._append_(_st(aString)._asString());
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{aString:aString},smalltalk.HLTranscript)})},
 args: ["aString"],
 source: "show: aString\x0a\x09textarea ifNotNil: [\x0a \x09\x09textarea asJQuery append: aString asString ]",
-messageSends: ["ifNotNil:", "append:", "asString", "asJQuery"],
+messageSends: ["ifNotNil:", "append:", "asJQuery", "asString"],
 referencedClasses: []
 }),
 smalltalk.HLTranscript);
@@ -132,11 +133,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"clear",{},smalltalk.HLTranscriptHandler.klass)})},
 args: [],
 source: "clear\x0a\x09self transcripts do: [ :each |\x0a\x09\x09each clear ]",
-messageSends: ["do:", "clear", "transcripts"],
+messageSends: ["do:", "transcripts", "clear"],
 referencedClasses: []
 }),
 smalltalk.HLTranscriptHandler.klass);
@@ -184,11 +185,11 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"show:",{aString:aString},smalltalk.HLTranscriptHandler.klass)})},
 args: ["aString"],
 source: "show: aString\x0a\x09self transcripts do: [ :each |\x0a\x09\x09each show: aString ]",
-messageSends: ["do:", "show:", "transcripts"],
+messageSends: ["do:", "transcripts", "show:"],
 referencedClasses: []
 }),
 smalltalk.HLTranscriptHandler.klass);
@@ -203,7 +204,7 @@ function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof Ordere
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@transcripts"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@transcripts"]=_st($OrderedCollection())._new();
 $1=self["@transcripts"];
 } else {
@@ -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 $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
-function $HLCodeWidget(){return smalltalk.HLCodeWidget||(typeof HLCodeWidget=="undefined"?nil:HLCodeWidget)}
-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);

+ 12 - 6
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(
@@ -8,18 +9,23 @@ selector: "testKeyMap",
 category: 'tests',
 fn: function (){
 var self=this;
-function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
 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()));
+var $2,$1,$4,$3;
+$2=_st(_st($HLCodeWidget())._pcKeyMap())._isKindOf_($HashedCollection());
+$ctx1.sendIdx["isKindOf:"]=1;
+$1=self._assert_($2);
+$ctx1.sendIdx["assert:"]=1;
+$4=_st(_st($HLCodeWidget())._macKeyMap())._isKindOf_($HashedCollection());
+$3=self._assert_($4);
 return self}, function($ctx1) {$ctx1.fill(self,"testKeyMap",{},smalltalk.HLCodeWidgetTest)})},
 args: [],
 source: "testKeyMap\x0a\x09\x22Key maps are a collection of associations.\x22\x0a\x09self assert: (HLCodeWidget pcKeyMap isKindOf: HashedCollection).\x0a\x09self assert: (HLCodeWidget macKeyMap isKindOf: HashedCollection)",
 messageSends: ["assert:", "isKindOf:", "pcKeyMap", "macKeyMap"],
-referencedClasses: ["HashedCollection", "HLCodeWidget"]
+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:", "receiver", "environment"]}),
-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)})}));
-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:", "currentLine", "selection", "somethingSelected"]}),
-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:", "on:", "announcer", "model", "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:", "on:", "announcer", "model", "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)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"messageHintFor:token:",{anEditor:anEditor,aToken:aToken},smalltalk.HLCodeWidget)})},
-messageSends: ["reject:", "=", "string", "select:", "includesSubString:", "asArray", "asSet", "value", "at:", "current"]}),
-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)})}));
-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:", "size", "getLine:", "setSelection:end:", "->", "getSelection", "+", "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:", "on:", "announcer", "model", "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)})}));
-$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)})}));
-$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)})}));
-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)})}));
-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)})}));
-$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:", "addClass:", "asJQuery", "removeClass:", "hasModification"]}),
-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)})}));
-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)})}));
-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)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(each).__eq(_st(aToken)._string());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"variableHintFor:token:",{anEditor:anEditor,aToken:aToken,variables:variables,classNames:classNames,pseudoVariables:pseudoVariables},smalltalk.HLCodeWidget)})},
-messageSends: ["collect:", "html", "asJQuery", "get", "find:", "wrapper", "display", "name", "classes", "current", "pseudoVariableNames", "reject:", "=", "string", "select:", "includesSubString:", "asArray", "asSet", ","]}),
-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:", "getMode", "at:", "basicAt:", "ifTrue:ifFalse:", "variableHintFor:token:", "messageHintFor:token:", "=", "type", "->", "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:", "macKeyMap", "pcKeyMap", "systemIsMac", "keyBinder", "current"]}),
-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)})}));
-_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)})}));
-_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)})}));
-$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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"setupCommands",{},smalltalk.HLCodeWidget.klass)})},
-messageSends: ["at:put:", "doIt", "amberCodeWidget", "basicAt:", "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", "=", "contents", "methodContents"]}),
-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)})}));
-_st($HLChangeForbidden())._signal();
-};
-return self}, function($ctx1) {$ctx1.fill(self,"onBrowserAboutToChange:",{anAnnouncement:anAnnouncement,block:block},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["actionBlock", "ifTrue:", "confirm:ifTrue:", "methodContents:", "contents", "value", "signal", "hasModification"]}),
-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:", "contents", "browserModel"]}),
-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:", "=", "methodClass", "selectedClass", "browserModel", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})})));
-return self}, function($ctx1) {$ctx1.fill(self,"onParseError:",{anAnnouncement:anAnnouncement,lineIndex:lineIndex,newContents:newContents},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["contents:", "streamContents:", "linesDo:", "ifTrue:ifFalse:", "nextPutAll:", "copyFrom:to:", "column", "message", "+", "size", "=", "line", "cr", "contents"]}),
-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:", "contents:", "selectedClass", "browserModel", "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:", "contents", "browserModel"]}),
-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:", "contents:", "selectedClass", "browserModel", "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)})})),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._browserModel())._addInstVarNamed_(_st(error)._variableName());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"onUnknownVariableError:",{anAnnouncement:anAnnouncement,error:error},smalltalk.HLBrowserCodeWidget)})},
-messageSends: ["error", "confirm:ifTrue:", "streamContents:", "nextPutAll:", "messageText", "cr", "addInstVarNamed:", "variableName", "browserModel"]}),
-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)})}));
-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 $HLHorizontalSplitter(){return smalltalk.HLHorizontalSplitter||(typeof HLHorizontalSplitter=="undefined"?nil:HLHorizontalSplitter)}
-function $HLContainer(){return smalltalk.HLContainer||(typeof HLContainer=="undefined"?nil:HLContainer)}
-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)})}))));
-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)})}));
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 458 - 154
js/Helios-Workspace.js


+ 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)})}));
-$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)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"getNodes",{classes:classes,children:children,others:others},smalltalk.ClassesList)})},
-messageSends: ["classes", "browser", "do:", "ifFalse:ifTrue:", "add:", "includes:", "superclass", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateNodes",{},smalltalk.ClassesList)})},
-messageSends: ["contents:", "do:", "renderOn:", "nodes"]}),
-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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},smalltalk.ClassesListNode)})},
-messageSends: ["do:", "ifTrue:ifFalse:", "add:", "=", "theClass", "superclass", "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)})}));
-_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:", "nextPutAll:", "level", "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)})}));
-_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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html,li:li,cssClass:cssClass},smalltalk.ClassesListNode)})},
-messageSends: ["onClick:", "selectClass:", "theClass", "browser", "li", "html:", "label", "asJQuery", "ifTrue:", ",", "=", "selectedClass", "ifFalse:", "isEmpty", "comment", "class:", "do:", "renderOn:", "nodes"]}),
-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 $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
-function $ErrorHandler(){return smalltalk.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
-function $Debugger(){return smalltalk.Debugger||(typeof Debugger=="undefined"?nil:Debugger)}
-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)})}))._on_do_($Error(),(function(error){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st($ErrorHandler())._new())._handleError_(error);
-}, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.DebugErrorHandler)})},
-messageSends: ["on:do:", "handleError:", "new", "error:", "open"]}),
-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:", "currentLine", "selection", "somethingSelected"]}),
-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:", "value", "onDoIt"]}),
-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)})}))._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,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:", "alert:", "messageText", "parseExpression:", "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:", "readStream", "currentLineOrSelection", "new"]}),
-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)})}));
-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:", "size", "getLine:", "setSelection:end:", "->", "getSelection", "+", "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)})}));
-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)})}));
-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)})}))._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)})}));
-$6=_st($3)._onWindowResize_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._updatePosition();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.TabManager)})},
-messageSends: ["initialize", "appendToJQuery:", "asJQuery", "id:", "div", "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:", "min:", "size", "label", "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)})}));
-$7;
-};
-return _st(_st(html)._span())._with_(self._labelFor_(aWidget));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$4;
-return _st(_st(html)._span())._class_("rtab");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$8=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._selectTab_(aWidget);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabFor:on:",{aWidget:aWidget,html:html,li:li},smalltalk.TabManager)})},
-messageSends: ["li", "ifTrue:", "class:", "=", "with:", "span", "onClick:", "closeTab:", "canBeClosed", "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)})}));
-$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)})}));
-$4=_st($1)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._newBrowserTab();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderTabs",{},smalltalk.TabManager)})},
-messageSends: ["contents:", "do:", "renderTabFor:on:", "tabs", "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)})}));
-$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)})}));
-return $7;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderToolbarOn:",{html:html},smalltalk.TabManager)})},
-messageSends: ["id:", "div", "with:", "class:", "input", "yourself", "onKeyPress:", "ifTrue:", "search:", "val", "asJQuery", "=", "keyCode", "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:", "openOn:", "search:", "isClass"]}),
-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)})}));
-_st(aWidget)._show();
-self._update();
-return self}, function($ctx1) {$ctx1.fill(self,"selectTab:",{aWidget:aWidget},smalltalk.TabManager)})},
-messageSends: ["open", "do:", "hide", "tabs", "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:", ",", "asString", "asJQuery"]}),
-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:", "open", "close", "current", "is:", "asJQuery", "=", "length"]}),
-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;
-$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)})}));
-return $4;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-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:", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package", "new"]}),
-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)})}));
-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:", "subclass:instanceVariableNames:package:", "selectedPackage", "resetClassesList", "updateClassesList", "selectClass:", "at:", "current", "and:", "notEmpty", "notNil"]}),
-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)})}));
-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:", "category:", "setMethodProtocol:", "and:", "notEmpty", "notNil"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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", ",", "tab", "lf", "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)})})))._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)})})))._asSet();
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Browser)})},
-messageSends: ["asSet", "sort:", "<", "name", "select:", "=", "category", "classes", "current"]}),
-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)})}));
-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:", "compileDefinition", "compileMethodDefinition", "or:", "notNil", "=", "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:", "val", "new", "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)})}));
-_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:", "alert:", ",", "asString", "position", "reason", "isParseFailure", "currentClass:", "eval:", "compileNode:", "do:", "ifFalse:", "addInstanceVariableNamed:toClass:", "compileMethodDefinitionFor:", "confirm:", "existsGlobal:", "unknownVariables", "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)})}));
-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:", "copyClass:named:", "selectedClass", "new", "resetClassesList", "updateClassesList", "selectClass:", "at:", "current", "and:", "notEmpty", "notNil"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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)})}));
-};
-$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)})}));
-return $5;
-}, function($ctx1) {$ctx1.fill(self,"methods",{klass:klass},smalltalk.Browser)})},
-messageSends: ["ifTrue:", "=", "ifNotNil:", "ifTrue:ifFalse:", "class", "sort:", "<", "selector", "ifNil:ifNotNil:", "values", "methodDictionary", "select:", "category"]}),
-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)})}));
-$2=_st(packages)._sort();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"packages",{packages:packages},smalltalk.Browser)})},
-messageSends: ["new", "do:", "ifFalse:", "add:", "category", "includes:", "classes", "current", "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", "with:", "isEmpty", "methodDictionary", "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:", "removeClass:", "current", "resetClassesList", "selectClass:", "confirm:", ",", "name"]}),
-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:", "ifTrue:ifFalse:", "removeCompiledMethod:", "class", "=", "selectMethod:", "confirm:", ",", "selector", "cancelChanges"]}),
-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:", "removePackage:", "current", "updateCategoriesList", "confirm:", ","]}),
-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)})}));
-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:", "rename:", "updateClassesList", "updateSourceAndButtons", "and:", "notEmpty", "notNil"]}),
-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:", "renamePackage:to:", "current", "updateCategoriesList", "notEmpty"]}),
-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)})}));
-return _st(self["@sourceArea"])._onKeyUp_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._updateStatus();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-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)})}));
-$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)})}));
-$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)})}));
-return $10;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-$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)})}));
-$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)})}));
-$10=_st($9)._with_("Remove");
-return $10;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$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)})}));
-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:", "at:", "current", "ifTrue:ifFalse:", "openOn:", "class", "searchReferencesOf:", "isClass", "cancelChanges"]}),
-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:", "resetClassesList", "updateCategoriesList", "updateClassesList", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons", "cancelChanges"]}),
-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:", "updateClassesList", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons", "cancelChanges"]}),
-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:", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons", "cancelChanges"]}),
-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:", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons", "cancelChanges"]}),
-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:", "selectProtocol:", "updateTabsList", "cancelChanges"]}),
-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:", "ifFalse:ifTrue:", "addNewProtocol", "category:", "updateProtocolsList", "updateMethodsList", "updateSourceAndButtons", "includes:", "protocols", "cancelChanges"]}),
-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)})}));
-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:", "declarationSource", "methodSource", "or:", "notNil", "=", "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)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li,label:label},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateCategoriesList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "ifTrue:ifFalse:", "isEmpty", "li", "ifTrue:", "class:", "=", "with:", "onClick:", "selectCategory:", "packages"]}),
-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)})}));
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMethodsList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "li", "ifTrue:", "class:", "=", "with:", "selector", "onClick:", "selectMethod:", "methods"]}),
-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)})}));
-return $3;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateProtocolsList",{},smalltalk.Browser)})},
-messageSends: ["contents:", "do:", "li", "ifTrue:", "class:", "=", "with:", "onClick:", "selectProtocol:", "protocols"]}),
-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=_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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-return $10;
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-_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)})}));
-$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)})}));
-$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)})}));
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$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)})}));
-$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)})}));
-}, function($ctx3) {$ctx3.fillBlock({option:option},$ctx2)})}));
-return $23;
-};
-}, function($ctx2) {$ctx2.fillBlock({html:html,protocolSelect:protocolSelect,referencesSelect:referencesSelect},$ctx1)})}));
-$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)})}));
-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:", "category", "and:", "notNil", "isNil", "do:", "=", "protocols", "ifFalse:", "searchReferencesOf:", "selector", "sorted", "messageSends", "ifTrue:ifFalse:", "hideMethodButtons", "hideClassButtons", "showClassButtons", "or:", "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:", "ifNotNil:", "at:put:", "removeAt:", "=", "source", "val"]}),
-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)})}));
-$5=_st($2)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("instance");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$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)})}));
-$10=_st($7)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("class");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$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)})}));
-$15=_st($12)._onClick_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._selectTab_("comment");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return $15;
-}, function($ctx2) {$ctx2.fillBlock({html:html,li:li},$ctx1)})}));
-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)})}));
-_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)})}));
-$1=all;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allVariables",{all:all},smalltalk.Debugger)})},
-messageSends: ["new", "do:", "at:put:", "instVarAt:", "receiver", "allInstanceVariableNames", "class", "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:", "selector", "temps", "receiver"]}),
-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)})}));
-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)})}));
-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)})}));
-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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-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)})}));
-$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:", "renderContext:on:", "outerContext"]}),
-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)})}));
-self["@ul"]=$6;
-return self["@ul"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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:", "selector", "methodDictionary", "class", "receiver", "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)})}));
-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:", "source", "method"]}),
-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)})}));
-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)})}));
-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:", "ifNotNil:", "at:put:", "removeAt:", "=", "source", "val"]}),
-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)})}));
-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)})}));
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html,li:li},$ctx1)})}));
-$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:", ",", "cr", "val", "asJQuery"]}),
-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)})}));
-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:", ",", "asString", "val", "asJQuery"]}),
-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:", "selectedVariable", "variables"]}),
-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)})}));
-$4=_st($3)._yourself();
-self["@sourceArea"]=$4;
-self["@sourceArea"];
-return _st(self["@sourceArea"])._renderOn_(html);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-$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)})}));
-$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)})}));
-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)})}));
-$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)})}));
-self["@diveButton"]=$10;
-return self["@diveButton"];
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-$6;
-return _st(_st(html)._div())._class_("amber_clear");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}));
-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:", "at:put:", "removeAt:", "and:", "notNil", "at:", "selectedVariable", "variables"]}),
-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:", "ifTrue:ifFalse:", "printString", "at:", "selectedVariable", "variables", "isNil", "asJQuery"]}),
-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)})}));
-$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)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateVariablesList",{},smalltalk.Inspector)})},
-messageSends: ["contents:", "do:", "li", "with:", "onClick:", "selectVariable:", "ifTrue:", "class:", "=", "selectedVariable", "keys", "variables"]}),
-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)})}));
-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)})})));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classesAndMetaclasses",{},smalltalk.ReferencesBrowser)})},
-messageSends: [",", "collect:", "class", "classes", "current"]}),
-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:", "instanceClass", "methodClass", "isMetaclass", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchMethodSource",{regex:regex},smalltalk.ReferencesBrowser)})},
-messageSends: ["allButFirst", "do:", "ifTrue:", "add:", "matches", "match:", "source", "values", "methodDictionary", "classesAndMetaclasses"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchReferencedClasses",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["do:", "ifTrue:", "add:", "referencedClasses", "includes:", "values", "methodDictionary", "classesAndMetaclasses"]}),
-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:", "searchSelectorReferences", "searchReferencedClasses", "match:"]}),
-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"searchSelectorReferences",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["do:", "keysAndValuesDo:", "ifTrue:", "add:", "implementors", "=", "senders", "includes:", "messageSends", "methodDictionary", "classesAndMetaclasses"]}),
-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)})}))._valueWithTimeout_((100));
-return self["@timer"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}));
-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)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateImplementorsList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "implementors", "style:", "do:", "selector", "methodClass", "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)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateMatchesList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "matches", "style:", "do:", "selector", "methodClass", "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)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateReferencedClassesList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "referencedClasses", "style:", "do:", "selector", "methodClass", "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)})}));
-return $4;
-}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateSendersList",{},smalltalk.ReferencesBrowser)})},
-messageSends: ["contents:", "class:", "li", "with:", ",", "asString", "size", "senders", "style:", "do:", "selector", "methodClass", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allClasses",{},smalltalk.TestRunner)})},
-messageSends: ["select:", "not", "isAbstract", "allSubclasses"]}),
-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)})})))._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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.TestRunner)})},
-messageSends: ["sort:", ">", "name", "select:", "includes:", "category", "selectedCategories", "allClasses"]}),
-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)})}));
-$2=_st(packages)._sort();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"packages",{packages:packages},smalltalk.TestRunner)})},
-messageSends: ["new", "do:", "ifFalse:", "add:", "category", "includes:", "allClasses", "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", "-", "size", "failures", "result", "errors", "runs"]}),
-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)})}));
-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)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderErrorsOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["do:", "class:", "li", "with:", ",", "selector", "name", "class", "onClick:", "performFailure:", "errors", "result"]}),
-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)})}));
-return $2;
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"renderFailuresOn:",{html:html},smalltalk.TestRunner)})},
-messageSends: ["do:", "class:", "li", "with:", ",", "selector", "name", "class", "onClick:", "performFailure:", "failures", "result"]}),
-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)})}));
-_st(worker)._run();
-return self}, function($ctx1) {$ctx1.fill(self,"run:",{aCollection:aCollection,worker:worker},smalltalk.TestRunner)})},
-messageSends: ["on:", "result", "on:do:", "ifTrue:", "updatePercent:", "*", "/", "total", "runs", "progressBar", "updateStatusDiv", "updateMethodsList", "==", "announcer", "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)})}));
-$2=self;
-_st($2)._updateCategoriesList();
-$3=_st($2)._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"selectAllCategories",{},smalltalk.TestRunner)})},
-messageSends: ["do:", "ifFalse:", "add:", "selectedCategories", "includes:", "packages", "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)})}));
-$2=self;
-_st($2)._updateCategoriesList();
-$3=_st($2)._updateClassesList();
-return self}, function($ctx1) {$ctx1.fill(self,"selectAllClasses",{},smalltalk.TestRunner)})},
-messageSends: ["do:", "ifFalse:", "add:", "selectedClasses", "includes:", "classes", "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: [",", "printFailures", "printErrors", "printPasses", "printTotal"]}),
-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)})})))._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(testCases)._addAll_(_st(each)._buildSuite());
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$1=testCases;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"testCases",{testCases:testCases},smalltalk.TestRunner)})},
-messageSends: ["do:", "addAll:", "buildSuite", "select:", "includes:", "category", "selectedCategories", "selectedClasses"]}),
-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:", "add:", "remove:", "isSelectedCategory:", "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:", "add:", "remove:", "isSelectedClass:", "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;
-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)})}));
-return $5;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateCategoriesList",{},smalltalk.TestRunner)})},
-messageSends: ["contents:", "class:", "li", "with:", "onClick:", "selectAllCategories", "do:", "ifTrue:", "includes:", "selectedCategories", "toggleCategory:", "packages"]}),
-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;
-};
-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)})}));
-return $6;
-}, function($ctx3) {$ctx3.fillBlock({each:each,li:li},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateClassesList",{},smalltalk.TestRunner)})},
-messageSends: ["contents:", "ifFalse:", "class:", "li", "with:", "onClick:", "selectAllClasses", "isEmpty", "selectedCategories", "do:", "ifTrue:", "includes:", "selectedClasses", "name", "toggleClass:", "classes"]}),
-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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"updateStatusDiv",{},smalltalk.TestRunner)})},
-messageSends: ["class:", ",", "status", "contents:", "with:", "statusInfo", "span"]}),
-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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-$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)})}));
-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=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=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:", ",", "copyFrom:to:", "printString", ">", "size", "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=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=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:", "instVarAt:", "instanceVariableNames", "class", "setLabel:", "printString", "setVariables:"]}),
-smalltalk.MethodContext);
-
-})(global_smalltalk,global_nil,global__st);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 344 - 191
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:", ",", "name", "instanceClass", "isNil", "isMetaclass"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "chunkEscape:", "comment", "notEmpty"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "nextPutAll:", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "lf", "isEmpty"]}),
-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 $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();
-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)})}));
-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)})})))._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)})})));
-}, 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)})},
-messageSends: ["name", "new", "do:", "protocolsDo:", "ifTrue:", "at:put:", "=", ",", "addAll:", "collect:", "name:theClass:methods:", "at:", "sorted:", "<=", "keys", "class", "sortedClasses:", "classes", "current"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsOfCategory:",{aCategory:aCategory},smalltalk.ChunkExporter)})},
-messageSends: ["sorted:", "<=", "selector", "methods"]}),
-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)})}));
-$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)})})))._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)})}));
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map},smalltalk.ChunkExporter)})},
-messageSends: ["new", "protocolsDo:", "ifFalse:", "at:put:", "match:", "collect:", "name:theClass:methods:", "at:", "sorted:", "<=", "keys"]}),
-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:", ",", "name", "instanceClass", "isNil", "isMetaclass"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "asJavascript", "comment", "notEmpty"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(",");
-}, 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)})},
-messageSends: ["lf", "ifFalse:", "nextPutAll:", ",", "classNameFor:", "class", "do:separatedBy:", "instanceVariableNames", "isEmpty"]}),
-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 $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $Package(){return smalltalk.Package||(typeof Package=="undefined"?nil:Package)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-name=_st(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)})})))._select_((function(method){
-return smalltalk.withContext(function($ctx4) {
-return _st(_st(method)._category()).__eq("*".__comma(name));
-}, function($ctx4) {$ctx4.fillBlock({method:method},$ctx3)})})));
-}, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$1=result;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,name:name,result:result},smalltalk.Exporter)})},
-messageSends: ["name", "new", "do:", "addAll:", "select:", "=", ",", "category", "sorted:", "<=", "selector", "values", "methodDictionary", "class", "sortedClasses:", "classes", "current"]}),
-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)})})))._reject_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._category())._match_("^\x5c*");
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass},smalltalk.Exporter)})},
-messageSends: ["reject:", "match:", "category", "sorted:", "<=", "selector", "values", "methodDictionary"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(", ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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)})}))._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)})}));
-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:", "ifTrue:", "ifTrue:ifFalse:", "next", "trimBoth", "contents", "=", "peek", "nextPut:", "notNil"]}),
-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)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._interpretStep_for_on_(_st(recipeStream)._next(),anObject,aStream);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpret:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,recipeStream:recipeStream},smalltalk.ExportRecipeInterpreter)})},
-messageSends: ["readStream", "whileFalse:", "interpretStep:for:on:", "next", "atEnd"]}),
-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:", "interpretSubRecipe:for:on:", "==", "value", "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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"interpretSubRecipe:for:on:",{aRecipe:aRecipe,anObject:anObject,aStream:aStream,selection:selection},smalltalk.ExportRecipeInterpreter)})},
-messageSends: ["perform:withArguments:", "value", "first", "key", "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)})}))._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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty},smalltalk.Importer)})},
-messageSends: ["on:", "whileFalse:", "ifTrue:ifFalse:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "isEmpty", "nextChunk", "isNil"]}),
-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)})}))]));
-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 $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-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)})}));
-fileContents;
-return self._ajaxPutAt_data_(_st(commitStrategy)._value(),fileContents);
-}, function($ctx2) {$ctx2.fillBlock({commitStrategyFactory:commitStrategyFactory,fileContents:fileContents,commitStrategy:commitStrategy},$ctx1)})}),"Committing package ".__comma(_st(aPackage)._name()));
-return self}, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage},smalltalk.PackageHandler)})},
-messageSends: ["do:displayingProgress:", "value:", "streamContents:", "exportPackage:on:", "forRecipe:", "key", "ajaxPutAt:data:", "value", ",", "name", "commitChannels"]}),
-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)})}),(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)})}),(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)})})];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitChannels",{},smalltalk.LegacyPackageHandler)})},
-messageSends: ["->", ",", "name", "commitPathJs", "recipe", "default", "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)})})),"error".__minus_gt((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._alert_("Could not load package at: ".__comma(url));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))]));
-return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:",{packageName:packageName,aString:aString,url:url},smalltalk.LegacyPackageHandler)})},
-messageSends: [",", "ajax:", "->", "ifTrue:", "setupPackageNamed:prefix:", "=", "readyState", "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)})}));
-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 $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
-function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st($String())._streamContents_((function(stream){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(_st($Smalltalk())._current())._packages())._do_((function(pkg){
-return smalltalk.withContext(function($ctx3) {
-return self._exportPackage_on_(pkg,stream);
-}, function($ctx3) {$ctx3.fillBlock({pkg:pkg},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"exportAllPackages",{},smalltalk.PluggableExporter)})},
-messageSends: ["streamContents:", "do:", "exportPackage:on:", "packages", "current"]}),
-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:", "recipe", "interpreter"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathJs",{},smalltalk.Package)})},
-messageSends: ["at:ifAbsentPut:", "commitPathJsFor:", "transport", "ifNil:"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"commitPathSt",{},smalltalk.Package)})},
-messageSends: ["at:ifAbsentPut:", "commitPathStFor:", "transport", "ifNil:"]}),
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 579 - 192
js/Importer-Exporter.js


+ 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:", "value:", "valuable", "handlesAnnouncement:"]}),
-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:", "includesBehavior:", "at:", "name", "theNonMetaClass", "class", "current", "announcementClass"]}),
-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)})}));
-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 $MessageSend(){return smalltalk.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
-function $AnnouncementSubscription(){return smalltalk.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
-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:", "receiver:", "new", "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)})}));
-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);

+ 40 - 25
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.";
@@ -88,7 +89,7 @@ _st(self._valuable())._value_(anAnnouncement);
 return self}, function($ctx1) {$ctx1.fill(self,"deliver:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
 args: ["anAnnouncement"],
 source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [self valuable value: anAnnouncement]",
-messageSends: ["ifTrue:", "value:", "valuable", "handlesAnnouncement:"],
+messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"],
 referencedClasses: []
 }),
 smalltalk.AnnouncementSubscription);
@@ -101,20 +102,28 @@ 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){
+var $3,$4,$2,$6,$7,$5,$1;
+$3=_st($Smalltalk())._current();
+$ctx1.sendIdx["current"]=1;
+$4=_st(self._announcementClass())._name();
+$ctx1.sendIdx["name"]=1;
+$2=_st($3)._at_($4);
+$ctx1.sendIdx["at:"]=1;
+if(($receiver = $2) == nil || $receiver == null){
 return false;
 } else {
 var class_;
 class_=$receiver;
-$1=_st(class_)._includesBehavior_(_st(_st($Smalltalk())._current())._at_(_st(_st(_st(anAnnouncement)._class())._theNonMetaClass())._name()));
+$6=_st($Smalltalk())._current();
+$7=_st(_st(_st(anAnnouncement)._class())._theNonMetaClass())._name();
+$5=_st($6)._at_($7);
+$1=_st($5)._includesBehavior_(class_);
 };
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},smalltalk.AnnouncementSubscription)})},
 args: ["anAnnouncement"],
-source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk current at: self announcementClass name)\x0a\x09\x09ifNil: [ ^ false ]\x0a\x09\x09ifNotNil: [ :class |\x0a\x09\x09class includesBehavior: (Smalltalk current at: anAnnouncement class theNonMetaClass name) ]",
-messageSends: ["ifNil:ifNotNil:", "includesBehavior:", "at:", "name", "theNonMetaClass", "class", "current", "announcementClass"],
+source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk current at: self announcementClass name)\x0a\x09\x09ifNil: [ ^ false ]\x0a\x09\x09ifNotNil: [ :class |\x0a\x09\x09(Smalltalk current at: anAnnouncement class theNonMetaClass name) includesBehavior: class ]",
+messageSends: ["ifNil:ifNotNil:", "at:", "current", "name", "announcementClass", "includesBehavior:", "theNonMetaClass", "class"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.AnnouncementSubscription);
@@ -185,7 +194,7 @@ return smalltalk.withContext(function($ctx1) {
 _st(self["@subscriptions"])._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
 return _st(each)._deliver_(anAnnouncement);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},smalltalk.Announcer)})},
 args: ["anAnnouncement"],
 source: "announce: anAnnouncement\x0a\x09subscriptions do: [ :each |\x0a\x09\x09each deliver: anAnnouncement ]",
@@ -240,24 +249,30 @@ selector: "on:send:to:",
 category: 'subscribing',
 fn: function (aClass,aSelector,anObject){
 var self=this;
-function $MessageSend(){return smalltalk.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
 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);
+var $1,$3,$4,$6,$7,$5,$8,$2;
+$1=self["@subscriptions"];
+$3=_st($AnnouncementSubscription())._new();
+$ctx1.sendIdx["new"]=1;
+$4=$3;
+$6=_st($MessageSend())._new();
+_st($6)._receiver_(anObject);
+_st($6)._selector_(aSelector);
+$7=_st($6)._yourself();
+$ctx1.sendIdx["yourself"]=1;
+$5=$7;
+_st($4)._valuable_($5);
+_st($3)._announcementClass_(aClass);
+$8=_st($3)._yourself();
+$2=$8;
+_st($1)._add_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject},smalltalk.Announcer)})},
 args: ["aClass", "aSelector", "anObject"],
 source: "on: aClass send: aSelector to: anObject\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09valuable: (MessageSend new\x0a\x09\x09\x09receiver: anObject;\x0a\x09\x09\x09selector: aSelector;\x0a\x09\x09\x09yourself);\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
-messageSends: ["add:", "valuable:", "receiver:", "new", "selector:", "yourself", "announcementClass:"],
-referencedClasses: ["MessageSend", "AnnouncementSubscription"]
+messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"],
+referencedClasses: ["AnnouncementSubscription", "MessageSend"]
 }),
 smalltalk.Announcer);
 
@@ -271,7 +286,7 @@ 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"unsubscribe:",{anObject:anObject},smalltalk.Announcer)})},
 args: ["anObject"],
 source: "unsubscribe: anObject\x0a\x09subscriptions := subscriptions reject: [ :each |\x0a\x09\x09each receiver = anObject ]",
@@ -295,7 +310,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@current"]=smalltalk.SystemAnnouncer.klass.superclass.fn.prototype._new.apply(_st(self), []);
 $1=self["@current"];
 } else {
@@ -762,4 +777,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 - 1674
js/Kernel-Classes.deploy.js

@@ -1,1674 +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=_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:", "selector", "methodDictionary", "ifFalse:", "addElement:", "protocol", "organization", "includes:", "protocols", "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:", "addAll:", "allInstanceVariableNames", "superclass"]}),
-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(acc,each){
-return smalltalk.withContext(function($ctx2) {
-$2=acc;
-_st($2)._addAll_(_st(each)._selectors());
-$3=_st($2)._yourself();
-return $3;
-}, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"allSelectors",{},smalltalk.Behavior)})},
-messageSends: ["inject:into:", "selectors", "addAll:", "yourself", "allSuperclasses"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSubclasses",
-fn: function (){
-var self=this;
-var subclasses,index;
-return smalltalk.withContext(function($ctx1) { 
-var $1;
-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) {
-_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",{subclasses:subclasses,index:index},smalltalk.Behavior)})},
-messageSends: ["subclasses", "whileFalse:", "addAll:", "at:", "+", ">", "size"]}),
-smalltalk.Behavior);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "allSubclassesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._allSubclasses())._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock},smalltalk.Behavior)})},
-messageSends: ["do:", "value:", "allSubclasses"]}),
-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:", "allSuperclasses", "with:", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector},smalltalk.Behavior)})},
-messageSends: ["or:", "and:", "canUnderstand:", "superclass", "notNil", "includes:", "asString", "keys", "methodDictionary"]}),
-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 $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);
-$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:", "theClass:", "new", "yourself", "current"]}),
-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)})}));
-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)})}));
-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)})}))._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)})}));
-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:", "methodAt:", "includesSelector:", "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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString},smalltalk.Behavior)})},
-messageSends: ["select:", "=", "protocol", "values", "methodDictionary"]}),
-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)})})))._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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByCategory:methodsByCategory},smalltalk.Behavior)})},
-messageSends: ["new", "do:", "add:", "at:ifAbsentPut:", "category", "values", "methodDictionary", "value:value:", "at:", "protocols"]}),
-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 $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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self._organization())._removeElement_(_st(aMethod)._protocol());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-$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:", "=", "protocol", "removeElement:", "organization", "methods", "announce:", "method:", "new", "yourself", "current"]}),
-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) { 
-self._subclassResponsibility();
-return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Behavior)})},
-messageSends: ["subclassResponsibility"]}),
-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:", "allSubclasses", "with:", "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:", "name", "package"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(" ");
-}, 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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"definition",{},smalltalk.Class)})},
-messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "tab", "lf", "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 $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);
-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:", "theClass:", "new", "oldPackage:", "yourself", "current"]}),
-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:", "asString", "new"]}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "subclasses",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.subclasses._copy();
-return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{},smalltalk.Class)})},
-messageSends: []}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(" ");
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-return _st(stream)._nextPutAll_("'");
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
-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: "subclasses",
-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)})},
-messageSends: ["collect:", "theMetaClass", "select:", "not", "isMetaclass", "subclasses", "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:", "migrateClassNamed:superclass:instanceVariableNames:package:", "==", "superclass", "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:", "error:", ",", "name", "isMetaclass", "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 $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);
-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:", "theClass:", "new", "yourself", "current"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "copyClass:named:",
-fn: function (aClass,className){
-var self=this;
-var newClass;
-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());
-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:", "theClass:", "new", "yourself", "current"]}),
-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)})}));
-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)})}));
-self._setupClass_(anotherClass);
-return self}, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass},smalltalk.ClassBuilder)})},
-messageSends: ["comment:", "comment", "do:", "install:forClass:category:", "source", "category", "new", "values", "methodDictionary", "basicClass:instanceVariables:", "class", "instanceVariableNames", "setupClass:"]}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "createPackageNamed:",
-fn: function (aString){
-var self=this;
-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)})}));
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["reject:", "isEmpty", "tokenize:"]}),
-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 $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);
-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)})}))._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)})}));
-$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)})}),_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:", "basicRemoveClass:", "signal", "copyClass:to:", "rawRenameClass:to:", "do:displayingProgress:", "migrateClass:superclass:", "name", "subclasses", "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 $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);
-_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:", "theClass:", "new", "yourself", "current"]}),
-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 $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;
-$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:", "theClass:", "new", "yourself", "current"]}),
-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)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._compileMethod_(chunk);
-}, 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)})},
-messageSends: ["whileFalse:", "compileMethod:", "nextChunk", "isEmpty", "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:", "setComment:", "isEmpty"]}),
-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)})}));
-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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},smalltalk.ClassSorterNode)})},
-messageSends: ["do:", "ifTrue:ifFalse:", "add:", "=", "theClass", "superclass", "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)})})))._do_((function(aNode){
-return smalltalk.withContext(function($ctx2) {
-return _st(aNode)._traverseClassesWith_(aCollection);
-}, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:",{aCollection:aCollection},smalltalk.ClassSorterNode)})},
-messageSends: ["add:", "theClass", "do:", "traverseClassesWith:", "sorted:", "<=", "name", "nodes"]}),
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 387 - 185
js/Kernel-Classes.js


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

@@ -1,4348 +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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"=",{anAssociation:anAssociation},smalltalk.Association)})},
-messageSends: ["and:", "=", "value", "key", "class"]}),
-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=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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Collection)})},
-messageSends: ["collect:", "asJSON", "asArray"]}),
-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=_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)})}));
-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)})}));
-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)})}));
-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)})});
-self._do_((function(each){
-return smalltalk.withContext(function($ctx2) {
-_st(actionBeforeElement)._value();
-return _st(aBlock)._value_(each);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-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:", "value", "isEmpty"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return sentinel;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))).__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=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)})}));
-if(smalltalk.assert($1)){
-return _st(outputSet)._add_(each);
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$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:", "add:", "and:", "not", "includes:", "withAll:", "asArray", "class"]}),
-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)})}));
-$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)})}));
-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)})}));
-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)})}));
-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)})}));
-$2=_st(stream)._contents();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,stream:stream},smalltalk.Collection)})},
-messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "nextPut:", "value:", "contents"]}),
-smalltalk.Collection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "select:thenCollect:",
-fn: function (selectBlock,collectBlock){
-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(selectBlock)._value_(each);
-if(smalltalk.assert($1)){
-return _st(stream)._nextPut_(_st(collectBlock)._value_(each));
-};
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
-$2=_st(stream)._contents();
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,stream:stream},smalltalk.Collection)})},
-messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "nextPut:", "value:", "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)})}));
-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)})}));
-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)})}));
-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)})}));
-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=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=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)})}));
-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)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["ifTrue:ifFalse:", "basicAt:", "includesKey:"]}),
-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)})}));
-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)})}),anotherBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aKey:aKey,aBlock:aBlock,anotherBlock:anotherBlock},smalltalk.HashedCollection)})},
-messageSends: ["ifTrue:ifFalse:", "value:", "at:", "includesKey:"]}),
-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=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=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)})}),aBlock);
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["detect:ifNone:", "=", "at:", "keys"]}),
-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)})}));
-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)})}));
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" , ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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:", "value", "basicDelete:", "includesKey:"]}),
-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)})}));
-$2=newDict;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,newDict:newDict},smalltalk.HashedCollection)})},
-messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "at:put:", "value:"]}),
-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=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) { 
-
-		return self._keys().map(function(key){
-			return self._at_(key);
-		});
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.HashedCollection)})},
-messageSends: []}),
-smalltalk.HashedCollection);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "valuesDo:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-_st(self._values())._do_((function(value){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(value);
-}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
-messageSends: ["do:", "value:", "values"]}),
-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)})}));
-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=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=newCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"newFromPairs:",{aCollection:aCollection,newCollection:newCollection},smalltalk.HashedCollection.klass)})},
-messageSends: ["ifFalse:", "error:", "even", "size", "new", "do:", "at:put:", "at:", "+", "to:by:"]}),
-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)})}));
-$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=self["@values"];
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.Dictionary)})},
-messageSends: []}),
-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)})}));
-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)})}));
-return true;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
-}, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["ifFalse:", "and:", "=", "size", "class", "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=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex,range:range,newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["to:", "new:", "size", "class", "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=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"deepCopy",{newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["new:", "size", "class", "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)})})))._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)})}));
-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._remove_(self._last());
-return self}, function($ctx1) {$ctx1.fill(self,"removeLast",{},smalltalk.SequenceableCollection)})},
-messageSends: ["remove:", "last"]}),
-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=newCollection;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"shallowCopy",{newCollection:newCollection},smalltalk.SequenceableCollection)})},
-messageSends: ["new:", "size", "class", "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:", "new", "streamClass", "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: "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)})})))._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: "collect:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.map(function(each) {return aBlock._value_(each)});
-return self}, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock},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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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: "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: "select:",
-fn: function (aBlock){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-
-		var result = self.klass._new();
-		for(var i=0; i<self.length; i++) {
-			if(aBlock._value_(self[i])) {
-				result.push(self[i]);
-			}
-		}
-		return result;
-	;
-return self}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock},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=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:", "asLowercase", "asString", "class"]}),
-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:", "asUppercase", "asString", "class"]}),
-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:",
-fn: function (anObject){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-self._errorReadOnly();
-return self}, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject},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: "asMutator",
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$3;
-$1=_st(self._last()).__eq(":");
-if(! smalltalk.assert($1)){
-$2=self.__comma(":");
-return $2;
-};
-$3=self;
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"asMutator",{},smalltalk.String)})},
-messageSends: ["ifFalse:", ",", "=", "last"]}),
-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:", "lf", "lines"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"isVowel",{},smalltalk.String)})},
-messageSends: ["and:", "includes:", "asLowercase", "=", "size"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx3) {
-return _st(stream)._nextPutAll_(self);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
-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)})}))._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)})}));
-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)})}));
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-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)})}));
-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:", "value:value:value:", "and:", "=", "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)})}));
-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=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)})}));
-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)})}))._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)})}));
-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:", "collect:", "class"]}),
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aStream)._nextPutAll_(" ");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_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)})}));
-$2=collection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,collection:collection},smalltalk.Set)})},
-messageSends: ["new", "class", "do:", "ifTrue:", "add:", "value:"]}),
-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)})}));
-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)})}));
-_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:", ">", "value", "isEmpty", "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: ["=", "size", "position"]}),
-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:", "streamSize", "collection"]}),
-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)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(aBlock)._value_(self._next());
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},smalltalk.Stream)})},
-messageSends: ["whileFalse:", "value:", "next", "atEnd"]}),
-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:", "position:", "+", "position", "at:", "atEnd"]}),
-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)})}));
-$2=tempCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},smalltalk.Stream)})},
-messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "add:", "next", "atEnd"]}),
-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)})}));
-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:", "at:", "+", "position", "collection", "atEnd"]}),
-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:", "size", "+", "position"]}),
-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)})}));
-$2=tempCollection;
-return $2;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},smalltalk.StringStream)})},
-messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", ",", "next", "atEnd"]}),
-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:", "setCollection:", ",", "collection", "copyFrom:to:", "position", "+", "size", "atEnd", "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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 235 - 153
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: [",", "selector", "message", "asString", "receiver"]}),
-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:", "logErrorContext:", "context", "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:", "logContext:", "home", "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:", "logContext:", "home"]}),
-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);

+ 32 - 23
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.";
@@ -360,13 +361,15 @@ category: 'accessing',
 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());
+var $2,$1;
+$2=_st(_st(self._receiver())._asString()).__comma(" does not understand #");
+$1=_st($2).__comma(_st(self._message())._selector());
+$ctx1.sendIdx[","]=1;
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"messageText",{},smalltalk.MessageNotUnderstood)})},
 args: [],
 source: "messageText\x0a\x09^self receiver asString, ' does not understand #', self message selector",
-messageSends: [",", "selector", "message", "asString", "receiver"],
+messageSends: [",", "asString", "receiver", "selector", "message"],
 referencedClasses: []
 }),
 smalltalk.MessageNotUnderstood);
@@ -454,18 +457,20 @@ category: 'error handling',
 fn: function (anError){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $1,$2;
 $1=_st(anError)._context();
-if(($receiver = $1) == nil || $receiver == undefined){
+$ctx1.sendIdx["context"]=1;
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
-self._logErrorContext_(_st(anError)._context());
+$2=_st(anError)._context();
+self._logErrorContext_($2);
 };
 self._logError_(anError);
 return self}, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},smalltalk.ErrorHandler)})},
 args: ["anError"],
 source: "handleError: anError\x0a\x09anError context ifNotNil: [self logErrorContext: anError context].\x0a\x09self logError: anError",
-messageSends: ["ifNotNil:", "logErrorContext:", "context", "logError:"],
+messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"],
 referencedClasses: []
 }),
 smalltalk.ErrorHandler);
@@ -493,18 +498,20 @@ category: 'private',
 fn: function (aContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
+var $1,$2;
 $1=_st(aContext)._home();
-if(($receiver = $1) == nil || $receiver == undefined){
+$ctx1.sendIdx["home"]=1;
+if(($receiver = $1) == nil || $receiver == null){
 $1;
 } else {
-self._logContext_(_st(aContext)._home());
+$2=_st(aContext)._home();
+self._logContext_($2);
 };
 self._log_(_st(aContext)._asString());
 return self}, function($ctx1) {$ctx1.fill(self,"logContext:",{aContext:aContext},smalltalk.ErrorHandler)})},
 args: ["aContext"],
 source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home].\x0a\x09self log: aContext asString",
-messageSends: ["ifNotNil:", "logContext:", "home", "log:", "asString"],
+messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"],
 referencedClasses: []
 }),
 smalltalk.ErrorHandler);
@@ -532,22 +539,24 @@ category: 'private',
 fn: function (aContext){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
-$1=aContext;
-if(($receiver = $1) == nil || $receiver == undefined){
-$1;
+var $2,$3,$4,$1;
+$2=aContext;
+if(($receiver = $2) == nil || $receiver == null){
+$1=$2;
 } else {
-$2=_st(aContext)._home();
-if(($receiver = $2) == nil || $receiver == undefined){
-$2;
+$3=_st(aContext)._home();
+$ctx1.sendIdx["home"]=1;
+if(($receiver = $3) == nil || $receiver == null){
+$1=$3;
 } else {
-self._logContext_(_st(aContext)._home());
+$4=_st(aContext)._home();
+$1=self._logContext_($4);
 };
 };
 return self}, function($ctx1) {$ctx1.fill(self,"logErrorContext:",{aContext:aContext},smalltalk.ErrorHandler)})},
 args: ["aContext"],
 source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home]]",
-messageSends: ["ifNotNil:", "logContext:", "home"],
+messageSends: ["ifNotNil:", "home", "logContext:"],
 referencedClasses: []
 }),
 smalltalk.ErrorHandler);
@@ -563,7 +572,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@current"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@current"]=self._new();
 $1=self["@current"];
 } else {
@@ -627,4 +636,4 @@ referencedClasses: []
 }),
 smalltalk.ErrorHandler.klass);
 
-})(global_smalltalk,global_nil,global__st);
+});

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

@@ -1,1736 +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;
-return smalltalk.withContext(function($ctx1) { 
-
-	var f = new Function('aString',
-	'if (/^[0-9]/.test(aString) || !/^[\\w_]+$/.test(aString))\n'+
-	'	return false;\n'+
-	'try { eval(aString); return true; } catch (ex) {}\n'+
-	'return false;');
-	return f(aString);;
-return self}, function($ctx1) {$ctx1.fill(self,"existsGlobal:",{aString:aString},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: "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: "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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 350 - 157
js/Kernel-Infrastructure.js


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

@@ -1,1365 +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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock},smalltalk.BlockClosure)})},
-messageSends: ["try:catch:", "asSmalltalkException:", "current", "ifTrue:ifFalse:", "value:", "resignal", "isKindOf:"]}),
-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)})}));
-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)})}));
-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:", "defaultCategory", "basicAt:"]}),
-smalltalk.CompiledMethod);
-
-smalltalk.addMethod(
-smalltalk.method({
-selector: "category:",
-fn: function (aString){
-var self=this;
-var oldProtocol;
-function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
-function $SystemAnnouncer(){return smalltalk.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
-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)})})))._ifEmpty_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._methodClass())._organization())._removeElement_(oldProtocol);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-};
-return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldProtocol:oldProtocol},smalltalk.CompiledMethod)})},
-messageSends: ["protocol", "basicAt:put:", "announce:", "method:", "new", "oldProtocol:", "yourself", "current", "ifNotNil:", "addElement:", "organization", "methodClass", "ifEmpty:", "removeElement:", "select:", "=", "methods"]}),
-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)})}));
-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:", "ifTrue:", "includesSelector:", "methodClass"]}),
-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: "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:", "addWorker", "<", "maxPoolSize", "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)})}));
-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)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
-return self._addWorker();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-};
-}, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel},smalltalk.ForkPool)})},
-messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="]}),
-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:", ",", "asString", "methodContext", "selector", "name", "class", "receiver", "isBlockContext"]}),
-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: "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:", "lookupSelector:", "selector", "methodContext", "class", "receiver"]}),
-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._home();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=$4;
-} else {
-var home;
-home=$receiver;
-$3=_st(home)._methodContext();
-};
-return $3;
-}, function($ctx1) {$ctx1.fill(self,"methodContext",{},smalltalk.MethodContext)})},
-messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "methodContext", "home"]}),
-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);

+ 172 - 82
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 | ... ] `";
@@ -134,7 +135,7 @@ $1=self._newWithValues_([anObject]);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},smalltalk.BlockClosure)})},
 args: ["anObject"],
-source: "newValue: anObject\x0a^ self newWithValues: { anObject }",
+source: "newValue: anObject\x0a\x09^ self newWithValues: { anObject }",
 messageSends: ["newWithValues:"],
 referencedClasses: []
 }),
@@ -152,7 +153,7 @@ $1=self._newWithValues_([anObject,anObject2]);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2"],
-source: "newValue: anObject value: anObject2\x0a^ self newWithValues: { anObject. anObject2 }.",
+source: "newValue: anObject value: anObject2\x0a\x09^ self newWithValues: { anObject. anObject2 }.",
 messageSends: ["newWithValues:"],
 referencedClasses: []
 }),
@@ -170,7 +171,7 @@ $1=self._newWithValues_([anObject,anObject2,anObject3]);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},smalltalk.BlockClosure)})},
 args: ["anObject", "anObject2", "anObject3"],
-source: "newValue: anObject value: anObject2 value: anObject3\x0a^ self newWithValues: { anObject. anObject2. anObject3 }.",
+source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09^ self newWithValues: { anObject. anObject2. anObject3 }.",
 messageSends: ["newWithValues:"],
 referencedClasses: []
 }),
@@ -184,14 +185,15 @@ 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;;
+		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)})},
 args: ["aCollection"],
-source: "newWithValues: aCollection\x0a\x22Use the receiver as a JavaScript constructor with a variable number of arguments.\x0aAnswer the object created using the operator `new`.\x0a\x0aThis algorithm was inspired by http://stackoverflow.com/a/6069331.\x0a\x0aHere's a general breakdown of what's going on:\x0a1) Create a new, empty constructor function.\x0a2) Set it's prototype to the receiver's prototype. Because the receiver is a `BlockClosure`, it is also a JavaScript function.\x0a3) Instantiate a new object using the constructor function just created. \x0a   This forces the interpreter to set the internal [[prototype]] property to what was set on the function before. \x0a   This has to be done, as we have no access to the [[prototype]] property externally.\x0a4) Apply `self` to the object I just instantiated.\x22\x0a\x0a<\x0a\x09var constructor = function() {};\x0a\x09constructor.prototype = self.prototype;\x0a\x09var object = new constructor;\x0a\x09var result = self.apply(object, aCollection);\x0a\x09return typeof result === \x22object\x22 ? result : object;\x0a>",
+source: "newWithValues: aCollection\x0a\x09\x22Use the receiver as a JavaScript constructor with a variable number of arguments.\x0a\x09Answer the object created using the operator `new`.\x0a\x0a\x09This algorithm was inspired by http://stackoverflow.com/a/6069331.\x0a\x0a\x09Here's a general breakdown of what's going on:\x0a\x091) Create a new, empty constructor function.\x0a\x092) Set it's prototype to the receiver's prototype. Because the receiver is a `BlockClosure`, it is also a JavaScript function.\x0a\x093) Instantiate a new object using the constructor function just created. \x0a\x09\x09This forces the interpreter to set the internal [[prototype]] property to what was set on the function before. \x0a   \x09\x09This has to be done, as we have no access to the [[prototype]] property externally.\x0a\x094) Apply `self` to the object I just instantiated.\x22\x0a\x0a\x09<\x0a\x09\x09var constructor = function() {};\x0a\x09\x09constructor.prototype = self.prototype;\x0a\x09\x09var object = new constructor;\x0a\x09\x09var result = self.apply(object, aCollection);\x0a\x09\x09return typeof result === \x22object\x22 ? result : object;\x0a\x09>",
 messageSends: [],
 referencedClasses: []
 }),
@@ -233,12 +235,12 @@ return _st(aBlock)._value_(smalltalkError);
 } else {
 return _st(smalltalkError)._resignal();
 };
-}, function($ctx2) {$ctx2.fillBlock({error:error,smalltalkError:smalltalkError},$ctx1)})}));
+}, 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)})},
 args: ["anErrorClass", "aBlock"],
 source: "on: anErrorClass do: aBlock\x0a\x09\x22All exceptions thrown in the Smalltalk stack are cought.\x0a\x09Convert all JS exceptions to JavaScriptException instances.\x22\x0a\x09\x0a\x09^self try: self catch: [ :error | | smalltalkError |\x0a\x09\x09smalltalkError := Smalltalk current asSmalltalkException: error.\x0a\x09\x09(smalltalkError isKindOf: anErrorClass)\x0a\x09\x09ifTrue: [ aBlock value: smalltalkError ]\x0a\x09\x09ifFalse: [ smalltalkError resignal ] ]",
-messageSends: ["try:catch:", "asSmalltalkException:", "current", "ifTrue:ifFalse:", "value:", "resignal", "isKindOf:"],
+messageSends: ["try:catch:", "asSmalltalkException:", "current", "ifTrue:ifFalse:", "isKindOf:", "value:", "resignal"],
 referencedClasses: ["Smalltalk"]
 }),
 smalltalk.BlockClosure);
@@ -405,7 +407,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 self._whileFalse_((function(){
 return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileFalse",{},smalltalk.BlockClosure)})},
 args: [],
 source: "whileFalse\x0a\x09self whileFalse: []",
@@ -439,7 +441,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 self._whileTrue_((function(){
 return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 return self}, function($ctx1) {$ctx1.fill(self,"whileTrue",{},smalltalk.BlockClosure)})},
 args: [],
 source: "whileTrue\x0a\x09self whileTrue: []",
@@ -493,7 +495,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self._basicAt_("category");
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=self._defaultCategory();
 } else {
 $1=$2;
@@ -502,7 +504,7 @@ return $1;
 }, function($ctx1) {$ctx1.fill(self,"category",{},smalltalk.CompiledMethod)})},
 args: [],
 source: "category\x0a\x09^(self basicAt: 'category') ifNil: [ self defaultCategory ]",
-messageSends: ["ifNil:", "defaultCategory", "basicAt:"],
+messageSends: ["ifNil:", "basicAt:", "defaultCategory"],
 referencedClasses: []
 }),
 smalltalk.CompiledMethod);
@@ -514,11 +516,12 @@ category: 'accessing',
 fn: function (aString){
 var self=this;
 var oldProtocol;
-function $MethodMoved(){return smalltalk.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
 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;
+var $1,$2,$3,$5,$4,$8,$7,$9,$6,$11,$10;
 oldProtocol=self._protocol();
+$ctx1.sendIdx["protocol"]=1;
 self._basicAt_put_("category",aString);
 $1=_st($MethodMoved())._new();
 _st($1)._method_(self);
@@ -526,23 +529,35 @@ _st($1)._oldProtocol_(oldProtocol);
 $2=_st($1)._yourself();
 _st(_st($SystemAnnouncer())._current())._announce_($2);
 $3=self._methodClass();
-if(($receiver = $3) == nil || $receiver == undefined){
+$ctx1.sendIdx["methodClass"]=1;
+if(($receiver = $3) == nil || $receiver == null){
 $3;
 } else {
-_st(_st(self._methodClass())._organization())._addElement_(aString);
-_st(_st(_st(self._methodClass())._methods())._select_((function(each){
+$5=self._methodClass();
+$ctx1.sendIdx["methodClass"]=2;
+$4=_st($5)._organization();
+$ctx1.sendIdx["organization"]=1;
+_st($4)._addElement_(aString);
+$8=self._methodClass();
+$ctx1.sendIdx["methodClass"]=3;
+$7=_st($8)._methods();
+$6=_st($7)._select_((function(each){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(each)._protocol()).__eq(oldProtocol);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})})))._ifEmpty_((function(){
+$9=_st(each)._protocol();
+return _st($9).__eq(oldProtocol);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)})}));
+_st($6)._ifEmpty_((function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st(self._methodClass())._organization())._removeElement_(oldProtocol);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+$11=self._methodClass();
+$10=_st($11)._organization();
+return _st($10)._removeElement_(oldProtocol);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)})}));
 };
 return self}, function($ctx1) {$ctx1.fill(self,"category:",{aString:aString,oldProtocol:oldProtocol},smalltalk.CompiledMethod)})},
 args: ["aString"],
 source: "category: aString\x0a\x09| oldProtocol |\x0a\x09oldProtocol := self protocol.\x0a\x09self basicAt: 'category' put: aString.\x0a\x0a\x09SystemAnnouncer current announce: (MethodMoved new\x0a\x09\x09method: self;\x0a\x09\x09oldProtocol: oldProtocol;\x0a\x09\x09yourself).\x0a\x0a\x09self methodClass ifNotNil: [\x0a\x09\x09self methodClass organization addElement: aString.\x0a\x09\x0a\x09\x09(self methodClass methods\x0a\x09\x09\x09select: [ :each | each protocol = oldProtocol ])\x0a\x09\x09\x09ifEmpty: [ self methodClass organization removeElement: oldProtocol ] ]",
-messageSends: ["protocol", "basicAt:put:", "announce:", "method:", "new", "oldProtocol:", "yourself", "current", "ifNotNil:", "addElement:", "organization", "methodClass", "ifEmpty:", "removeElement:", "select:", "=", "methods"],
-referencedClasses: ["MethodMoved", "SystemAnnouncer"]
+messageSends: ["protocol", "basicAt:put:", "announce:", "current", "method:", "new", "oldProtocol:", "yourself", "ifNotNil:", "methodClass", "addElement:", "organization", "ifEmpty:", "select:", "methods", "=", "removeElement:"],
+referencedClasses: ["SystemAnnouncer", "MethodMoved"]
 }),
 smalltalk.CompiledMethod);
 
@@ -630,14 +645,14 @@ $1=_st(each)._includesSelector_(selector);
 if(smalltalk.assert($1)){
 throw $early=[true];
 };
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
+}, 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)})},
 args: [],
 source: "isOverridden\x0a\x09| selector |\x0a    \x0a    selector := self selector.\x0a    self methodClass allSubclassesDo: [ :each |\x0a\x09    (each includesSelector: selector)\x0a        \x09ifTrue: [ ^ true ] ].\x0a\x09^ false",
-messageSends: ["selector", "allSubclassesDo:", "ifTrue:", "includesSelector:", "methodClass"],
+messageSends: ["selector", "allSubclassesDo:", "methodClass", "ifTrue:", "includesSelector:"],
 referencedClasses: []
 }),
 smalltalk.CompiledMethod);
@@ -650,16 +665,22 @@ 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){
+var $1,$2,$6,$5,$4,$3;
+$1=self._methodClass();
+$ctx1.sendIdx["methodClass"]=1;
+superclass=_st($1)._superclass();
+$ctx1.sendIdx["superclass"]=1;
+$2=superclass;
+if(($receiver = $2) == nil || $receiver == null){
 return false;
 } else {
-$1;
+$2;
 };
-$2=_st(_st(_st(self._methodClass())._superclass())._lookupSelector_(self._selector()))._notNil();
-return $2;
+$6=self._methodClass();
+$5=_st($6)._superclass();
+$4=_st($5)._lookupSelector_(self._selector());
+$3=_st($4)._notNil();
+return $3;
 }, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass},smalltalk.CompiledMethod)})},
 args: [],
 source: "isOverride\x0a\x09| superclass |\x0a    \x0a    superclass := self methodClass superclass.\x0a\x09superclass ifNil: [ ^ false ].\x0a\x09\x0a    ^ (self methodClass superclass lookupSelector: self selector) notNil",
@@ -790,6 +811,24 @@ referencedClasses: []
 }),
 smalltalk.CompiledMethod);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendTo:arguments:",
+category: 'evaluating',
+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)})},
+args: ["anObject", "aCollection"],
+source: "sendTo: anObject arguments: aCollection\x0a\x09^ self fn applyTo: anObject arguments: aCollection",
+messageSends: ["applyTo:arguments:", "fn"],
+referencedClasses: []
+}),
+smalltalk.CompiledMethod);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "source",
@@ -799,7 +838,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self._basicAt_("source");
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1="";
 } else {
 $1=$2;
@@ -884,7 +923,7 @@ _st(self["@queue"])._nextPut_(aBlock);
 return self}, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock},smalltalk.ForkPool)})},
 args: ["aBlock"],
 source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue nextPut: aBlock",
-messageSends: ["ifTrue:", "addWorker", "<", "maxPoolSize", "nextPut:"],
+messageSends: ["ifTrue:", "<", "maxPoolSize", "addWorker", "nextPut:"],
 referencedClasses: []
 }),
 smalltalk.ForkPool);
@@ -928,24 +967,24 @@ self["@poolSize"];
 block=_st(self["@queue"])._nextIfAbsent_((function(){
 return smalltalk.withContext(function($ctx3) {
 return sentinel;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, 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)})}))._ensure_((function(){
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)})}))._ensure_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._addWorker();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)})}));
 };
-}, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1)})});
+}, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1,1)})});
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel},smalltalk.ForkPool)})},
 args: [],
 source: "makeWorker\x0a\x09| sentinel |\x0a\x09sentinel := Object new.\x0a\x09^[ | block |\x0a\x09\x09poolSize := poolSize - 1.\x0a\x09\x09block := queue nextIfAbsent: [ sentinel ].\x0a\x09\x09block == sentinel ifFalse: [\x0a\x09\x09\x09[ block value ] ensure: [ self addWorker ]]]",
-messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="],
+messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "==", "ensure:", "value", "addWorker"],
 referencedClasses: ["Object"]
 }),
 smalltalk.ForkPool);
@@ -959,7 +998,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@maxPoolSize"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 $1=self._defaultMaxPoolSize();
 } else {
 $1=$2;
@@ -1000,7 +1039,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
 var $2,$1;
 $2=self["@default"];
-if(($receiver = $2) == nil || $receiver == undefined){
+if(($receiver = $2) == nil || $receiver == null){
 self["@default"]=self._new();
 $1=self["@default"];
 } else {
@@ -1095,7 +1134,9 @@ var $1,$2;
 smalltalk.Message.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 _st($1)._nextPutAll_("(");
+$ctx1.sendIdx["nextPutAll:"]=1;
 _st($1)._nextPutAll_(self._selector());
+$ctx1.sendIdx["nextPutAll:"]=2;
 $2=_st($1)._nextPutAll_(")");
 return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.Message)})},
 args: ["aStream"],
@@ -1246,9 +1287,13 @@ var $1,$2;
 smalltalk.MessageSend.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 _st($1)._nextPutAll_("(");
+$ctx1.sendIdx["nextPutAll:"]=1;
 _st($1)._nextPutAll_(self._receiver());
+$ctx1.sendIdx["nextPutAll:"]=2;
 _st($1)._nextPutAll_(" >> ");
+$ctx1.sendIdx["nextPutAll:"]=3;
 _st($1)._nextPutAll_(self._selector());
+$ctx1.sendIdx["nextPutAll:"]=4;
 $2=_st($1)._nextPutAll_(")");
 return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.MessageSend)})},
 args: ["aStream"],
@@ -1437,18 +1482,23 @@ 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(")");
+$3="a block (in ".__comma(_st(self._methodContext())._asString());
+$ctx1.sendIdx[","]=2;
+$1=_st($3).__comma(")");
+$ctx1.sendIdx[","]=1;
 } else {
-$1=_st(_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ")).__comma(self._selector());
+$4=_st(_st(_st(self._receiver())._class())._name()).__comma(" >> ");
+$1=_st($4).__comma(self._selector());
+$ctx1.sendIdx[","]=3;
 };
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.MethodContext)})},
 args: [],
 source: "asString\x0a\x09^self isBlockContext\x0a\x09\x09ifTrue: [ 'a block (in ', self methodContext asString, ')' ]\x0a\x09\x09ifFalse: [ self receiver class name, ' >> ', self selector ]",
-messageSends: ["ifTrue:ifFalse:", ",", "asString", "methodContext", "selector", "name", "class", "receiver", "isBlockContext"],
+messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "name", "class", "receiver", "selector"],
 referencedClasses: []
 }),
 smalltalk.MethodContext);
@@ -1469,6 +1519,22 @@ referencedClasses: []
 }),
 smalltalk.MethodContext);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "index",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.index || 0;
+return self}, function($ctx1) {$ctx1.fill(self,"index",{},smalltalk.MethodContext)})},
+args: [],
+source: "index\x0a\x09<return self.index || 0>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.MethodContext);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "isBlockContext",
@@ -1510,18 +1576,25 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$1;
+var $2,$5,$4,$3,$7,$6,$1;
 $2=self._methodContext();
-if(($receiver = $2) == nil || $receiver == undefined){
+$ctx1.sendIdx["methodContext"]=1;
+if(($receiver = $2) == nil || $receiver == null){
 $1=$2;
 } else {
-$1=_st(_st(_st(self._methodContext())._receiver())._class())._lookupSelector_(_st(self._methodContext())._selector());
+$5=self._methodContext();
+$ctx1.sendIdx["methodContext"]=2;
+$4=_st($5)._receiver();
+$3=_st($4)._class();
+$7=self._methodContext();
+$6=_st($7)._selector();
+$1=_st($3)._lookupSelector_($6);
 };
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.MethodContext)})},
 args: [],
 source: "method\x0a\x09^ self methodContext ifNotNil: [\x0a\x09\x09self methodContext receiver class lookupSelector: self methodContext selector ]",
-messageSends: ["ifNotNil:", "lookupSelector:", "selector", "methodContext", "class", "receiver"],
+messageSends: ["ifNotNil:", "methodContext", "lookupSelector:", "class", "receiver", "selector"],
 referencedClasses: []
 }),
 smalltalk.MethodContext);
@@ -1533,25 +1606,24 @@ category: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2,$4,$3;
+var $1,$3,$2;
 $1=self._isBlockContext();
 if(! smalltalk.assert($1)){
-$2=self;
-return $2;
+return self;
 };
-$4=self._home();
-if(($receiver = $4) == nil || $receiver == undefined){
-$3=$4;
+$3=self._outerContext();
+if(($receiver = $3) == nil || $receiver == null){
+$2=$3;
 } else {
-var home;
-home=$receiver;
-$3=_st(home)._methodContext();
+var outer;
+outer=$receiver;
+$2=_st(outer)._methodContext();
 };
-return $3;
+return $2;
 }, function($ctx1) {$ctx1.fill(self,"methodContext",{},smalltalk.MethodContext)})},
 args: [],
-source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self home ifNotNil: [ :home |\x0a\x09\x09home methodContext ]",
-messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "methodContext", "home"],
+source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self outerContext ifNotNil: [ :outer |\x0a\x09\x09outer methodContext ]",
+messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"],
 referencedClasses: []
 }),
 smalltalk.MethodContext);
@@ -1572,22 +1644,6 @@ referencedClasses: []
 }),
 smalltalk.MethodContext);
 
-smalltalk.addMethod(
-smalltalk.method({
-selector: "pc",
-category: 'accessing',
-fn: function (){
-var self=this;
-return smalltalk.withContext(function($ctx1) { 
-return self.pc;
-return self}, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.MethodContext)})},
-args: [],
-source: "pc\x0a\x09<return self.pc>",
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.MethodContext);
-
 smalltalk.addMethod(
 smalltalk.method({
 selector: "printOn:",
@@ -1599,7 +1655,9 @@ var $1,$2;
 smalltalk.MethodContext.superclass.fn.prototype._printOn_.apply(_st(self), [aStream]);
 $1=aStream;
 _st($1)._nextPutAll_("(");
+$ctx1.sendIdx["nextPutAll:"]=1;
 _st($1)._nextPutAll_(self._asString());
+$ctx1.sendIdx["nextPutAll:"]=2;
 $2=_st($1)._nextPutAll_(")");
 return self}, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},smalltalk.MethodContext)})},
 args: ["aStream"],
@@ -1647,6 +1705,38 @@ referencedClasses: []
 }),
 smalltalk.MethodContext);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendIndexAt:",
+category: 'accessing',
+fn: function (aSelector){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.sendIdx[aSelector] || 0;
+return self}, function($ctx1) {$ctx1.fill(self,"sendIndexAt:",{aSelector:aSelector},smalltalk.MethodContext)})},
+args: ["aSelector"],
+source: "sendIndexAt: aSelector\x0a\x09<return self.sendIdx[aSelector] || 0>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.MethodContext);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "sendIndexes",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.sendIdx;
+return self}, function($ctx1) {$ctx1.fill(self,"sendIndexes",{},smalltalk.MethodContext)})},
+args: [],
+source: "sendIndexes\x0a\x09<return self.sendIdx>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.MethodContext);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "temps",
@@ -1845,4 +1935,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=variables;
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"asJSON",{variables:variables},smalltalk.Object)})},
-messageSends: ["new", "do:", "at:put:", "asJSON", "instVarAt:", "allInstanceVariableNames", "class"]}),
-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=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:", "instVarAt:", "allInstanceVariableNames", "class", "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:", "inheritsFrom:", "class", "isMemberOf:"]}),
-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)})}));
-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)})}));
-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)})}),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)})}));
-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)})}),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)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value();
-count=_st(count).__plus((1));
-return count;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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=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)})}))._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)})}));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._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)})}));
-};
-$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)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(value);
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-} else {
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(value).__lt_eq(stop);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(value);
-value=_st(value).__plus(step);
-return value;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-};
-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)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-_st(aBlock)._value_(nextValue);
-nextValue=_st(nextValue).__plus((1));
-return nextValue;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"=",{aPoint:aPoint},smalltalk.Point)})},
-messageSends: ["and:", "&", "=", "y", "x", "class"]}),
-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)})}));
-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:", "space", "and:", "negative", "notNil"]}),
-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: ["@", "+", "y", "x"]}),
-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)})}));
-return $1;
-}, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger},smalltalk.Random)})},
-messageSends: ["collect:", "next", "to:"]}),
-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)})}));
-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:", "asString", "new"]}),
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 452 - 119
js/Kernel-Objects.js


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

@@ -1,4132 +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)})}))._valueWithInterval_((0)))._clearInterval();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}))._valueWithTimeout_((0)))._clearTimeout();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}))._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 $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
-function $ClassBuilder(){return smalltalk.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
-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)})}))._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)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Array())._removeCompiledMethod_(curriedMethod);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array},smalltalk.BlockClosureTest)})},
-messageSends: ["asCompiledMethod:", "currySelf", "at:", "installMethod:forClass:category:", "new", "ensure:", "removeCompiledMethod:", "assert:equals:", "foo:"]}),
-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)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (4);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),(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)})}))._ensure_((function(){
-return smalltalk.withContext(function($ctx3) {
-return true;
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx3) {
-return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
-return self}, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{},smalltalk.BlockClosureTest)})},
-messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "finished", "assert:", "signal", "deny:"]}),
-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)})}))._numArgs(),(0));
-self._assert_equals_(_st((function(a,b){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})}))._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)})}))._on_do_($Error(),(function(ex){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1)})})));
-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)})}))._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)})}))._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)})}))._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)})}))._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)})}))._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)})}))._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)})}))._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)})}))._whileFalse_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}))._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)})}))._whileTrue_((function(){
-return smalltalk.withContext(function($ctx2) {
-i=_st(i).__plus((1));
-return i;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}))._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)})})));
-_st($1)._deny_(true._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-_st($1)._deny_(false._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$2=_st($1)._deny_(false._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$3=self;
-_st($3)._assert_(true._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-_st($3)._assert_(true._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-_st($3)._assert_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return true;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$4=_st($3)._deny_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$5=self;
-_st($5)._assert_(true._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((0));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-_st($5)._deny_(_st((1).__gt((0)))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$6=_st($5)._deny_(_st((1).__gt((0)))._and_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((2));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$7=self;
-_st($7)._assert_(false._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((0));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-_st($7)._assert_(_st((1).__gt((0)))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return false;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-$8=_st($7)._assert_(_st((1).__gt((0)))._or_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (1).__gt((2));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})));
-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)})}),$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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithSubclasses",{},smalltalk.ClassBuilderTest)})},
-messageSends: ["copyClass:named:", "subclass:instanceVariableNames:package:", "at:", "current", "assert:", "includes:", "subclasses", "do:", "removeClass:", "allSubclasses"]}),
-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)})}));
-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:", "defaultValues", "collectionClass"]}),
-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)})}));
-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)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "collect:", "abs", "collection"]}),
-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)})})),(-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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}));
-self._assertSameContents_as_(self._collection(),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testDo",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["new", "do:", "add:", "collection", "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)})})),newCollection);
-return self}, function($ctx1) {$ctx1.fill(self,"testSelect",{newCollection:newCollection},smalltalk.CollectionTest)})},
-messageSends: ["assertSameContents:as:", "select:", "even", "collection"]}),
-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)})}),$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)})})),"none");
-return self}, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{},smalltalk.IndexableCollectionTest)})},
-messageSends: ["assert:equals:", "at:ifAbsent:", "+", "size", "collection"]}),
-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)})})));
-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)})})));
-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)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})}));
-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)})}),$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)})})));
-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)})})));
-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)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})})),"world");
-self._deny_(_st(_st(d)._at_ifAbsent_("foo",(function(){
-return smalltalk.withContext(function($ctx2) {
-return nil;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))).__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)})}));
-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)})}));
-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)})}));
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-visited=true;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-visited=true;
-return visited;
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})})),"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)})})),(4));
-key="why";
-self._assert_equals_(_st(d)._removeKey_ifAbsent_(key,(function(){
-return smalltalk.withContext(function($ctx2) {
-return (42);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),(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: "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)})})),"world");
-self._assert_equals_(_st(array)._at_ifAbsent_((0),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"not found");
-self._assert_equals_(_st(array)._at_ifAbsent_((-10),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"not found");
-self._assert_equals_(_st(array)._at_ifAbsent_((3),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not found";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})})),"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)})}),$Error());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return "hello"._remove_("h");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})})),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)})}),$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)})})),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)})})),"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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}))));
-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)})}),$Error());
-self._assert_equals_(_st(self._collection())._indexOf_ifAbsent_((999),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "sentinel";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})})),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)})})),"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)})}),$Error());
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st($Transcript())._show_(console);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})})),"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)})})),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)})})),(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)})})),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)})})),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)})})),"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)})})),"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)})})),"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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})}),(function(){
-return smalltalk.withContext(function($ctx2) {
-return "not present";
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})),"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)})}),$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)})}),$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)})}))._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)})}));
-return self}, function($ctx1) {$ctx1.fill(self,"testCatchingException",{},smalltalk.JavaScriptExceptionTest)})},
-messageSends: ["on:do:", "assert:", "=", "exception", "throwException"]}),
-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)})}),$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 $Object(){return smalltalk.Object||(typeof Object=="undefined"?nil:Object)}
-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_(_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:", "codeGeneratorClass", "new", "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:", "targetClassBottom", "compiler"]}),
-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:", "targetClassMiddle", "compiler"]}),
-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:", "targetClassTop", "compiler"]}),
-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)})});
-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)})}),$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)})}),$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)})}),$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)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._deinstallMiddle();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-_st((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._deinstallBottom();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_($Error(),(function(){
-return smalltalk.withContext(function($ctx2) {
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
-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)})});
-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)})});
-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)})});
-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)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rg();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rH();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rh();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rI();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ri();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rJ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rj();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rK();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rk();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rL();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rl();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rM();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rm();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rN();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rn();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rO();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ro();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rP();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rp();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rQ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rq();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rR();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rr();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rS();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rs();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rT();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rt();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rU();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ru();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rV();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rv();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rW();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rw();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rX();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rx();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rY();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._ry();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rZ();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (16)._rz();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$MessageNotUnderstood());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return (11259375)._Z();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}));
-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)})}));
-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)})}),$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)})}));
-_st(o)._basicAt_put_("func2",(function(a){
-return smalltalk.withContext(function($ctx2) {
-return _st(a).__plus((1));
-}, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1)})}));
-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)})}),$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)})}),$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)})}));
-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)})}),$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)})})),[(0), (2)]._asSet());
-return self}, function($ctx1) {$ctx1.fill(self,"testCollect",{},smalltalk.SetTest)})},
-messageSends: ["assert:equals:", "collect:", "\x5c\x5c", "asSet"]}),
-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)})}));
-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)})}));
-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)})}));
-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);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 489 - 181
js/Kernel-Tests.js


+ 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:", "cr", "current"]}),
-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);

+ 4 - 3
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.";
@@ -115,7 +116,7 @@ _st(self._current())._show_(_st($String())._cr());
 return self}, function($ctx1) {$ctx1.fill(self,"cr",{},smalltalk.Transcript.klass)})},
 args: [],
 source: "cr\x0a\x09self current show: String cr",
-messageSends: ["show:", "cr", "current"],
+messageSends: ["show:", "current", "cr"],
 referencedClasses: ["String"]
 }),
 smalltalk.Transcript.klass);
@@ -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)})}),$Error());
-self._should_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return _st(self["@empty"])._at_put_((5),"abc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
-return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
-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)})})))._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)})})))._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)})})))._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)})})))._valueWithTimeout_((30));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._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)})})))._valueWithTimeout_((20));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._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)})})))._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)})})))._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)})}));
-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)})}));
-_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)})}));
-_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:", "ifTrue:", "=", "total", "runs", "==", "announcer", "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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})}),$Error());
-self._timeout_((0));
-self._shouldnt_raise_((function(){
-return smalltalk.withContext(function($ctx2) {
-return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$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)})})))._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)})}));
-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)})}));
-_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)})}));
-_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:", "ifTrue:", "=", "total", "runs", "==", "announcer", "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)})})))._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)})})))._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);

+ 128 - 64
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.";
@@ -63,14 +64,16 @@ fn: function (){
 var self=this;
 function $Error(){return smalltalk.Error||(typeof Error=="undefined"?nil:Error)}
 return smalltalk.withContext(function($ctx1) { 
-self._should_raise_((function(){
+var $1,$2;
+$1=self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@empty"])._at_((5));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
-self._should_raise_((function(){
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}),$Error());
+$ctx1.sendIdx["should:raise:"]=1;
+$2=self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 return _st(self["@empty"])._at_put_((5),"abc");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testIllegal",{},smalltalk.ExampleSetTest)})},
 args: [],
 source: "testIllegal\x0a\x09self\x0a\x09\x09should: [empty at: 5]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [empty at: 5 put: #abc]\x0a\x09\x09raise: Error",
@@ -86,8 +89,13 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._assert_(_st(self["@full"])._includes_((5)));
-self._assert_(_st(self["@full"])._includes_("abc"));
+var $2,$1,$4,$3;
+$2=_st(self["@full"])._includes_((5));
+$ctx1.sendIdx["includes:"]=1;
+$1=self._assert_($2);
+$ctx1.sendIdx["assert:"]=1;
+$4=_st(self["@full"])._includes_("abc");
+$3=self._assert_($4);
 return self}, function($ctx1) {$ctx1.fill(self,"testIncludes",{},smalltalk.ExampleSetTest)})},
 args: [],
 source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
@@ -103,10 +111,18 @@ category: 'tests',
 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));
+var $2,$1,$4,$3,$6,$5;
+$2=_st(self["@empty"])._occurrencesOf_((0));
+$ctx1.sendIdx["occurrencesOf:"]=1;
+$1=self._assert_equals_($2,(0));
+$ctx1.sendIdx["assert:equals:"]=1;
+$4=_st(self["@full"])._occurrencesOf_((5));
+$ctx1.sendIdx["occurrencesOf:"]=2;
+$3=self._assert_equals_($4,(1));
+$ctx1.sendIdx["assert:equals:"]=2;
 _st(self["@full"])._add_((5));
-self._assert_equals_(_st(self["@full"])._occurrencesOf_((5)),(1));
+$6=_st(self["@full"])._occurrencesOf_((5));
+$5=self._assert_equals_($6,(1));
 return self}, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},smalltalk.ExampleSetTest)})},
 args: [],
 source: "testOccurrences\x0a\x09self assert: (empty occurrencesOf: 0) equals: 0.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1.\x0a\x09full add: 5.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1",
@@ -122,9 +138,13 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 _st(self["@full"])._remove_((5));
-self._assert_(_st(self["@full"])._includes_("abc"));
-self._deny_(_st(self["@full"])._includes_((5)));
+$1=_st(self["@full"])._includes_("abc");
+$ctx1.sendIdx["includes:"]=1;
+self._assert_($1);
+$2=_st(self["@full"])._includes_((5));
+self._deny_($2);
 return self}, function($ctx1) {$ctx1.fill(self,"testRemove",{},smalltalk.ExampleSetTest)})},
 args: [],
 source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
@@ -150,7 +170,7 @@ return smalltalk.withContext(function($ctx2) {
 self["@flag"]="ok";
 self["@flag"];
 return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((20));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeError",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
@@ -171,7 +191,7 @@ self._timeout_((30));
 self["@flag"]=_st(self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._error_("Intentional");
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((20));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
@@ -194,7 +214,7 @@ return smalltalk.withContext(function($ctx2) {
 self["@flag"]="ok";
 self["@flag"];
 return self._assert_(false);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((20));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
@@ -210,15 +230,21 @@ category: 'helpers',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._timeout_((100));
-_st(self._async_((function(){
+var $1,$4,$3,$2;
+$1=self._timeout_((100));
+$ctx1.sendIdx["timeout:"]=1;
+$3=self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 self._timeout_((20));
-return _st(self._async_((function(){
+$4=self._async_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})})))._valueWithTimeout_((30));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((20));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+return _st($4)._valueWithTimeout_((30));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["async:"]=1;
+$2=_st($3)._valueWithTimeout_((20));
+$ctx1.sendIdx["valueWithTimeout:"]=1;
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09(self async: [\x0a\x09\x09self timeout: 20.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 30\x0a\x09]) valueWithTimeout: 20",
@@ -234,15 +260,21 @@ category: 'helpers',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._timeout_((20));
-_st(self._async_((function(){
+var $1,$4,$3,$2;
+$1=self._timeout_((20));
+$ctx1.sendIdx["timeout:"]=1;
+$3=self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 self._timeout_((40));
-return _st(self._async_((function(){
+$4=self._async_((function(){
 return smalltalk.withContext(function($ctx3) {
 return self._finished();
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})})))._valueWithTimeout_((20));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((10));
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+return _st($4)._valueWithTimeout_((20));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["async:"]=1;
+$2=_st($3)._valueWithTimeout_((10));
+$ctx1.sendIdx["valueWithTimeout:"]=1;
 return self}, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09(self async: [\x0a\x09\x09self timeout: 40.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 20\x0a\x09]) valueWithTimeout: 10",
@@ -262,7 +294,7 @@ self._timeout_((10));
 _st(self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((20));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((20));
 return self}, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
@@ -282,7 +314,7 @@ 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)})})))._asSet();
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})})))._asSet();
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},smalltalk.SUnitAsyncTest)})},
 args: ["aCollection"],
@@ -334,33 +366,42 @@ 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;
+var $1,$2,$3,$4,$6,$5,$7;
 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 runner=_st($TestSuiteRunner())._on_(suite);
 self._timeout_((200));
 result=_st(runner)._result();
+$ctx1.sendIdx["result"]=1;
 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());
+$1=self._selectorSetOf_(_st(result)._errors());
+$ctx2.sendIdx["selectorSetOf:"]=1;
+$2=["fakeError"]._asSet();
+$ctx2.sendIdx["asSet"]=1;
+self._assert_equals_($1,$2);
+$ctx2.sendIdx["assert:equals:"]=1;
+$3=self._selectorSetOf_(_st(result)._failures());
+$4=["fakeErrorFailingInTearDown", "fakeFailure"]._asSet();
+self._assert_equals_($3,$4);
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, 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);
+$6=_st(ann)._result();
+$5=_st($6).__eq_eq(result);
+if(smalltalk.assert($5)){
+$7=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($7)._ifTrue_(assertBlock);
 };
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+}, 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)})},
 args: [],
 source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: #('fakeError') asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeErrorFailingInTearDown' 'fakeFailure') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [:ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
+messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"],
 referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"]
 }),
 smalltalk.SUnitAsyncTest);
@@ -377,15 +418,16 @@ self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._async_((function(){
 return smalltalk.withContext(function($ctx3) {
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)})}));
+$ctx2.sendIdx["async:"]=1;
+}, 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)})}));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+}, 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)})},
 args: [],
@@ -406,12 +448,13 @@ return smalltalk.withContext(function($ctx1) {
 self._should_raise_((function(){
 return smalltalk.withContext(function($ctx2) {
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}),$Error());
+$ctx2.sendIdx["finished"]=1;
+}, 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)})}),$Error());
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}),$Error());
 return self}, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
@@ -427,11 +470,18 @@ category: 'tests',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-self._deny_(self._isAsync());
+var $2,$1,$3,$5,$4;
+$2=self._isAsync();
+$ctx1.sendIdx["isAsync"]=1;
+$1=self._deny_($2);
+$ctx1.sendIdx["deny:"]=1;
 self._timeout_((0));
-self._assert_(self._isAsync());
+$3=self._isAsync();
+$ctx1.sendIdx["isAsync"]=2;
+self._assert_($3);
 self._finished();
-self._deny_(self._isAsync());
+$5=self._isAsync();
+$4=self._deny_($5);
 return self}, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
@@ -455,7 +505,7 @@ self._assert_(true);
 self._finished();
 self["@flag"]="ok";
 return self["@flag"];
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((5));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})})))._valueWithTimeout_((5));
 return self}, function($ctx1) {$ctx1.fill(self,"testPass",{},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
@@ -475,33 +525,39 @@ function $TestSuiteRunner(){return smalltalk.TestSuiteRunner||(typeof TestSuiteR
 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;
+var $1,$2,$4,$3,$5;
 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)})}));
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 runner=_st($TestSuiteRunner())._on_(suite);
 self._timeout_((200));
 result=_st(runner)._result();
+$ctx1.sendIdx["result"]=1;
 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());
+$1=self._selectorSetOf_(_st(result)._errors());
+$ctx2.sendIdx["selectorSetOf:"]=1;
+self._assert_equals_($1,_st($Set())._new());
+$ctx2.sendIdx["assert:equals:"]=1;
+$2=self._selectorSetOf_(_st(result)._failures());
+self._assert_equals_($2,["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
 return self._finished();
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
+}, 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);
+$4=_st(ann)._result();
+$3=_st($4).__eq_eq(result);
+if(smalltalk.assert($3)){
+$5=_st(_st(result)._runs()).__eq(_st(result)._total());
+return _st($5)._ifTrue_(assertBlock);
 };
-}, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1)})}));
+}, 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)})},
 args: [],
 source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #('fakeTimeout' 'fakeMultipleTimeoutFailing' 'fakeMultipleTimeoutPassing' 'testPass') collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: Set new.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #('fakeMultipleTimeoutFailing' 'fakeTimeout') asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [:ann |\x0a\x09\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].\x0a\x09runner run",
-messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "ifTrue:", "=", "total", "runs", "==", "announcer", "run"],
+messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"],
 referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"]
 }),
 smalltalk.SUnitAsyncTest);
@@ -514,19 +570,26 @@ fn: function (){
 var self=this;
 var x;
 return smalltalk.withContext(function($ctx1) { 
+var $1,$2;
 self["@flag"]="bad";
 self._timeout_((10));
 x=(0);
-self["@flag"]=_st(self._async_((function(){
+$1=self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 self._finished();
+$ctx2.sendIdx["finished"]=1;
 self["@flag"]="ok";
 self["@flag"];
 x=_st(x).__plus((1));
+$ctx2.sendIdx["+"]=1;
 x;
 return self._assert_equals_(x,(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
-self["@flag"]=_st(self._async_((function(){
+$ctx2.sendIdx["assert:equals:"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["async:"]=1;
+self["@flag"]=_st($1)._valueWithTimeout_((0));
+$ctx1.sendIdx["valueWithTimeout:"]=1;
+$2=self._async_((function(){
 return smalltalk.withContext(function($ctx2) {
 self._finished();
 self["@flag"]="ok";
@@ -534,7 +597,8 @@ self["@flag"];
 x=_st(x).__plus((1));
 x;
 return self._assert_equals_(x,(1));
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})})))._valueWithTimeout_((0));
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
+self["@flag"]=_st($2)._valueWithTimeout_((0));
 return self}, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},smalltalk.SUnitAsyncTest)})},
 args: [],
 source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09x := 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.",
@@ -544,4 +608,4 @@ referencedClasses: []
 smalltalk.SUnitAsyncTest);
 
 
-})(global_smalltalk,global_nil,global__st);
+});

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.