code: function NamedArgument() {
    if (typeof arguments[0] === 'string') {
      this.nameArg = null;
      this.valueArg = null;
      this.text = arguments[0];
      this.prefix = arguments[1];
      this.suffix = arguments[2];
    }
    else if (arguments[1] == null) {
      this.nameArg = arguments[0];
      this.valueArg = null;
      this.text = '';
      this.prefix = this.nameArg.toString();
      this.suffix = '';
    }
    else {
      this.nameArg = arguments[0];
      this.valueArg = arguments[1];
      this.text = this.valueArg.text;
      this.prefix = this.nameArg.toString() + this.valueArg.prefix;
      this.suffix = this.valueArg.suffix;
    }
  }
docs: A named argument is for cases where we have input in one of the following
  formats:
  <ul>
  <li>--param value
  <li>-p value
  </ul>
  We model this as a normal argument but with a long prefix.
  
  There are 2 ways to construct a NamedArgument. One using 2 Arguments which
  are taken to be the argument for the name (e.g. '--param') and one for the
  value to assign to that parameter.
  Alternatively, you can pass in the text/prefix/suffix values in the same
  way as an Argument is constructed. If you do this then you are expected to
  assign to nameArg and valueArg before exposing the new NamedArgument.