anchor.diff:  * GROUP: A pure organizational structure of commands.
   * SEPARATOR: A separator between command sections of a command list.
   
  -==== HideWhenNotEnabled ====
  +// OBO: will be deprecated.
  +==== hideWhenNotEnabled ====
   
   * If true, the command should be hidden when not applicable. The default value is false.
   
  -==== ClearCaches ====
  +==== clearCaches ====
   
   *  Defines the caches to clear within the element context of this command. The default value is an empty array, which means that there is nothing to clear.
   
   === Navigate to another view ===
  +
  +//OBO: HotLinkCommandPm is not available in pm4j. - I just detected it, and it's a candidate for removal. - A view adapter should do what's defined there.
   
   To navigate to another view you can use the HotLinkCommandPm. Here you have to override the getNaviLinkImpl to return a NaviLink object, 
   that contains the information about the target to navigate to. Optional it is also possible to add some parameters.
   
   [source]
   ------------------------------------------------------------------------
  -@PmTitleCfg(title = "Show All")
  -public final PmCommand cmdShowAll = new HotLinkCommandPm(this) {
  +public final PmCommand cmdNavigateToFixTarget = new PmCommandImpl(this, new NaviLinkImpl("/page/someDialog.iface"));
  +
  +public final PmCommand cmdNavigateToCalculatedTarget = new PmCommandImpl(this);
   
       @Override
       protected NaviLink getNaviLinkImpl() {
  +		String page = someCondition() ? "targetPage1" : "targetPage2";
  +		
           // Path to the requested component
  -        NaviLinkImpl naviLink = new NaviLinkImpl( "/page/someDialog.iface" );
  +        NaviLinkImpl naviLink = new NaviLinkImpl(page);
           
           naviLink.addParam("name", "value");
           // ... more parameter ...
  -
           return naviLink;
       }
   };
  -------------------------------------------------------------------------
  +
  +public final PmCommand cmdThatOnlySometimesNavigates = new PmCommandImpl(this);
  +
  +    @Override
  +    protected void doItImpl() {
  +        // .. some logic
  +		if (verySpecialCondition()) {
  +		   setNaviLink(new NaviLinkImpl("specialConditionHandlingPage");
  +		}
  +    }
  +};
  +
  +------------------------------------------------------------------------
  +
  +// OBO: should be moved to the Globe specific hotlink docu.
   
   You can read these parameter in the target object like this:
   
  
positive.code: * DO_NOTHING: Does not care about existing (error-) messages and does not clear any of these messages before it gets executed.
  * DEFAULT: The definition, defined in the project specific PmDefaults will be used. The default implementation is VALIDATE.
  
  ==== AfterDo ====
  
  The afterDo parameter defines what should be done after executing the command logic, whereat the following actions are possible:
  
  * RESET_VALUE_CHANGED_STATE: Resets the value change state of the pm that is used as validation root.
  * CLEAR_CACHES: Clears the caches of all pm's along the path to the root pm. 
  * DO_NOTHING: Does not executes any special operation in the after do method of the command.
  * DEFAULT: The default logic is to execute CLEAR_CACHES and if VALIDATE is set for the beforeDo action also RESET_VALUE_CHANGED_STATE.
  
  ==== CmdKind ====
  
  The default value is COMMAND.
  
  
negative.code: 
  [source]
  ------------------------------------------------------------------------
  public class MyFormPmTest {
  
  	// OBO: Views and PMs are different concepts.
      private MyFormPm form = new MyFormPm();
  
  	public void testSaveValidValues() {
  		PmAssert.setValue(form.requiredAttr, "My Value");
  		PmAssert.doIt(form.cmdSave);
      }
  	
  	public void testSaveWithoutRequiredValueShouldFail() {
  		PmAssert.doIt(form.cmdSave, CommandState.FAILED);
  		PmAssert.assertMessage(form, Severity.ERROR, "Please enter a valid value in 'required attr'");
      }
  }
  ------------------------------------------------------------------------
  