anchor.diff:  %% NOTE: it's impossible to automatically update schema definitions added by
   %%       add_schema/2, the only way to update them is to use add_schema/2
   %%       again with the new definition.
  --spec update_schema( Path          :: string()
  -                   , ParseFun      :: fun((binary()) -> json_term())
  -                   , ValidationFun :: fun((any()) -> boolean())
  -                   , MakeKeyFun    :: fun((json_term()) -> any())
  -                   ) -> jesse_database:update_result().
  -update_schema(Path, ParseFun, ValidationFun, MakeKeyFun) ->
  +-spec load_schemas( Path          :: string()
  +                  , ParseFun      :: fun((binary()) -> json_term())
  +                  , ValidationFun :: fun((any()) -> boolean())
  +                  , MakeKeyFun    :: fun((json_term()) -> any())
  +                  ) -> jesse_database:update_result().
  +load_schemas(Path, ParseFun, ValidationFun, MakeKeyFun) ->
     jesse_database:update(Path, ParseFun, ValidationFun, MakeKeyFun).
   
   %% @doc Validates json `Data' against a schema with the same key as `Schema'
  
positive.code: %% @doc Equivalent to `add_schema/2', but `Schema' is a binary string, and
  %% the third agument is a parse function to convert the binary string to
  %% a supported internal representation of json.
  add_schema(Key, Schema, ParseFun) ->
    case try_parse(ParseFun, Schema) of
      {parse_error, _} = SError -> {error, {schema_error, SError}};
  
negative.code:               , Data     :: binary()
                , ParseFun :: fun((binary()) -> json_term())
                ) -> {ok, json_term()}
                   | error().
  validate(Schema, Data, ParseFun) ->
    case try_parse(ParseFun, Data) of
      {parse_error, _} = DError -> {error, {data_error, DError}};
  