docs: private byte[] bufD(final int valsz){
      int log = 0;
      while((1 << log) < valsz)++log;
      assert (1 << log) == valsz;
      final int ridsz = _len >= 65535?4:2;
      final int elmsz = ridsz + valsz;
      int off = CXDChunk.OFF;
      byte [] buf = MemoryManager.malloc1(off + _sparseLen*elmsz,true);
      for( int i=0; i<_sparseLen; i++, off += elmsz ) {
        if(ridsz == 2)
          UDP.set2(buf,off,(short)_id[i]);
        else
          UDP.set4(buf,off,_id[i]);
        final double dval = _ds == null?isNA2(i)?Double.NaN:_ls[i]*PrettyPrint.pow10(_xs[i]):_ds[i];
        switch(valsz){
          case 4:
            UDP.set4f(buf, off + ridsz, (float) dval);
            break;
          case 8:
            UDP.set8d(buf, off + ridsz, dval);
            break;
          default:
            throw H2O.unimpl();
        }
      }
      assert off==buf.length;
      return buf;
    }