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