docs: @Override
      public String[] introspectSelf() {
          String[] debugInfo = new String[6];
          debugInfo[0] = "JSMessageData:";
  
          // Include the basic toString info so we know who we are
          StringBuilder sb = new StringBuilder("Self: ");
          sb.append(toString());
          debugInfo[1] = new String(sb);
  
          // Include the cache information
          sb.setLength(0);
          sb.append("Cache: size=");
          sb.append(cacheSize);
          sb.append(" cache=");
          sb.append(cache); // Yes we really do just want [Ljava.lang.Object;@xxxxxx here
          debugInfo[2] = new String(sb);
  
          // Include the cache information
          sb.setLength(0);
          sb.append("Contents: ");
          if (contents == null) {
              sb.append("null");
          }
          else {
              sb.append("size=");
              sb.append(contents.length);
              sb.append(" contents=");
              sb.append(contents); // Yes we really do just want [B@xxxxxxx here
          }
          debugInfo[3] = new String(sb);
  
          // Include sharing information
          sb.setLength(0);
          sb.append("Sharing: sharedCache=");
          sb.append(sharedCache);
          sb.append(" sharedContents=");
          sb.append(sharedContents);
          debugInfo[4] = new String(sb);
  
          // Include all the stuff abot how it fits in to the heirarchy
          sb.setLength(0);
          sb.append("Context: parentMessage=");
          sb.append(parentMessage);
          sb.append(" containingMessage=");
          sb.append(containingMessage);
          sb.append(" master=");
          if (master == this) {
              sb.append("self");
          }
          else {
              sb.append(master);
          }
          sb.append(" compatibilityWrapperOrSelf=");
          if (compatibilityWrapperOrSelf == this) {
              sb.append("self");
          }
          else {
              sb.append(compatibilityWrapperOrSelf);
          }
          debugInfo[5] = new String(sb);
  
          // Now return it all
          return debugInfo;
      }