code: @SuppressWarnings("unchecked")
      static <P> ImmutableLightMetaProperty<P> of(
              MetaBean metaBean,
              final Method method,
              final String propertyName,
              int constructorIndex) {
  
          PropertyGetter getter = new PropertyGetter() {
              @Override
              public Object get(Bean bean) {
                  try {
                      return method.invoke(bean);
                  } catch (IllegalArgumentException | IllegalAccessException ex) {
                      throw new UnsupportedOperationException("Property cannot be read: " + propertyName, ex);
                  } catch (InvocationTargetException ex) {
                      if (ex.getCause() instanceof RuntimeException) {
                          throw (RuntimeException) ex.getCause();
                      }
                      throw new RuntimeException(ex);
                  }
              }
          };
          return new ImmutableLightMetaProperty<P>(
                  metaBean, 
                  propertyName, 
                  (Class<P>) method.getReturnType(),
                  method.getGenericReturnType(),
                  Arrays.asList(method.getAnnotations()),
                  getter,
                  constructorIndex,
                  PropertyStyle.DERIVED);
      }
docs: Creates an instance from a derived {@code Method}.
  
  @param <P>  the property type
  @param metaBean  the meta bean, not null
  @param method  the method, not null
  @param constructorIndex  the index of the property
  @return the property, not null