code: function(name, idx) {
      var header, value, parsed;
  
      name = Utils.headerize(name);
  
      idx = idx || 0;
  
      if(!this.headers[name]) {
        debug('header "' + name + '" not present');
        return;
      } else if(idx >= this.headers[name].length) {
        debug('not so many "' + name + '" headers present');
        return;
      }
  
      header = this.headers[name][idx];
      value = header.raw;
  
      if(header.parsed) {
        return header.parsed;
      }
  
      //substitute '-' by '_' for grammar rule matching.
      parsed = Grammar.parse(value, name.replace(/-/g, '_'));
  
      if(parsed === -1) {
        this.headers[name].splice(idx, 1); //delete from headers
        debug('error parsing "' + name + '" header field with value "' + value + '"');
        return;
      } else {
        header.parsed = parsed;
        return parsed;
      }
    }
docs: Parse the given header on the given index.
  -param {String} name header name
  -param {Number} [idx=0] header index
  -returns {Object|undefined} Parsed header object, undefined if the header is not present or in case of a parsing error.