 			operators["?:"] = constants['iif'];
 			// multiple commands
 			operators[','] = function(...args):* { return args[args.length - 1]; };
+			operators['{}'] = operators[',']; // equivalent functionality but must be remembered as a different operator
 			//assignment operators -- first param becomes the parent, and the two remaining args are propertyName and value
 			assignmentOperators['=']    = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] =    a[i + 1]; };
 			assignmentOperators['+=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] +=   a[i + 1]; };

					trace("compiling tokens (", subArray.join(' '), ")");
				compiledParams = compileArray(subArray);

				if (tokens[open] == '[') // this is either an array or a property access
				{
					if (compiledToken)
					{

					continue;
				}
				
				if (leftBracket == '(' && compiledToken) // if there is a compiled token to the left, this is a function call
				{
					if (debug)
						trace("compiling function call", decompileObject(compiledToken));
					
					// the token to the left is the method
					// replace the function token, '(', and ')' tokens with a compiled function call
					tokens.splice(open - 1, 3, compileFunctionCall(compiledToken, compiledParams));
					continue;
				}
				else // '{' or '(' group that does not correspond to a function call
				{
					if (compiledParams.length == 0)
						throw new Error("Missing expression inside '" + leftBracket + rightBracket + "'");
					
					var op:String = leftBracket == '(' ? ',' : '{}';
					
					if (compiledParams.length == 1) // single command
						tokens.splice(open, 2, compiledParams[0]);
					else // multiple commands
						tokens.splice(open, 2, compileOperator(op, compiledParams));
					continue;
				}
				
				break;
