     
     func templateAST(named name: String, relativeToTemplateID templateID: TemplateID?, error: NSErrorPointer) -> TemplateAST? {
         if let templateID = dataSource?.templateIDForName(name, relativeToTemplateID: templateID) {
-            if let templateAST = templateASTForTemplateID[templateID] {
+            if let templateAST = templateASTCache[templateID] {
+                // Return cached AST
                 return templateAST
             } else {
                 var dataSourceError: NSError?
                 if let templateString = dataSource?.templateStringForTemplateID(templateID, error: &dataSourceError) {
+                    // Cache an empty AST for that name so that we support
+                    // recursive partials.
                     let templateAST = TemplateAST()
-                    templateASTForTemplateID[templateID] = templateAST
+                    templateASTCache[templateID] = templateAST
+                    
                     if let compiledAST = self.templateAST(string: templateString, contentType: lockedConfiguration.contentType, templateID: templateID, error: error) {
+                        // Success: update the empty AST
                         templateAST.updateFromTemplateAST(compiledAST)
                         return templateAST
                     } else {
-                        templateASTForTemplateID.removeValueForKey(templateID)
+                        // Failure: remove the empty AST
+                        templateASTCache.removeValueForKey(templateID)
                         return nil
                     }
                 } else {

              reloaded.
    */
    public func reloadTemplates() {
        templateASTForTemplateID.removeAll()
    }
    
    

    */
    public init(dataSource: TemplateRepositoryDataSource? = nil) {
        configuration = DefaultConfiguration
        templateASTCache = [:]
        self.dataSource = dataSource
    }
    
