def read_attribute(key)
      if type = namespace.attribute_type(key)
        key = type.names.first
      else
        key = Ldaptic.encode(key)
      end
      @attributes[key] ||= ((@original_attributes || {}).fetch(key, [])).dup
      Ldaptic::AttributeSet.new(self, key, @attributes[key])
    end
def read_attribute(key)
      if type = namespace.attribute_type(key)
        key = type.names.first
      else
        key = Ldaptic.encode(key)
      end
      @attributes[key] ||= ((@original_attributes || {}).fetch(key, [])).dup
      Ldaptic::AttributeSet.new(self, key, @attributes[key])
    end
Reads an attribute and typecasts it if neccessary.  If the argument given
 is a symbol, underscores are translated into hyphens.  Since
 #method_missing delegates to this method, method names with underscores
 map to attributes with hyphens.