code: function(param, description, values, signature) {
        var optionArgs = arguments;
        if(optionArgs.length === 1) {
          return _definition[param];
        }
  
        var paramList = Array.isArray(param) ? param : [param];
        var vector;
        var optionDef = {
          param: paramList,
          value: function() {
            // Default, no values or signature
            if(optionArgs.length === 2) return false;
  
            if(!vector) vector = Vector(values, signature);
            return vector;
          },
          signature: Array.isArray(signature) ? signature : null,
          description: description
        };
  
        // Define both short/long
        paramList.forEach(function(p) {
          _definition[p] = optionDef;
        });
  
        return this;
      }
docs: Setter/getter for a defined option.  If a signature is used the value contain a hash using the Array values used as keys.
  
  A signature cannot be used with combined parameters
  
  @param  {Mixed}  param       A parameter name String, or Array [short, long, alternate...] parameter name(s) and aliases
  @param  {String} description A description
  @param  {Mixed}  [values]    An optional default value, true if not specified
  @param  {Array}  [signature] An optional signature, additional required arguments; listed in Array format
  @return {Argr}               Itself, chainable