code: private Object getComponentProperty(_PropertyDescriptorHolder propertyDescriptor)
      {
          Method readMethod = propertyDescriptor.getReadMethod();
          if (readMethod == null)
          {
              throw new IllegalArgumentException("Component property " + propertyDescriptor.getName()
                                                 + " is not readable");
          }
          try
          {
              return readMethod.invoke(_component, EMPTY_ARGS);
          }
          catch (Exception e)
          {
              FacesContext facesContext = _component.getFacesContext();
              throw new FacesException("Could not get property " + propertyDescriptor.getName() + " of component "
                                       + _component.getClientId(facesContext), e);
          }
      }
docs: Execute the getter method of the specified property on the underlying
  component.
  
  @param propertyDescriptor specifies which property to read.
  @return the value returned by the getter method.
  @throws IllegalArgumentException if the property is not readable.
  @throws FacesException           if any other problem occurs while invoking
  the getter method.