anchor.diff:  -spec solve_unknown_record_types([field_constraint()]) -> true | [tuple()].
   solve_unknown_record_types(Unknown) ->
       UVars = lists:usort([UVar || #field_constraint{record_t = UVar = {uvar, _, _}} <- Unknown]),
  -    Solutions = [solve_for_uvar(UVar, [Field || #field_constraint{record_t = U, field = Field} <- Unknown,
  -                                                U == UVar])
  +    Solutions = [solve_for_uvar(UVar, [{Kind, Field}
  +                                        || #field_constraint{record_t = U, field = Field, kind = Kind} <- Unknown,
  +                                           U == UVar])
                    || UVar <- UVars],
       case lists:member(true, Solutions) of
           true  -> true;
  
positive.code:     RecId.
  
  solve_for_uvar(UVar = {uvar, Attrs, _}, Fields) ->
      %% Does this set of fields uniquely identify a record type?
      FieldNames = [ Name || {id, _, Name} <- Fields ],
      UniqueFields = lists:usort(FieldNames),
      Candidates = [record_type_name(RecType) || {_, #field_info{record_t = RecType}} <- lookup_record_field(hd(FieldNames))],
      TypesAndFields = [case lookup_type(RecName) of
  
negative.code:                              C
                       end;
                  false ->
                      type_error({not_a_record_type, RecId, When}),
                      not_solved
               end
           end
           || C <- DerefConstraints,
  