...
 /**
  * Adds an element to the set.
  * @param iElementToAdd
  *   The element to add to the set.
  *   <br><b>Cyclic reference<b>: A copy of <tt>iElementToAdd</tt> is kept and
  *   AddRef'ed. It is Released either when the element is removed from the set,
  *   or by the CATSO destructor.
  * @param iCheckIfThere
  *   A flag to check if <tt>iElementToAdd</tt> is already in the set.
  *   <br><b>Legal values<b>: A non null value to check if <tt>iElementToAdd</tt>
  *   is already in the set and to add it only if it is not,
  *   and 0 to add it without check at the end of the set, which is faster.
  */
    virtual void AddElement(CATBaseUnknwon * iElementToAdd, int iCheckIfThere=1);

 /**
  * Creates a state.
  * @param iId
  *   The resource identifier used to retrieve the state prompt in the command
  *   message file.
  * @return 
  *   The state.
  *   <br><b>Cyclic reference</b>: A pointer to the state is kept and 
  *   released at the end of the command before the command destructor call.
  *   <br><b>Lifecycle rules deviation</b>: This method doesn't AddRef the 
  *   returned value.
  */
    virtual CATDialogState* AddDialogState(const CATString &iId);

...