         
         var counter = 0
         var methodHeader = methodSpecification.reduce("") { (string, character) -> String in
-            counter++
+            counter += 1
             return "\(string), \(self.dataTypeFromSpecialCharacter(character, language: .ObjC))"
         }
         counter = 0
         var blockHeader = methodSpecification.reduce("") { (string, character) -> String in
-            counter++
+            counter += 1
             return "\(string), \(self.dataTypeFromSpecialCharacter(character, language: .ObjC)) value\(counter) "
         }
         

        }
        
        // Replace root object with newly created n-level dictionary
        replacementDictionary.setValue(object, forKeyPath: forKeyPath);
        onObject.setObject(replacementDictionary.objectForKey(rootKey), forKey: rootKey);
    }
}

private extension NSMutableDictionary {
    
    
    func setObject(object : AnyObject!, forKeyPath : String, delimiter : String = ".") {
        
        self.setObject(object, onObject : self, forKeyPath: forKeyPath, createIntermediates: true, replaceIntermediates: true, delimiter: delimiter)
    }
    
    
    func setObject(object : AnyObject, onObject : AnyObject, forKeyPath keyPath : String, createIntermediates: Bool, replaceIntermediates: Bool, delimiter: String) {
        
        // Make keypath mutable
        var primaryKeypath = keyPath
        
        // Replace delimiter with dot delimiter - otherwise key value observing does not work properly
        let baseDelimiter = "."
        primaryKeypath = primaryKeypath.stringByReplacingOccurrencesOfString(delimiter, withString: baseDelimiter, options: .LiteralSearch, range: nil)
        
        // Create path components separated by delimiter (. by default) and get key for root object
		// filter empty path components, these can be caused by delimiter at beginning/end, or multiple consecutive delimiters in the middle
		let pathComponents : Array<String> = primaryKeypath.componentsSeparatedByString(baseDelimiter).filter({ $0.characters.count > 0 })
		primaryKeypath = pathComponents.joinWithSeparator(baseDelimiter)
        let rootKey : String = pathComponents[0]
		
		if pathComponents.count == 1 {
