anchor.diff:      NewPos = add_pos(Pos,1),
       {<<")",Rest1/binary>>, Pos1, Conditions} =
           expression(Rest, arg_level(NewPos), []),
  -    {Rest2, Pos2, CodeBlock} = code_block(Rest1, Pos1, []),
  +    {Rest2, Pos2, CodeBlock} = code_block(Rest1, while_block_level(Pos1), []),
       While = add_line(#while{
           type=pre,
           conditions=Conditions,
  
positive.code:     NewPos = add_pos(Pos,1),
      {<<")",Rest1/binary>>, Pos1, Conditions} =
          expression(Rest, arg_level(NewPos), []),
      {Rest2, Pos2, CodeBlock} = code_block(Rest1, Pos1, []),
      If = add_line(#if_block{
          conditions=Conditions,
          true_block=CodeBlock
  
negative.code: 
  code_block(<<"{",Rest/binary>>, Pos, Parsed) ->
      code(Rest, code_block_level(add_pos(Pos,1)), Parsed);
  code_block(<<":",Rest/binary>>, {if_block,_,_}=Pos, Parsed) ->
      code(Rest, if_old_block_level(add_pos(Pos,1)), Parsed);
  code_block(<<":",Rest/binary>>, {foreach_block,_,_}=Pos, Parsed) ->
      code(Rest, foreach_old_block_level(add_pos(Pos,1)), Parsed);
  code_block(<<":",Rest/binary>>, {for_block,_,_}=Pos, Parsed) ->
      code(Rest, for_old_block_level(add_pos(Pos,1)), Parsed);
  code_block(<<":",Rest/binary>>, {while_block,_,_}=Pos, Parsed) ->
      code(Rest, while_old_block_level(add_pos(Pos,1)), Parsed);
  code_block(<<SP:8,Rest/binary>>, Pos, Parsed) when ?IS_SPACE(SP) ->
      code_block(Rest, add_pos(Pos,1), Parsed);
  code_block(<<SP:8,Rest/binary>>, Pos, Parsed) when ?IS_NEWLINE(SP) ->
  