anchor.diff:  %%
   %% Some consumers of the name mapper want to split out errors by type
   %%
  +-spec filter_by_error_type(atom(), [binary()]) -> [binary()].
   filter_by_error_type(ErrorType, Errors) ->
       %% ET is introduced to work around issue with shadowed variables in list comprehensions
       [ Name || {ET, Name} <- Errors, ET =:= ErrorType ].
  
positive.code: %% Context is used to thread external state information through the system
  %%
  %% Dialyzer is grouchy unless undefined is included in types.
  -spec initialize_context(binary() | undefined) -> #context{}.
  initialize_context(OrgId) ->
      initialize_context(OrgId, make_sql_callback()).
  
  -spec initialize_context(binary() | undefined , db_callback() | undefined) -> #context{}.
  initialize_context(OrgId, CallBackFun) ->
      initialize_context(OrgId, undefined, CallBackFun).
  
  %-spec initialize_context(binary(), tuple(), db_callback()) -> #context{}.
  initialize_context(OrgId, DbContext, CallBackFun) ->
      #context{org_id = OrgId,
               db_context = DbContext,
  
negative.code: -define(SCOPE_SEPARATOR, <<"::">>).
  -define(SCOPED_NAME_REGEX, "^(?:(" ?NAME "+)|(?:(" ?NAME "*)\\:\\:(" ?NAME "+)))$").
  
  -type db_callback() :: fun((any()) -> any()).
  
  -record(context, {org_id :: binary(),
                    db_context :: any() | undefined,
  