anchor.diff:      %% first and bind the value to a new variable.
       %% We must use also handle the case that Expr does not
       %% evaluate to a tuple properly.
  -    Fs = record_fields(Name, St0),
  +    Fs = record_fields(Name, Line, St0),
       {Var,St} = new_var(Line, St0),
       NLine = no_compiler_warning(Line),
       expr({block,Line,
  
positive.code:             (F) -> F
  	end, Fs).
  
  %% record_fields(RecordName, State)
  %% find_field(FieldName, Fields)
  
  record_fields(R, St) -> maps:get(R, St#exprec.records).
  
  find_field(F, [{record_field,_,{atom,_,F},Val} | _]) -> {ok,Val};
  find_field(F, [_ | Fs]) -> find_field(F, Fs);
  find_field(_, []) -> error.
  
  %% field_names(RecFields) -> [Name].
  %%  Return a list of the field names structures.
  
negative.code:     {V,St2} = pattern(V0, St1),
      {{map_field_exact,Line,K,V},St2};
  pattern({record_index,Line,Name,Field}, St) ->
      {index_expr(Line, Field, Name, record_fields(Name, Line, St)),St};
  pattern({record,Line0,Name,Pfs}, St0) ->
      Fs = record_fields(Name, Line0, St0),
      {TMs,St1} = pattern_list(pattern_fields(Fs, Pfs), St0),
      Line = mark_record(Line0, St1),
      {{tuple,Line,[{atom,Line0,Name} | TMs]},St1};
  