docs: public boolean isEMPTYlist(int accessor) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "isEMPTYlist", accessor);
  
      boolean isEMPTY = false;
  
      // We are only interested in 'real' fields, not boxed variants etc
      if (accessor < cacheSize) {
        checkIndex(accessor);
  
        synchronized (getMessageLockArtefact()) {
  
          // We can only have an EMPTY singleton for the field if it is in the cache,
          // as anything which is (still) assembled can't be an EMPTY.
          // (Also, a false negative is harmless, whereas a false positive can lead to errors.)
          if (cache != null) {
            Object val = cache[accessor];
            // If the value is in the cache then see if it is an EMPTY singleton
            if (  (val == JSVaryingListImpl.EMPTY_UNBOXED_VARYINGLIST)
               || (val == JSFixedListImpl.EMPTY_FIXEDLIST)
               ) {
              isEMPTY = true;
            }
          }
        }
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "isEMPTYlist",  isEMPTY);
      return isEMPTY;
    }