@Override
  public void fromData(DataInput in,
      DeserializationContext context) throws IOException, ClassNotFoundException {
    hasKeys = in.readBoolean();
    if (hasKeys) {
      keys = new ArrayList<>();
    }
    int numObjects = in.readInt();
    if (numObjects > 0) {
      for (int index = 0; index < numObjects; ++index) {
        if (hasKeys) {
          Object key = context.getDeserializer().readObject(in);
          keys.add(key);
        }
        boolean isException = in.readBoolean();
        Object value;
        if (isException) {
          byte[] exBytes = DataSerializer.readByteArray(in);
          value = CacheServerHelper.deserialize(exBytes);
          // ignore the exception string meant for native clients
          DataSerializer.readString(in);
        } else {
          value = context.getDeserializer().readObject(in);
        }
        objects.add(value);
      }
    }
  }
unprotected access to the objects collection, which may be null
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ObjectPartList.java