# Attributed qualified "To Many"-Association

    /**
     * <pre>
     *           +----------+                 n
     * LeftClass | getKey() +------------------- RightClass
     *           +----------+        rightRoles
     * </pre>
     */

Attribute
`private FDuplicatedHashMap rightRoles;` or `private FDuplicatedTreeMap rightRoles;`

Access Methods Summary
`public boolean` | `hasInRightRoles (RightClass value)`
`public boolean` | `hasKeyInRightRoles (KeyType key)`
`public Iterator` | `iteratorOfRightRoles ()`
`public Iterator` | `iteratorOfRightRoles (KeyType key)`
`public Iterator` | `keysOfRightRoles ()`
`public Iterator` | `entriesOfRightRoles ()`
`public int` | `sizeOfRightRoles ()`
`public int` | `sizeOfRightRoles (KeyType key)`
`public boolean` | `addToRightRoles (RightClass value)`
`public boolean` | `removeFromRightRoles (RightClass value)`
`public boolean` | `removeKeyFromRightRoles (KeyType key)`
`public void` | `removeAllFromRightRoles ()`

Access Methods

    public boolean hasInRightRoles (RightClass value)
    {return ((this.rightRoles != null) &&
            (value != null) && (value.getKey () != null) &&
            this.rightRoles.containsEntry (value.getKey (), value));
    }

    public boolean hasKeyInRightRoles (KeyType key)
    {return ((this.rightRoles != null) &&
            (key != null) &&
            this.rightRoles.containsKey (key));
    }

    public Iterator iteratorOfRightRoles ()
    {return ((this.rightRoles == null)
            ? FEmptyIterator.get ()
            : this.rightRoles.values ().iterator ());
    }

    public Iterator iteratorOfRightRoles (KeyType key)
    {return ((this.rightRoles == null)
            ? FEmptyIterator.get ()
            : FCollections.iterator (this.rightRoles.values (key)));
    }

    public Iterator keysOfRightRoles ()
    {return ((this.rightRoles == null)
            ? FEmptyIterator.get ()
            : this.rightRoles.keySet ().iterator ());
    }

    public Iterator entriesOfRightRoles ()
    {return ((this.rightRoles == null)
            ? FEmptyIterator.get ()
            : this.rightRoles.entrySet ().iterator ());
    }

    public int sizeOfRightRoles ()
    {return ((this.rightRoles == null)
            ? 0
            : this.rightRoles.size ());
    }

    public int sizeOfRightRoles (KeyType key)
    {return ((this.rightRoles == null)
            ? 0
            : this.rightRoles.size (key));
    }

    public boolean addToRightRoles (RightClass value)
    {boolean changed = false;
    if ((value != null) && (value.getKey () != null))
    {
       if (this.rightRoles == null)
       {
           this.rightRoles = new FHashSet ($CONSTRUCTORPARAM$); // or FDuplicatedTreeMap ()
       }
       RightClass oldValue = (RightClass) this.rightRoles.put (value.getKey (), value);
       if (oldValue == null)
       {
          value.<method to insert>;
          changed = true;
       }
    }
    return changed;
    }

    public boolean removeFromRightRoles (RightClass value)
    {boolean changed = false;
    if ((this.rightRoles != null) && (value != null) && (value.getKey () != null))
    {
       RightClass oldValue = (RightClass) this.rightRoles.remove (value.getKey (), value);
       if (oldValue != null)
       {
          value.<method to remove>;
          changed = true;
       }
    }
    return changed;
    }

    public boolean removeKeyFromRightRoles (KeyType key)
    {boolean changed = false;
    if ((this.rightRoles != null) && (key != null))
    {
       Collection tmpCol = (Collection) this.rightRoles.remove (key);
       if (tmpCol != null)
       {
          RightClass tmpValue;
          Iterator iter = tmpCol.iterator ();
          while (iter.hasNext ())
          {
             tmpValue = (RightClass) iter.next ();
             tmpValue.<method to remove>;
          }
          changed = true;
       }
    }
    return changed;
    }

    public void removeAllFromRightRoles ()
    {RightClass tmpValue;
    Iterator iter = this.iteratorOfRightRoles ();
    while (iter.hasNext ())
    {
       tmpValue = (RightClass) iter.next ();
       this.removeFromRightRoles (tmpValue);
    }
    }