docs: function(parser, argv, strict) {
  
    // Validate.
    if (!_.isObject(parser)) {
      throw new TypeError('Invalid parser objct: ' + pp(parser));
    }
    if (!isArgv(argv)) {
      throw new TypeError('Invalid argv object: ' + pp(argv));
    }
    if (!_.isBoolean(strict)) {
      throw new TypeError('Invalid strict boolean: ' + pp(strict));
    }
  
    if (strict) {
      // Don't allow any rogue options.
      parser.strict();
    }
  
    var retVal = {
      payload: argv.payload,
      options: parser.parse(argv.rawOptions),
      rawOptions: argv.rawOptions
    };
  
    // Guard against non-options right of the splitter.
    if (strict && retVal.options._.length !== 0) {
      throw new Error('Non-options are NOT allowed to the right of "' +
        splitter + '" : ' + retVal.options._);
    }
  
    // Return.
    return retVal;
  
  }