code: protected void updateProperty(String key, Object value) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "updateProperty", new Object[] { key, value });
  
          // check the value is different to the existing one
          if (isDifferent(key, value)) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "new value for " + key + ": " + value);
  
              // clear the cached encodings
              clearCachedEncodings();
  
              if (value == null) {
                  properties.remove(key);
              }
              else {
                  // put new value
                  properties.put(key, value);
              }
          }
          else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "value for " + key + " same as existing");
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "updateProperty");
      }
docs: Utility method update a property.
  Checks that the value is different to the existing value and clears the cache if necessary.
  Needs package/protected access as also used by subclasses (in the same package).
  
  @param key The name of the property
  @param value The new value