code: private Accessor getWrappedAccessor(Class<?> propertyType)
      {
          if (wrappedAccessor == null)
          {
              try
              {
                  wrappedAccessor = ClassUtils.getAccessorForProperty(getter.getReturnType(), nestedProperty);
              }
              catch (NoSuchMethodError nsme)
              {
                  if (propertyType == null)
                      throw nsme;
                  wrappedAccessor = ClassUtils.getAccessorForProperty(propertyType, nestedProperty);
              }
          }
  
          return wrappedAccessor;
      }
docs: <p>
  Get the wrapped accessor, instantiate it lazily if needed.
  </p>
  
  <p>
  Normally the return type of the getter method delivers the correct type on which the nested property
  can be found. There is however a specific case in which this isn't true. It may be that a specific type
  is only known at runtime and that you need to access a property of that specific type. The specific
  type can be found at runtime when the wrapped accessor is constructed. But it does imply that all other
  access will result in the same type.
  </p>
  
  <p>
  A specific type implementation is found in PeriodicValueAdapter->BTWPercentage, here a property of
  BTWPercentage can be accessed through the adapter, but all other adapters should contain a
  BTWPercentage.
  </p>
  
  @param propertyType
  property type to use if getter doesn't yield the correct one.
  @return an {@link Accessor} for the wrapped property.