code: function Choice( val, answers ) {
  
    // Don't process Choice and Separator object
    if ( val instanceof Choice || val.type === "separator" ) {
      return val;
    }
  
    if ( _.isString(val) ) {
      this.name = val;
      this.value = val;
    } else {
      _.extend( this, val, {
        name: val.name || val.value,
        value: val.hasOwnProperty("value") ? val.value : val.name
      });
    }
  
    if ( _.isFunction(val.disabled) ) {
      this.disabled = val.disabled( answers );
    } else {
      this.disabled = val.disabled;
    }
  }
docs: Choice object
  @constructor
  @param {String|Object} val  Choice value. If an object is passed, it should contains
  at least one of `value` or `name` property