anchor.diff:           'seq?'/1,
            'map?'/1, 'list?'/1, 'vector?'/1, 'set?'/1,
            'symbol?'/1, 'keyword?'/1, 'number?'/1, 'char?'/1,
  -         'string?'/1, 'nil?'/1, 'boolean?'/1, 'regex?'/1,
  +         'string?'/1, 'nil?'/1, 'boolean?'/1, 'regex?'/1, 'var?'/1,
            deref/1,
            meta/1, with_meta/2, 'meta?'/1,
            get/2, get/3,
  +         assoc/3,
            merge/1,
            'contains?'/2,
            boolean/1,
  
positive.code: -spec get(any(), any(), any()) -> any().
  get(undefined, _Key, _NotFound) -> undefined;
  get(X, Key, NotFound) -> 'clojerl.ILookup':get(X, Key, NotFound).
  
  -spec merge([any()]) -> any().
  merge([]) ->
  
negative.code: -spec 'regex?'(any()) -> boolean().
  'regex?'(X) -> type(X) == re_pattern.
  
  -spec 'var?'(any()) -> boolean().
  'var?'(X) ->
    type(X) == 'clojerl.Var'.
  
  -spec deref(any()) -> any().
  deref(X) ->
    'clojerl.IDeref':deref(X).
  