 template and partial names.
 */
 public protocol TemplateRepositoryDataSource {
+    
     /**
     Returns a template ID, that is to say a string that uniquely identifies a
-    template or a template partial. There should be a single template ID for
-    each template.
+    template or a template partial.
     
     The meaning of this String is opaque: your implementation of a
-    TemplateRepositoryDataSource would define, for itself, how strings would
+    `TemplateRepositoryDataSource` would define, for itself, how strings would
     identity a template or a partial. For example, a file-based data source may
-    use paths to the templates as template IDs.
+    use paths to the templates.
+    
+    The return value of this method can be nil: the library user would then
+    eventually get an NSError of domain GRMustacheErrorDomain and code
+    GRMustacheErrorCodeTemplateNotFound.
+    
+    ### Template hierarchies
     
     Whenever relevant, template and partial hierarchies are supported via the
     baseTemplateID parameter: it contains the template ID of the enclosing


import Foundation

public typealias TemplateID = String

/**

    /**
    The configuration for all templates and partials built by the repository.
    
    It is initialized with `Mustache.DefaultConfiguration`.
    
    You can alter the repository's configuration, or set it to another value,
    before you load templates:
