anchor.diff:  %% -------------------------------------------------------------------
   get_line(Attribs) -> %% TODO: use AST primitives.
        proplists:get_value(line, Attribs).
  -                    
  +
   
   %% -------------------------------------------------------------------
   %% Icode
  
positive.code: 
  %% ICode is untyped, surely?
  ast_type(T) ->
      T.                                 
  
  ast_body({id, _, Name}) ->
      %% TODO Look up id in env
  
negative.code: ast_body({typed,_,{record,Attrs,Fields},T}) ->
      error({record_has_bad_type,Attrs,T});
  ast_body({proj,_,{typed,_,Record,{record_t,Fields}},{id,_,FieldName}}) ->
      [Index] = [I
  	       || {I,{field_t,_,_,{id,_,Name},_}} <-
  		      lists:zip(lists:seq(1,length(Fields)),Fields),
  		  Name==FieldName],
      #binop{op = '!', left = #integer{value = 32*(Index-1)}, right = ast_body(Record)};
  