code: public PropertyDefinitionData[] getAllPropertyDefinitions(final InternalQName... nodeTypeNames)
  
     {
        final Collection<PropertyDefinitionData> defsAny = new ArrayList<PropertyDefinitionData>();
        final HashMap<InternalQName, PropertyDefinitionData> defs = new HashMap<InternalQName, PropertyDefinitionData>();
  
        for (final InternalQName ntname : nodeTypeNames)
        {
  
           for (final InternalQName suname : this.nodeTypeRepository.getSupertypes(ntname))
           {
              for (final PropertyDefinitionData pd : this.nodeTypeRepository.getNodeType(suname)
                 .getDeclaredPropertyDefinitions())
              {
                 if (pd.getName().equals(Constants.JCR_ANY_NAME))
                 {
                    defsAny.add(pd);
                 }
                 else
                 {
                    defs.put(pd.getName(), pd);
                 }
              }
           }
  
           for (final PropertyDefinitionData pd : this.nodeTypeRepository.getNodeType(ntname)
              .getDeclaredPropertyDefinitions())
           {
              if (pd.getName().equals(Constants.JCR_ANY_NAME))
              {
                 defsAny.add(pd);
              }
              else
              {
                 defs.put(pd.getName(), pd);
              }
           }
        }
  
        defsAny.addAll(defs.values());
  
        return defsAny.toArray(new PropertyDefinitionData[defsAny.size()]);
     }
docs: {@inheritDoc}