 					//replace code between brackets with an int like {0} so the resulting string can be passed to StringUtil.substitute() with compiledObject as the next parameter
 					output += input.substring(searchIndex, bracketIndex) + '{' + compiledObjects.length + '}';
 					searchIndex = escapeIndex + 1;
-					compiledObjects.push(compileTokens(tokens, false));
+					compiledObjects.push(compileTokens(tokens, true));
 				}
 			}
 			throw new Error("unreachable");

					tokens.splice(i, 2, new CompiledConstant(OPERATOR_ESCAPE + token, operators[token]));
				}
			}
			
			// next step: compile unary '#' operators (except those immediately followed by other operators)
			if (operators.hasOwnProperty('#'))

				var subArray:Array = tokens.splice(open + 1, close - open - 1);
				if (debug)
					trace("compiling tokens", leftBracket, subArray.join(' '), rightBracket);
				var separator:String = (leftBracket == '{' || statements.hasOwnProperty(token)) ? ';' : ',';
				compiledParams = compileArray(subArray, separator);

				if (leftBracket == '[') // this is either an array or a property access
