code: function ArgFetcher(options, components) {
    this.document = components.document || document;
    this.requisition = components.requisition;
    this.inputter = components.inputter;
  
    // FF can be really hard to debug if doc is null, so we check early on
    if (!this.document) {
      throw new Error('No document');
    }
  
    this.element = components.element;
    this.element.classList.add(options.argFetcherClass || 'gcli-argfetch');
    // We cache the fields we create so we can destroy them later
    this.fields = [];
  
    // Populated by template
    this.okElement = null;
  
    // Pull the HTML into the DOM, but don't add it to the document
    if (argFetchCss != null) {
      this.style = util.importCss(argFetchCss, this.document, 'gcli-arg-fetch');
    }
  
    this.template = util.toDom(this.document, argFetchHtml);
    this.templateOptions = { allowEval: true, stack: 'arg_fetch.html' };
  
    this.inputter.onInputChange.add(this.inputChanged, this);
    this.inputChanged();
  }
docs: A widget to display an inline dialog which allows the user to fill out
  the arguments to a command.
  @param options Object containing user customization properties, including:
  - argFetcherClass: Custom class name when generating the top level element
  which allows different layout systems
  @param components Object that links to other UI components. GCLI provided:
  - document: The document to use in creating widgets
  - requisition: The Requisition to fill out
  - element: The root element to populate