code: boolean canRemoveProperty( Name primaryTypeNameOfParent,
                                 List<Name> mixinTypeNamesOfParent,
                                 Name propertyName,
                                 boolean skipProtected ) {
          return nodeTypes().canRemoveProperty(primaryTypeNameOfParent, mixinTypeNamesOfParent, propertyName, skipProtected);
      }
docs: Determine if the property definitions of the supplied primary type and mixin types allow the property with the supplied
  name to be removed.
  
  @param primaryTypeNameOfParent the name of the primary type for the parent node; may not be null
  @param mixinTypeNamesOfParent the names of the mixin types for the parent node; may be null or empty if there are no mixins
  to include in the search
  @param propertyName the name of the property to be removed; may not be null
  @param skipProtected true if this operation is being done from within the public JCR node and property API, or false if
  this operation is being done from within internal implementations
  @return true if at least one child node definition does not require children with the supplied name to exist, or false
  otherwise