 					{
 						// if 'for' or 'for each' has only one param, it must be the 'in' operator
 						var call:CompiledFunctionCall = params.compiledParams[0] as CompiledFunctionCall; // the first statement param
-						if (!call || call.evaluatedMethod != operators['in'])
+						if (!call || call.evaluatedMethod != operators['in'] || call.compiledParams.length != 2)
 							throwInvalidSyntax(statement);
+						
+						// check the first parameter of the 'in' operator
+						call = call.compiledParams[0] as CompiledFunctionCall;
+						
+						if (call.evaluatedMethod == operators[','] && call.compiledParams.length == 2)
+						{
+							var _var:CompiledFunctionCall = call.compiledParams[0] as CompiledFunctionCall;
+							if (!_var || _var.evaluatedMethod != operators[ST_VAR])
+								throwInvalidSyntax(statement);
+							call = call.compiledParams[1]; // should be the variable
+						}
 							
 						// the 'in' operator must have a variable or property reference as its first parameter
-						call = call.compiledParams[0] as CompiledFunctionCall; // the 'in' operator
 						if (!(call.compiledParams == null || call.evaluatedMethod == operators['.'])) // not a variable and not a property
 							throwInvalidSyntax(statement);
 					}

				{
					token = compileOperator(ST_VAR, [new CompiledConstant(null, varNames)]);
					call = params[0];
					if (call.compiledParams.length > 0)
					{
						call.compiledParams.unshift(token);
						call.evaluateConstants();

						
						// implemented as "for (each|in)(\in(list), item=undefined, stmt)
						var _in:CompiledFunctionCall = forParams.compiledParams[0];
						var _item:ICompiledObject;
						var _var:CompiledFunctionCall = _in.compiledParams[0] as CompiledFunctionCall;
						if (_var.evaluatedMethod == operators[','] && _var.compiledParams.length == 2) // represented as (var x, x)
						{
							_var.compiledParams[1] = compileVariableAssignment(_var.compiledParams[1], '=', newUndefinedConstant());
						}
						else
						{
							_var = compileVariableAssignment(_in.compiledParams[0], '=', newUndefinedConstant());
						}
						var _list:ICompiledObject = compileOperator('in', [_in.compiledParams[1]]);
						tokens[startIndex] = compileOperator(stmt, [_list, _var, params[1]]);
					}
				}
				else if (_jumpStatements.indexOf(stmt) >= 0)
