code: @Override
    public void scan(InH3Amp in, PathH3Amp path, Object[] values)
    {
      int ch = read();
      
      switch (ch) {
      case 0xd0:
        readDefinition(in);
        scan(in, path, values);
        return;
        
      case 0xd1: case 0xd2: case 0xd3: 
      case 0xd4: case 0xd5: case 0xd6: case 0xd7:
      case 0xd8: case 0xd9: case 0xda: case 0xdb:
      case 0xdc: case 0xdd: case 0xde: case 0xdf:
      {
        int id = ch - 0xd0;
  
        in.serializer(id).scan(this, path, in, values);
        return;
      }
        
      case 0xe0: case 0xe1: case 0xe2: case 0xe3: 
      case 0xe4: case 0xe5: case 0xe6: case 0xe7:
      case 0xe8: case 0xe9: case 0xea: case 0xeb:
      case 0xec: case 0xed: case 0xee: case 0xef:
      {
        int id = (int) readLong(ch - 0xe0, 4);
        
        in.serializer(id).scan(this, path, in, values);
        return;
      }
        
      default:
        throw error(L.l("Unexpected opcode 0x{0} while scanning for {1}",
                        Integer.toHexString(ch), path));
      }
    }
docs: Scan for a query.