code: byte []readBinary()
      throws IOException
    {
      TempOutputStream tos = new TempOutputStream();
      
      while (true) {
        int ch = read();
        int len;
      
        switch (ch) {
        default:
          _peek = ch;
          return tos.toByteArray();
        
        case 0x20: case 0x21: case 0x22: case 0x23:
        case 0x24: case 0x25: case 0x26: case 0x27:
        case 0x28: case 0x29: case 0x2a: case 0x2b:
        case 0x2c: case 0x2d: case 0x2e: case 0x2f:
          len = ch - 0x20;
          readBinary(tos, len);
          return tos.toByteArray();
        
        case 0x34: case 0x35: case 0x36: case 0x37:
          len = ((ch - 0x34) << 8) + read();
          readBinary(tos, len);
          return tos.toByteArray();
          
        case 'B':
          len = readShort();
          readBinary(tos, len);
          return tos.toByteArray();
          
        case 'A':
          len = readShort();
          readBinary(tos, len);
          break;
        }
      }
    }
docs: Reads the Hessian value as an object.