code: function Argument(text, prefix, suffix) {
    if (text === undefined) {
      this.text = '';
      this.prefix = '';
      this.suffix = '';
    }
    else {
      this.text = text;
      this.prefix = prefix !== undefined ? prefix : '';
      this.suffix = suffix !== undefined ? suffix : '';
    }
  }
docs: Thinking out loud here:
  Arguments are an area where we could probably refactor things a bit better.
  The split process in Requisition creates a set of Arguments, which are then
  assigned. The assign process sometimes converts them into subtypes of
  Argument. We might consider that what gets assigned is _always_ one of the
  subtypes (or actually a different type hierarchy entirely) and that we
  don't manipulate the prefix/text/suffix but just use the 'subtypes' as
  filters which present a view of the underlying original Argument.
   
  We record where in the input string an argument comes so we can report
  errors against those string positions.
  @param text The string (trimmed) that contains the argument
  @param prefix Knowledge of quotation marks and whitespace used prior to the
  text in the input string allows us to re-generate the original input from
  the arguments.
  @param suffix Any quotation marks and whitespace used after the text.
  Whitespace is normally placed in the prefix to the succeeding argument, but
  can be used here when this is the last argument.
  @constructor