anchor.diff:  
   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) ->
  
positive.code:     code(Rest1, copy_level(Pos,Pos1), NewParsed);
  code(<<D:8,O:8,SP:8,Rest/binary>>, Pos, Parsed)
          when ?OR(D,$d,$D) andalso ?OR(O,$o,$O) andalso
          (?IS_SPACE(SP) orelse SP =:= ${) ->
      {Rest0, Pos0, [DoWhile]} = st_do_while(Rest, add_pos(Pos,3), []),
      code(Rest0, copy_level(Pos,Pos0), [DoWhile|Parsed]);
  code(<<F:8,O:8,R:8,E:8,A:8,C:8,H:8,SP:8,Rest/binary>>, Pos, Parsed)
  
negative.code:     NewPos = add_pos(Pos,1),
      {<<")",Rest1/binary>>, Pos1, Conditions} =
          expression(Rest, arg_level(NewPos), []),
      {Rest2, Pos2, CodeBlock} = code_block(Rest1, while_block_level(Pos1), []),
      While = add_line(#while{
          type=pre,
          conditions=Conditions,
  