_valueBytes = new byte[endPos - buffer.position()]; buffer.get(_valueBytes);
int numPrefixBytes = ((valuePrefix == null) ? 0 : (valuePrefix.length - 1)); int dataOffset = 0; _valueBytes = new byte[(endPos - buffer.position()) + numPrefixBytes]; if(numPrefixBytes > 0) { System.arraycopy(valuePrefix, 1, _valueBytes, 0, numPrefixBytes); dataOffset += numPrefixBytes; } buffer.get(_valueBytes, dataOffset, (_valueBytes.length - dataOffset));
      protected EntryColumn initFromBuffer(ByteBuffer buffer,                                           int entryIndex,                                           byte flags)        throws IOException      {        byte flag = buffer.get();        // FIXME, reverse is 0x80, reverse null is 0xFF        // end flag is FE, post extra bytes is FF 00        // extra bytes are inverted, so are normal bytes        if (flag != (byte) 0) {          int endPos = buffer.position();          while(buffer.get(endPos) != (byte) 1) {            ++endPos;          }          // read index bytes          _valueBytes = new byte[endPos - buffer.position()];          buffer.get(_valueBytes);          // read end codes byte          buffer.get();                    //Forward past 0x00 (in some cases, there is more data here, which          //we don't currently understand)          byte endByte = buffer.get();          if(endByte != (byte)0x00) {            endPos = buffer.position() - 1;            buffer.position(endPos);            while(buffer.get(endPos) != (byte)0x00) {              ++endPos;            }            _extraBytes = new byte[endPos - buffer.position()];            buffer.get(_extraBytes);            // re-get endByte            buffer.get();          }                  }        return this;      }