docs: @Override
      public int getModelID(int accessor) throws JMFUninitializedAccessException, JMFSchemaViolationException {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              JmfTr.entry(this, tc, "getModelID", new Object[] { Integer.valueOf(accessor) });
          int ans;
          checkIndex(accessor);
  
          synchronized (getMessageLockArtefact()) {
              checkDynamic(accessor);
  
              if (cache[accessor] != null) {
                  ans = ((JMFPart) cache[accessor]).getModelID();
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      JmfTr.exit(this, tc, "getModelID", Integer.valueOf(ans));
                  return ans;
              }
  
              if (contents == null) {
                  JMFUninitializedAccessException e = new JMFUninitializedAccessException("Dynamic value at accessor " + accessor + " is missing");
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      JmfTr.exit(this, tc, "getModelID", e);
                  throw e;
              }
  
              // Get offset of the dynamic field
              int realOffset = getAbsoluteOffset(accessor);
  
              // Read model Id skipping over length
              ans = ArrayUtil.readInt(contents, realOffset + 4);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              JmfTr.exit(this, tc, "getModelID", Integer.valueOf(ans));
          return ans;
      }