@Override
 protected Object readObject(ObjectInput in) throws IOException, ClassNotFoundException {
   int code = in.readByte();
   if (code == DataTypeManagerService.DefaultDataTypes.BOOLEAN.ordinal()) {
     if (in.readByte() == (byte) 0) {
       return Boolean.FALSE;
     }
     return Boolean.TRUE;
   }
   if (code != DataTypeManagerService.DefaultDataTypes.OBJECT.ordinal()) {
     DefaultDataTypes dataType =
         DataTypeManagerService.DefaultDataTypes.valueOf(getTeiidVersion(), code);
     ColumnSerializer s = getSerializer(dataType.getId(), (byte) 1);
     return s.readObject(in);
   }
   return super.readObject(in);
 }
 @Override
 protected void writeObject(ObjectOutput out, Object obj) throws IOException {
   DefaultDataTypes dataType = getDataTypeManager().getDataType(obj.getClass());
   int code = dataType.ordinal();
   out.writeByte((byte) code);
   if (code == DataTypeManagerService.DefaultDataTypes.BOOLEAN.ordinal()) {
     if (Boolean.TRUE.equals(obj)) {
       out.write((byte) 1);
     } else {
       out.write((byte) 0);
     }
   } else if (code <= highestKnownCode
       && code != DataTypeManagerService.DefaultDataTypes.OBJECT.ordinal()) {
     dataType = DataTypeManagerService.DefaultDataTypes.valueOf(getTeiidVersion(), code);
     ColumnSerializer s = getSerializer(dataType.getId(), (byte) 1);
     s.writeObject(out, obj);
   } else {
     super.writeObject(out, obj);
   }
 }