                     let firstComponent = withComponents.first!
                     if let drawAndName = firstComponent.substring(beforeSuffix: "Frame"),
                         firstComponent.hasSuffix("InFrame")
-                        || firstComponent.hasSuffix("OnFrame")
-                        || firstComponent.hasSuffix("ToFrame")
+                            || firstComponent.hasSuffix("OnFrame")
+                            || firstComponent.hasSuffix("ToFrame")
+                            || firstComponent.hasSuffix("BeforeFrame")
+                            || firstComponent.hasSuffix("AfterFrame")
                     {
                         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 }
    }

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