code: public PropertyManager<T> getPropertyManager(T property)
      {
          PropertyManager<T> propertyManager = propertyManagerCache.get(property);
  
          if (propertyManager == null)
          {
              PropertyManager<T> newPropertyManager = new PropertyManager<T>(property,
                                                                             this);
  
              propertyManager = propertyManagerCache.putIfAbsent(property,
                                                                 newPropertyManager);
              if (propertyManager == null)
              {
                  propertyManager = newPropertyManager;
              }
          }
  
          return propertyManager;
      }
docs: Get an object that will encapsulate the functionality of this manager specific to a
  single property. This makes it easier to watch, modify, and generally interact with
  a single property.
  
  @param property
  the property to manage
  @return the encapsulation of the functionality of this manager as it pertains to a
  single property