   // Renders "<firstName:Freddy, lastName:Mercury,>"
   let dictionary: [String: String] = ["firstName": "Freddy", "lastName": "Mercury"]
   let rendering = template.render(Box(["dictionary": dictionary]))!
+
 */
 public func Box<T: MustacheBoxable>(dictionary: [String: T]?) -> MustacheBox {
     if let dictionary = dictionary {

      template.render(Box(person))!
    */
    public var mustacheBox: ObjCMustacheBox {
        if let enumerable = self as? NSFastEnumeration
        {
            // Enumerable
            
            if respondsToSelector("objectForKeyedSubscript:")
            {
                // Dictionary-like enumerable
                
                return ObjCMustacheBox(MustacheBox(
                    value: self,
                    converter: MustacheBox.Converter(
                        dictionaryValue: {
                            var boxDictionary: [String: MustacheBox] = [:]
                            for key in GeneratorSequence(NSFastGenerator(enumerable)) {
                                if let key = key as? String {
                                    let item = (self as AnyObject)[key] // Cast to AnyObject so that we can access subscript notation.
                                    boxDictionary[key] = BoxAnyObject(item)
                                }
                            }
                            return boxDictionary
                        }),
                    keyedSubscript: { (key: String) in
                        let item = (self as AnyObject)[key] // Cast to AnyObject so that we can access subscript notation.
                        return BoxAnyObject(item)
                    }))
            }
            else
            {
                // Array-like enumerable
                
                let array = map(GeneratorSequence(NSFastGenerator(enumerable))) { BoxAnyObject($0) }
                let box = Box(array).boxWithValue(self)
                return ObjCMustacheBox(box)
            }
        }
        else
        {
            // Generic NSObject
            
            return ObjCMustacheBox(MustacheBox(

    */
    public override var mustacheBox: ObjCMustacheBox {
        return ObjCMustacheBox(Box(self as String))
    }
}

extension NSDictionary : ObjCMustacheBoxable {
    
    /**
    Let NSDictionary feed Mustache templates.
    
    ::
    
      let template = Template(string: "{{name}} is {{age}}.")!
    
      // Renders "Arthur is 36."
      let dictionary = ["name": "Arthur", "age": 36] as NSDictionary
      template.render(Box(dictionary))!
    
    
    The genuine Mustache won't let you iterate over the key/value pairs of a
    dictionary. Yet GRMustache ships with an `each` filter that performs that
    very job:
    
    ::
    
      // Attach StandardLibrary.each to the key "each":
      let template = Template(string: "<{{# each(dictionary) }}{{@key}}:{{.}}, {{/}}>")!
      template.registerInBaseContext("each", Box(StandardLibrary.each))
    
      // Renders "<name:Arthur, age:36, >"
      let dictionary = ["name": "Arthur", "age": 36] as NSDictionary
      let rendering = template.render(Box(["dictionary": dictionary]))!

    */
    public override var mustacheBox: ObjCMustacheBox {
        return ObjCMustacheBox(MustacheBox(
            value: self,
            converter: MustacheBox.Converter(
                dictionaryValue: {
                    return reduce(GeneratorSequence(NSFastGenerator(self)), [:] as [String: MustacheBox]) { (var boxDictionary, key) in
                        if let key = key as? String {
                            let item = (self as AnyObject)[key] // Cast to AnyObject so that we can access subscript notation.
                            boxDictionary[key] = BoxAnyObject(item)
                        }
                        return boxDictionary
                    }
            }),
            keyedSubscript: { (key: String) in
                let item = (self as AnyObject)[key] // Cast to AnyObject so that we can access subscript notation.
                return BoxAnyObject(item)
        }))
    }
}

