public Line localOptimize()
	{
		for (int i = 0; i < lines.size();)
		{
			Line optimizedLine = lines.get(i).localOptimize();
			if (optimizedLine == null)
			{
				lines.remove(i);
				continue;
			}
			if (optimizedLine != lines.get(i))
				lines.set(i, optimizedLine);
			if (optimizedLine instanceof Block)
			{
				lines.remove(i);
				lines.addAll(i, ((Block) optimizedLine).lines);
			}
			if (optimizedLine instanceof BreakLine || optimizedLine instanceof ContinueLine || optimizedLine instanceof ReturnLine)
			{
				while (lines.size() > i + 1)
					lines.remove(lines.size() - 1);
				return this;
			}
			i++;
		}
		if (lines.size() == 0)
			return null;
		return this;
	}