                 ? prefix : longest
         }
     }
-
+    
     func words(matching wordsArray: [String]) -> String? {
         return wordsArray.first { self.lowercasedWords == $0.lowercasedWords }
     }
-
+    
     var methodNameComponents: [String]? {
         let withString = "With"
         var parameters: [String]?

                    let firstComponent = withComponents.first!
                    if let drawAndName = firstComponent.substring(beforeSuffix: "Frame"),
                        firstComponent.hasSuffix("InFrame")
                        || firstComponent.hasSuffix("OnFrame")
                        || firstComponent.hasSuffix("ToFrame")
                    {
                        withComponents = [drawAndName, "Frame"]
                    } else {

        let index = self.index(startIndex, offsetBy: 1)
        return substring(to: index).lowercased() + substring(from: index)
    }
    
    var words: [String] {
        return components(separatedBy: CharacterSet.whitespaces).filter { !$0.isEmpty }
    }
