anchor.diff:      negate and throw
   ;
   
  -: isvoid ( caddr u -- ) \ any char remains, throw -13
  -    nip 0<> d# 13 -throw
  -;
  -
  -: consume1 ( caddr u ch -- caddr' u' f )
  -    >r over c@ r> =
  -    over 0<> and
  -    dup>r d# 1 and /string r>
  -;
  -
  -: ((doubleAlso))
  -    h# 0. 2swap
  -    [char] - consume1 >r
  -    >number
  -    [char] . consume1 if
  -        isvoid              \ double number
  -        r> if dnegate then
  -        d# 2 exit
  -    then
  -                            \ single number
  -    isvoid drop
  -    r> if negate then
  -    d# 1
  -;
  -
  -: base((doubleAlso))
  -    base @ >r base !
  -    ((doubleAlso))
  -    r> base !
  -;
  -
  -: is'c' ( caddr u -- f )
  -    d# 3 =
  -    over c@ [char] ' = and
  -    swap 1+ 1+ c@ [char] ' = and
  -;
  -
  -: (doubleAlso)
  -    [char] $ consume1 if
  -        d# 16 base((doubleAlso)) exit
  -    then
  -    [char] # consume1 if
  -        d# 10 base((doubleAlso)) exit
  -    then
  -    [char] % consume1 if
  -        d# 2 base((doubleAlso)) exit
  -    then
  -    2dup is'c' if
  -        drop 1+ c@ d# 1 exit
  -    then
  -    ((doubleAlso))
  -;
  -
  -: doubleAlso
  -    (doubleAlso) drop
  -;
  -
  +header-imm 2literal
  +: 2literal
  +    swap DOUBLE
   header-imm literal
   : tliteral
       dup 0< if
  
positive.code: 
  : doubleAlso,
      (doubleAlso)
      1- if
          swap tliteral
      then
      tliteral
  ;
  
  : dispatch
  
negative.code: 
  header d2/
  : d2/
      >r d# 1 rshift r@
      d# 31 lshift
      or r> 2/
  ;
  