def METHOD_NAME(root):
    src_dir = os.path.join(root, "src")
    tests_dir = os.path.join(root, "tests")
    # Find interface headers
    public = glob.glob(os.path.join(src_dir, "precice", "*.hpp"))
    public += CONFIGURED_PUBLIC
    public = [os.path.relpath(p, root) for p in public]
    # Find all test and source cpp files
    sources, utests = [], []
    exts = [".cpp", ".c", ".hpp", ".h"]
    for dir, _, filenames in os.walk(src_dir):
        if any([elem in dir for elem in IGNORE_PATTERNS]):
            continue
        files = [
            os.path.relpath(os.path.join(dir, name), root)
            for name in filenames
            if file_extension(name) in exts
        ]
        if "test" in dir:
            utests += files
        else:
            sources += files
    sources += CONFIGURED_SOURCES
    itests = []
    for dir, _, filenames in os.walk(tests_dir):
        if any([elem in dir for elem in IGNORE_PATTERNS]):
            continue
        files = [
            os.path.relpath(os.path.join(dir, name), root)
            for name in filenames
            if file_extension(name) in exts
        ]
        itests += files
    return sorted(sources), sorted(public), sorted(utests), sorted(itests)