docs: synchronized Object removeValueGuts(String pName) {
          //create local variable - JIT performance improvement
          final boolean isTraceOn = com.ibm.websphere.ras.TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINER)) {
              LoggingUtil.SESSION_LOGGER_WAS.entering(methodClassName, methodNames[REMOVE_VALUE_GUTS], "session " + getId() + " prop id " + pName);
          }
  
          Object tmp = getValueGuts(pName, false);
          // if object does not acutally exist, just return
          if (tmp == null) {
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINER)) {
                  LoggingUtil.SESSION_LOGGER_WAS.exiting(methodClassName, methodNames[REMOVE_VALUE_GUTS], "prop id " + pName + " not in " + getId());
              }
              return null;
          }
  
          if (appDataRemovals == null) {
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[REMOVE_VALUE_GUTS], "init appDataRemovals " + getId());
              }
              appDataRemovals = new Hashtable();
          }
  
          if (appDataTablesPerThread) {
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[REMOVE_VALUE_GUTS], "appDataTablesPerThread");
              }
              Thread t = Thread.currentThread();
              Hashtable sht = (Hashtable) appDataRemovals.get(t);
              if (sht == null) {
                  sht = new Hashtable();
                  appDataRemovals.put(t, sht);
              }
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[REMOVE_VALUE_GUTS], "remove value for " + getId() + " and prop " + pName
                                                                                                                   + " via thread " + t);
              }
              sht.put(pName, pName);
          } else { //appDataTablesPerSession
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[REMOVE_VALUE_GUTS], "appDataTablesPerSession");
              }
              appDataRemovals.put(pName, pName);
          }
  
          Object ret = (mNonswappableData == null) ? null : mNonswappableData.remove(pName);
          if (ret == null)
              ret = getSwappableData().remove(pName);
  
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_WAS.exiting(methodClassName, methodNames[REMOVE_VALUE_GUTS]);
          }
          return ret;
      }