@Override
            public boolean add(ArbitraryAttributeModel e) {

                String newValue = e.getValue();
                String oldValue = put(e.getName(), newValue);

                // If null value is being added, collection changed only if
                // old value was non-null
                if (newValue == null)
                    return oldValue != null;

                // Collection changed if value changed
                return !newValue.equals(oldValue);

            }
Returns a collection of model objects which mirrors the contents of this
ArbitraryAttributeMap. Each name/value pair within the map is reflected
by a corresponding model object within the returned collection. Removing
a model object from the collection removes the corresponding name/value
pair from the map. Adding a new model object to the collection adds a
corresponding name/value pair to the map. Changes to a model object
within the collection are NOT reflected on the map, however.

@return
    A collection of model objects which mirrors the contents of this
    ArbitraryAttributeMap.
extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ArbitraryAttributeMap.java