docs: void reallocated(byte[] newContents, int newOffset) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) JmfTr.entry(this, tc, "reallocated", new Object[]{newContents, Integer.valueOf(newOffset)});
      if (contents != null) {
        contents = newContents;
        offset = newOffset + 8;
        sharedContents = false;
  
        // Now we must run through the cache any pass the changes down to any depenedent
        // JSMessageData parts we find.
        // d282049: respect implicit state invariant implied by JSMessageData#unassemble
        // that an unassembled List can have no assembled contents
        if (cache != null) {
          for (int i = 0; i < cache.length; i++) {
            try {
              Object entry = cache[i];
              if (entry != null && entry instanceof JSMessageData) {
                ((JSMessageData)entry).reallocated(newContents, getAbsoluteOffset(i));
              }
            } catch (JMFUninitializedAccessException e) {
              // No FFDC code needed - this cannot occur as we know the JSMessageData part is present
            }
          }
        }
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) JmfTr.exit(this, tc, "reallocated");
    }