     }
     
     var lowercasedWords: String {
-        return wordsFromCamelCase.lowercaseString
+        return wordsFromCamelCase.lowercased()
     }
     
-    func longestWordsMatchInPrefixes(prefixes: [String]) -> String {
+    func longestWordsMatch(inPrefixes prefixes: [String]) -> String {
         return prefixes.reduce("") { (longest, prefix) in
             return prefix.characters.count > longest.characters.count
                 && self.lowercasedWords.hasPrefix(prefix.lowercasedWords)

    }
    
    var isUppercase: Bool {
        return self == uppercaseString
    }
    
    var wordsFromCamelCase: String {
        var wordString = ""
        var previousChar: String? = nil
        for charN in 0 ..< characters.count {
            let thisChar = String(characters[startIndex.advancedBy(charN)])
            let nextChar: String? = charN + 1 < characters.count ? String(characters[startIndex.advancedBy(charN + 1)]) : nil
            if charN > 0
                && previousChar != " "
                && thisChar != " "

        let withString = "With"
        var parameters: [String]?
        if hasSuffix(":") {
            let parameterComponents = components(separatedBy: ":")
            if let withComponents = parameterComponents.first?.components(separatedBy: withString), !withComponents.isEmpty
            {
                let methodBaseName = withComponents.dropLast().joined(separator: withString)
                let firstParameter = withComponents.last!.lowercasedFirstCharacter
                parameters = [methodBaseName, firstParameter]
                parameters?.append(contentsOf: parameterComponents.dropFirst().dropLast())
            }
        } else {
            parameters = [self]
