code: void readString(StringBuilder sb)
      throws IOException
    {
      while (true) {
        int ch = read();
        int len;
      
        switch (ch) {
        default:
          _peek = ch;
          return;
        
        case 0x00: case 0x01: case 0x02: case 0x03:
        case 0x04: case 0x05: case 0x06: case 0x07:
        case 0x08: case 0x09: case 0x0a: case 0x0b:
        case 0x0c: case 0x0d: case 0x0e: case 0x0f:
  
        case 0x10: case 0x11: case 0x12: case 0x13:
        case 0x14: case 0x15: case 0x16: case 0x17:
        case 0x18: case 0x19: case 0x1a: case 0x1b:
        case 0x1c: case 0x1d: case 0x1e: case 0x1f:
          len = ch - 0x00;
          readString(sb, len);
          return;
        
        case 0x30: case 0x31: case 0x32: case 0x33:
          len = ((ch - 0x30) << 8) + read();
          readString(sb, len);
          return;
          
        case 'S':
          len = readShort();
          readString(sb, len);
          return;
          
        case 'R':
          len = readShort();
          readString(sb, len);
          break;
        }
      }
    }
docs: Reads the Hessian value as an object.