anchor.diff:  add_line(#return{}=Rt, {_,R,C}) -> Rt#return{line={{line,R},{column,C}}};
   add_line(#function{}=F, {_,R,C}) -> F#function{line={{line,R},{column,C}}};
   add_line(#global{}=G, {_,R,C}) -> G#global{line={{line,R},{column,C}}};
  -add_line(#ref{}=Rf, {_,R,C}) -> Rf#ref{line={{line,R},{column,C}}}.
  +add_line(#ref{}=Rf, {_,R,C}) -> Rf#ref{line={{line,R},{column,C}}};
  +add_line(#switch{}=S, {_,R,C}) -> S#switch{line={{line,R},{column,C}}};
  +add_line(#switch_case{}=S, {_,R,C}) -> S#switch_case{line={{line,R},{column,C}}}.
   
   remove_spaces(<<SP:8,Rest/binary>>, Pos) when ?IS_SPACE(SP) ->
       remove_spaces(Rest, add_pos(Pos,1));
  
positive.code: for_block_level({_,Row,Col}) -> {for_block,Row,Col}.
  foreach_block_level({_,Row,Col}) -> {foreach_block,Row,Col}.
  while_block_level({_,Row,Col}) -> {while_block,Row,Col}.
  
  normal_level({_,Row,Col}) -> {code,Row,Col}.
  code_block_level({_,Row,Col}) -> {code_block,Row,Col}.
  
negative.code:     code(Rest1, copy_level(Pos, Pos1), [Global|Parsed]);
  code(<<"}",Rest/binary>>, {code_block,_,_}=Pos, Parsed) ->
      {Rest, add_pos(Pos,1), lists:reverse(Parsed)};
  code(<<"}",Rest/binary>>, {switch_block,_,_}=Pos, Parsed) ->
      {Rest, add_pos(Pos,1), lists:reverse(switch_case_block(Parsed))};
  code(<<E:8,N:8,D:8,I:8,F:8,Rest/binary>>, {if_old_block,_,_}=Pos, Parsed) when
          ?OR(E,$E,$e) andalso ?OR(N,$N,$n) andalso ?OR(D,$D,$d) andalso
          ?OR(I,$I,$i) andalso ?OR(F,$F,$f) ->
  