anchor.diff:  
   %% @doc Returns the value of a field from a sumo_doc.
   -spec get_field(sumo:field_name(), doc()) -> sumo:field_value().
  -get_field(Name, #sumo_doc{fields=Fields}) ->
  -  proplists:get_value(Name, Fields).
  +get_field(Name, Doc) ->
  +  proplists:get_value(Name, doc_fields(Doc)).
   
   %% @doc Sets a value in an sumo_doc.
   -spec set_field(sumo:field_name(), sumo:field_value(), doc()) -> doc().
  -set_field(FieldName, Value, #sumo_doc{fields=Fields, name=Name}) ->
  +set_field(FieldName, Value, _Doc = #{fields := Fields, name := Name}) ->
     new_doc(Name, lists:keystore(FieldName, 1, Fields, {FieldName, Value})).
   
   %% @doc Returns name of field marked as ID for the given schema or doc name.
  
positive.code: 
  -export([report_overrun/1]).
  
  -opaque schema()  :: #sumo_schema{}.
  -opaque doc()     :: #sumo_doc{}.
  -opaque field()   :: #sumo_field{}.
  
  -export_type([schema/0, doc/0, field/0]).
  
  
negative.code: get_repo(DocName) when is_atom(DocName) ->
    proplists:get_value(DocName, get_docs());
  
  get_repo(_Doc = #{name := Name}) ->
    get_repo(Name).
  
  %% @doc Returns the schema for a given DocName.
  