|  | @@ -51,6 +51,8 @@ smalltalk.parser = (function(){
 | 
	
		
			
				|  |  |          "float": parse_float,
 | 
	
		
			
				|  |  |          "integer": parse_integer,
 | 
	
		
			
				|  |  |          "literalArray": parse_literalArray,
 | 
	
		
			
				|  |  | +        "bareLiteralArray": parse_bareLiteralArray,
 | 
	
		
			
				|  |  | +        "literalArrayRest": parse_literalArrayRest,
 | 
	
		
			
				|  |  |          "dynamicArray": parse_dynamicArray,
 | 
	
		
			
				|  |  |          "dynamicDictionary": parse_dynamicDictionary,
 | 
	
		
			
				|  |  |          "pseudoVariable": parse_pseudoVariable,
 | 
	
	
		
			
				|  | @@ -1233,8 +1235,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);
 | 
	
	
		
			
				|  | @@ -1248,72 +1250,160 @@ smalltalk.parser = (function(){
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (result0 !== null) {
 | 
	
		
			
				|  |  | -          result1 = parse_ws();
 | 
	
		
			
				|  |  | +          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_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) {
 | 
	
		
			
				|  |  | +            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) {
 | 
	
		
			
				|  |  | +            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_parseTimeLiteral();
 | 
	
		
			
				|  |  | -            if (result3 !== null) {
 | 
	
		
			
				|  |  | -              result4 = parse_ws();
 | 
	
		
			
				|  |  | -              if (result4 !== null) {
 | 
	
		
			
				|  |  | -                result3 = [result3, result4];
 | 
	
		
			
				|  |  | +            result2 = parse_parseTimeLiteral();
 | 
	
		
			
				|  |  | +            if (result2 === null) {
 | 
	
		
			
				|  |  | +              result2 = parse_bareLiteralArray();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            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_parseTimeLiteral();
 | 
	
		
			
				|  |  | -              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);
 | 
	
	
		
			
				|  | @@ -1334,7 +1424,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);
 |