whole_func_string: function Route(spec) {
    var route;
    if (this) {
      // constructor called with new
      route = this;
    } else {
      // constructor called as a function
      route = Object.create(Route.prototype);
    }
    if (typeof spec === 'undefined') {
      throw new Error('A route spec is required');
    }
    route.spec = spec;
    route.ast = Parser.parse(spec);
    return route;
  }
func_code_string: function Route(spec) {
    var route;
    if (this) {
      // constructor called with new
      route = this;
    } else {
      // constructor called as a function
      route = Object.create(Route.prototype);
    }
    if (typeof spec === 'undefined') {
      throw new Error('A route spec is required');
    }
    route.spec = spec;
    route.ast = Parser.parse(spec);
    return route;
  }
func_documentation_string: Represents a route
  @example
  var route = Route('/:foo/:bar');
  @example
  var route = Route('/:foo/:bar');
  @param {string} spec -  the string specification of the route.
  use :param for single portion captures, *param for splat style captures,
  and () for optional route branches
  @constructor