code: public synchronized void setProperty(PropertyKey key, Object value)
      {
          if (!isValidKey(key))
              throw new IllegalArgumentException("Key " + key + " is not valid for " + getMapClass());
  
          //
          // Validate the value argument, based upon the property type reference by the key
          //
          Class propType = key.getPropertyType();
          if (value == null)
          {
              if (propType.isPrimitive() || propType.isAnnotation())
                  throw new IllegalArgumentException("Invalid null value for key " + key);
          }
          else
          {
              if (propType.isPrimitive())
                  propType = (Class)_primToObject.get(propType);
  
              if (!propType.isAssignableFrom(value.getClass()))
              {
                  throw new IllegalArgumentException("Value class (" + value.getClass() + 
                                                     ") not of expected type: " + propType);
              }
          }
          _properties.put(key, value);
          _propertySets.add(key.getPropertySet());
      }
docs: Sets the property specifed by 'key' within this map.