def remove_attribute(attribute)
      sa = standard_attribute(attribute)
      # if the attribute is local, then delete it, otherwise filter out the superclass attribute
      sp = @local_prop_hash.delete(sa)
      if sp then
        # clear the inverse, if any
        clear_inverse(sp)
        # remove from the mandatory attributes, if necessary
        @local_mndty_attrs.delete(sa)
        # remove from the attribute => metadata hash
        @local_std_prop_hash.delete_if { |aliaz, pa| pa == sa }
      else
        # Filter the superclass hashes.
        anc_prop_hash = @prop_hash.components[1]
        @prop_hash.components[1] = anc_prop_hash.filter_on_key { |pa| pa != attribute }
        anc_alias_hash = @alias_std_prop_map.components[1]
        @alias_std_prop_map.components[1] = anc_alias_hash.filter_on_key { |pa| pa != attribute }
      end
      logger.debug { "Removed the #{qp} #{attribute} property." }
    end
def remove_attribute(attribute)
      sa = standard_attribute(attribute)
      # if the attribute is local, then delete it, otherwise filter out the superclass attribute
      sp = @local_prop_hash.delete(sa)
      if sp then
        # clear the inverse, if any
        clear_inverse(sp)
        # remove from the mandatory attributes, if necessary
        @local_mndty_attrs.delete(sa)
        # remove from the attribute => metadata hash
        @local_std_prop_hash.delete_if { |aliaz, pa| pa == sa }
      else
        # Filter the superclass hashes.
        anc_prop_hash = @prop_hash.components[1]
        @prop_hash.components[1] = anc_prop_hash.filter_on_key { |pa| pa != attribute }
        anc_alias_hash = @alias_std_prop_map.components[1]
        @alias_std_prop_map.components[1] = anc_alias_hash.filter_on_key { |pa| pa != attribute }
      end
      logger.debug { "Removed the #{qp} #{attribute} property." }
    end
Removes the given attribute from this Resource.
 An attribute declared in a superclass Resource is hidden from this Resource but retained in
 the declaring Resource.