code: public Set<String> getAttributeNames() {
      if (attributes == null) {
        return Collections.emptySet();
      } else {
        return Collections.unmodifiableSet(attributes.keySet());
      }
    }
docs: Returns the list of user defined attribute names.
  
  @return the list of user defined attribute names, if there are none it returns an empty set.