public static function splitFunctionName(
        $functionName)
    {
        // Split the input on the FIRST encountered NON-LOWERCAZE ("a-z")
        // character. And allow empty splits (that's important). Because of the
        // fact that it splits on non-lowercase character types, it means that
        // if there are 2 chunks then we KNOW that there was a non-lowercase
        // character (such as _, 0-9, A-Z, etc) in the input. And if there are
        // two chunks but the first chunk is an empty string then we know that
        // there was no lowercase a-z PREFIX in the input. And if there is only
        // 1 chunk then we know the entire input was all-lowercase a-z.
        //
        // Examples of this preg_split()'s behavior:
        //
        // "get_" => 2 chunks: "get" & "_"
        // "getgetX" => 2 chunks: "getget" & "X"
        // "eraseSomething" => 2 chunks: "erase" & "Something"
        // "getgetget" (only lowercase a-z) => 1 chunk: "getgetget"
        // "GetSomething" (no lowercase prefix) => 2 chunks: "" & "GetSomething"
        // "G" => 2 chunks: "" & "G"
        // "GX" => 2 chunks: "" & "GX"
        // "Gx" => 2 chunks: "" & "Gx"
        // "0" => 2 chunks: "" & "0"
        // "gx" => 1 chunk: "gx"
        // "gX" => 2 chunks: "g" & "X"
        // "g0" => 2 chunks: "g" & "0"
        // "" (empty string input) => 1 chunk: ""
        //
        // Therefore, we know that the input was valid (a lowercase a-z prefix
        // followed by at least one non-lowercase a-z after that) if we have two
        // chunks and the first chunk is non-empty!
        $chunks = preg_split('/(?=[^a-z])/', $functionName, 2);
        if (count($chunks) === 2 && $chunks[0] !== '') {
            // [0] = prefix (functionType), [1] = suffix (FuncCase).
            return $chunks;
        }

        // Invalid input. Return NULL prefix and NULL suffix values.
        static $invalidChunks = [null, null]; // Static=Only created first call.

        return $invalidChunks;
    }