@Override
 public byte[] readStringBytes(TCDataInput input) throws IOException {
   int len = input.readInt();
   byte[] bytes = new byte[len];
   input.readFully(bytes);
   return bytes;
 }
 // private void writeCharArray(char[] chars, TCDataOutput output) {
 // output.writeInt(chars.length);
 // for (int i = 0, n = chars.length; i < n; i++) {
 // output.writeChar(chars[i]);
 // }
 // }
 protected byte[] readByteArray(TCDataInput input) throws IOException {
   final int length = input.readInt();
   if (length >= BYTE_WARN) {
     logger.warn("Attempting to allocate a large byte array of size: " + length);
   }
   final byte[] array = new byte[length];
   input.readFully(array);
   return array;
 }