code: function SubRule(name, expression, namespace, description){
      this.superclass(name, expression, null, -1, namespace, description);
  }
docs: ////////////////// SUB RULE //////////////////////////////// 
  A sub rule can be used to make rules which are built up from partial expressions and expressions
  contained in (sub)rules.  A sub rule will
  <b>never</b> have an associated action executed, rather it will only ever be evaluated, as part of the evaluation
  of a rule which references it.  Rules may reference sub rules within the same namespace, using the '#'
  character.  E.g.:<br>
  <br>
  SubRule 1: input.age &gt; 30<br>
  SubRule 2: input.height &lt; 100<br>
  Rule 3: #1 &amp;&amp; !#2 <br>
  @constructor
  @author Ant
  @property name {String} The name of the rule.  Should be unique within the namespace (tested when adding rules to the {@link Engine}).
  @property expression {String} A Javascript rule. All variables must come from the object called "input".  The rule MUST evaluate to "true" if it is to be a candidate for execution.
  @property namespace {String} The namespace of this rule, for example a version number or component name.
  When the engine is used, the caller supplies an optional namespace pattern (regular expression) which is used
  to filter the rules which are used in determining outcomes.
  @property description {String} An optional description of the rule, helpful for managing rules.