docs: public static void record_IOclose( AutoBuffer b, int flavor ) {
      H2ONode h2o = b._h2o==null ? H2O.SELF : b._h2o;
      // First long word going out has sender-port and a 'bad' control packet
      long b0 = UDP.udp.i_o.ordinal(); // Special flag to indicate io-record and not a rpc-record
      b0 |= H2O.SELF._key.udp_port()<<8;
      b0 |= flavor<<24;           // I/O flavor; one of the Value.persist backends
      long iotime = b._time_start_ms > 0 ? (b._time_close_ms - b._time_start_ms) : 0;
      b0 |= iotime<<32;           // msec from start-to-finish, including non-i/o overheads
      long b8 = b._size;          // byte's transfered in this I/O
      long ns = b._time_io_ns;    // nano's blocked doing I/O
      record2(h2o,ns,true,b.readMode()?1:0,0,b0,b8);
    }