code: function Question(name, message, options) {
    if (utils.isObject(name)) {
      options = utils.merge({}, message, name);
      message = options.message;
      name = options.name;
    }
  
    if (utils.isObject(message)) {
      options = utils.merge({}, options, message);
      message = options.message;
    }
  
    utils.define(this, 'isQuestion', true);
    utils.define(this, 'cache', {});
  
    this.options = options || {};
    this.type = this.options.type || 'input';
    this.message = message || this.options.message;
    this.name = name || this.options.name;
  
    if (!this.message) {
      this.message = this.name;
    }
  
    utils.merge(this, this.options);
    createNext(this);
  }
docs: Create new `Question` store `name`, with the given `options`.
  
  ```js
  var question = new Question(name, options);
  ```
  @param {String} `name` The question property name.
  @param {Object} `options` Store options
  @api public