code: public PropertyDefinitionDatas getPropertyDefinitions(final InternalQName propertyName,
        final InternalQName... nodeTypeNames) throws RepositoryException
     {
  
        PropertyDefinitionDatas propertyDefinitions =
           this.nodeTypeRepository.getPropertyDefinitions(propertyName, nodeTypeNames);
  
        // Try super
        if (propertyDefinitions == null)
        {
           for (int i = 0; i < nodeTypeNames.length && propertyDefinitions == null; i++)
           {
              final InternalQName[] supers =
                 this.nodeTypeRepository.getNodeType(nodeTypeNames[i]).getDeclaredSupertypeNames();
              propertyDefinitions = getPropertyDefinitions(propertyName, supers);
  
           }
        }
  
        // try residual def
        if (propertyDefinitions == null && !propertyName.equals(Constants.JCR_ANY_NAME))
        {
           propertyDefinitions = getPropertyDefinitions(Constants.JCR_ANY_NAME, nodeTypeNames);
        }
  
        return propertyDefinitions;
     }
docs: {@inheritDoc}
  @throws RepositoryException