           # NOTE: we could speed this up by not completely trashing the cache
           @parse @_source, merge @options, logParsingFailures: true
 
-  getStartRule: (ruleName) ->
+  getRule: (ruleName) ->
     ruleName ||= @rootRuleName
     throw new Error "No root rule defined." unless ruleName
-    unless startRule = @rules[ruleName]
+    unless rule = @rules[ruleName]
       throw new Error "Could not find rule: #{ruleName}"
-    startRule
+    rule
 
   addToExpectingInfo = (node, into, value) ->
     if node.parent

  parse: (@_source, @options = {})->
    {@parentParser, allowPartialMatch, rule, isSubparse, logParsingFailures} = @options

    startRule = @getStartRule rule

    @_resetParserTracking()
    @_logParsingFailures = logParsingFailures

    @_getRuleParseCache(ruleName)[offset]

  _cacheMatch: (ruleName, matchingNode) ->
    Stats.add "cacheMatch"
    @_getRuleParseCache(ruleName)[matchingNode.offset] = matchingNode
    matchingNode

  _cacheNoMatch: (ruleName, offset) ->
    Stats.add "cacheNoMatch"
    @_getRuleParseCache(ruleName)[offset] = "no_match"
    null

