 						
 						// implemented as "for (each|in)(\in(list), item=undefined, stmt)
 						var _in:CompiledFunctionCall = forParams.compiledParams[0];
-						var _item:ICompiledObject = compileVariableAssignment(_in.compiledParams[0], '=', newUndefinedConstant());
+						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, _item, params[1]]);
+						tokens[startIndex] = compileOperator(stmt, [_list, _var, params[1]]);
 					}
 				}
 				else if (_jumpStatements.indexOf(stmt) >= 0)

						if (!call.compiledParams || call.evaluatedMethod == operators['='])
							tokens[startIndex + iPattern] = token = call = compileOperator(',', [call]);
						
						if (call.evaluatedMethod != operators[','] || call.compiledParams.length == 0)
							throwInvalidSyntax(stmt);
						

							else
								throwInvalidSyntax(stmt);
						}
						call.evaluateConstants();
					}
				}
				
