docs: function getRouteArgs(m, args) {
    var regex, methods = [m], funcs = [];
    
    // Note: args is the `arguments` object passed from previous function
    args = slice.call(args, 0);
    
    // Get any additional methods defined for route
    while (typeof args.slice(-1).pop() == 'string') {
      // Array.pop() alters the arguments array
      methods.push(args.pop());
    }
    
    // Remove underscore from reserved method worlds (such as delete)
    methods = methods.map(function(val) {
      return val.replace(/^_/, '');
    });
  
    // Generate regular expression for the route method(s)
    regex = new RegExp('^('+ methods.join('|').toUpperCase() +')$');
    
    // Get route functions
    var f, allowed = [Array, Function];
    while ((f=args.slice(-1).pop())) {
      // Array.pop() alters the arguments array
      if (allowed.indexOf(f.constructor) >= 0) funcs.unshift(args.pop());
      else break;
    }
    
    // Flatten funcs
    funcs = _.flatten(funcs);
    
    // Append route functions array
    args.push(funcs);
    
    return {args: args, regex: regex};
  
  }