

function a() {}

function foo()
{
	for each(item.name in list)
	{
		// do nothing
	}
	
	for(;;) {}

	
	try
	{
		// test
	}
	catch(e if e instanceof TypeError)
	{
		
	}
	finally
	{
		a = 100;
	}
	
	do
	{
		
	}
	while (iterator.next() != null);
	
	
//	for (item in list)
//	{
//		// do nothing
//	}

	if (a > b)
	{
		
	}
	else
	{
		a = b;
	}
	
	while (iterator.next() != null)
	{
		// do nothing
	}
	
	with(obj)
	{
		// do nothing
	}
}