@Override
  public void addAll(ObjectPartList other) {
    if (logger.isTraceEnabled(LogMarker.VERSIONED_OBJECT_LIST_VERBOSE)) {
      logger.trace(LogMarker.VERSIONED_OBJECT_LIST_VERBOSE, "VOL.addAll(other={}; this={}", other,
          this);
    }
    int myTypeArrayLength = hasKeys ? keys.size() : objects.size();
    int otherTypeArrayLength = other.hasKeys ? other.keys.size() : other.objects.size();
    super.addAll(other);
    VersionedObjectList vother = (VersionedObjectList) other;
    regionIsVersioned |= vother.regionIsVersioned;
    versionTags.addAll(vother.versionTags);
    if (myTypeArrayLength > 0 || otherTypeArrayLength > 0) {
      int newSize = myTypeArrayLength + otherTypeArrayLength;
      if (objectTypeArray != null) {
        newSize = Math.max(newSize, objectTypeArray.length);
        if (objectTypeArray.length < newSize) { // need more room
          byte[] temp = objectTypeArray;
          objectTypeArray = new byte[newSize];
          System.arraycopy(temp, 0, objectTypeArray, 0, temp.length);
        }
      } else {
        objectTypeArray = new byte[newSize];
      }
      if (other.objectTypeArray != null) {
        System.arraycopy(other.objectTypeArray, 0, objectTypeArray, myTypeArrayLength,
            otherTypeArrayLength);
      }
    }
  }
Add a part for a destroyed or missing entry. If the version tag is not null this represents a
tombstone.
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/VersionedObjectList.java