anchor.diff:    'string)
   (deftype symbol-raw ()
     'symbol)
  +(deftype function-raw ()
  +  '-function-proto)
   (deftype object-raw ()
  -  `(or standard-class -function-proto))
  +  `(or -object-proto -function-proto))
   
   (deftype +js-value-types+ ()
     `(or undefined-raw null-raw boolean-raw number-raw symbol-raw string-raw
  
positive.code:   )
  
  (defun -is-array (arg)
    )
  
  (defun -is-callable (arg)
    )
  
negative.code:   ;; be both function and object. The function's [[Call]] method is called
    ;; with an empty argument list to retrieve the property value each time
    ;; a get access of the property is performed.
    (get :undefined :type (or undefined-raw function-raw))
    ;; If not :UNDEFINED must be a function object, the function's [[Call]]
    ;; method is called with an argument list containing assigned value,
    ;; assigns the property with this argument.
    (set :undefined :type (or undefined-raw function-raw))
    ;; If :FALSE, attempts to change [[Value]] attribute using [[Set]] failes.
    (writable :false :type boolean-raw)
    ;; If :TRUE, the property will be enumerable by a for-in.
  