
         Primary data types:

      xxxxxxxxxxxxxxxxxxxxxxxxxxxxx010 Number
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxx100 Symbol
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxx000 Cell


         Number
         |
         V
      +-----+-----+     +-----+-----+     +-----+-----+
      |'DIG'|  ---+---> |'DIG'|  ---+---> |'DIG'|  /  |
      +-----+-----+     +-----+-----+     +-----+-----+


      Cell
      |
      V
      +-----+-----+
      | CAR | CDR |
      +-----+-----+


            Symbol
            |
            V
      +-----+-----+
      |  |  | VAL |
      +--+--+-----+
         | tail
         |
         V                                                      name
         +-----+-----+     +-----+-----+     +-----+-----+     +-----+-----+
         |  |  |  ---+---> | KEY |  ---+---> |  |  |  ---+---> |'cba'|  /  |
         +--+--+-----+     +-----+-----+     +--+--+-----+     +-----+-----+
            |                                   |
            V                                   V
            +-----+-----+                       +-----+-----+
            | VAL | KEY |                       | VAL | KEY |
            +-----+-----+                       +-----+-----+


      NIL:  /
            |
            V
      +-----+-----+-----+-----+
      |  /  |  /  |  /  |  /  |
      +-----+--+--+-----+-----+



         External Symbols:

                  +-----------+---+-----------+---+----+
      Block 0:    |   Free    | 0 |   Next    | 0 | << |
                  +-----------+---+-----------+---+----+
                  0               BLK                  2*Blk+1


                  +-----------+---+
      Free:       |   Link    | 0 |
                  +-----------+---+
                  0


                  +-----------+---+----
      ID-Block:   |   Link    | 1 | Data
                  +-----------+---+----
                  0              BLK


                  +-----------+---+----
      EXT-Block:  |   Link    | n | Data
                  +-----------+---+----
                  0              BLK



      Assumptions:

   - 8 bits per byte
   - word: sizeof(void*) == sizeof(unsigned long)
   - word2: sizeof(unsigned long long) == 2 * sizeof(unsigned long)
   - gcc
      Functions aligned to 4-byte boundaries
      Zero- or variable-length arrays
      Conditionals with Omitted Operands
      Unused argument attributes
      Noreturn attributes
