def METHOD_NAME():
    parser = argparse.ArgumentParser(description="Updates (and adds) license headers of the Mumble source files")
    parser.add_argument("-a", "--add-new", action="store_true", default=False, help="Also add license headers to files that did not contain one before")
    args = parser.parse_args()
    scriptDir = os.path.dirname(os.path.realpath(__file__))
    rootDir = os.path.realpath(os.path.join(scriptDir, ".."))
    excludePaths = ["build", "docs", "3rdparty", "3rdPartylLicenses", "themes", ".git", "man"]
    for i in range(len(excludePaths)):
        excludePaths[i] = os.path.join(rootDir, excludePaths[i])
    for i in range(len(blackListFiles)):
        blackListFiles[i] = os.path.join(rootDir, blackListFiles[i])
    # Convert the license template into a pattern that matches the license declaration inside the source files
    licensePattern = re.compile(licenseHeaderTemplate.substitute(copyright="\d+(-\d+)?", commentChar=".+?").strip().replace("\n", "\\r?\\n").replace(" ",
        "\\s*"), re.IGNORECASE)
    modifiedFiles = 0
    for root, dirs, files in os.walk(rootDir, topdown = True):
        for currentFile in files:
            fullPath = os.path.join(root, currentFile)
            if exclude(fullPath, excludePaths):
                continue
            try:
                generatedCopyright = generateHeaderForFile(fullPath)
                fileHandle = open(fullPath, "r")
                fileContent = fileHandle.read()
                try:
                    start,end = findCopyright(fileContent, licensePattern)
                except LicenseNotFoundError:
                    # no license yet
                    if not args.add_new:
                        print("No license header found for", fullPath)
                        continue
                    else:
                        print("Adding license header to", fullPath)
                        if not fileContent.startswith("#!"):
                            # File does not start with shebang -> write license to the top
                            start = 0
                            end = 0
                            generatedCopyright += "\n\n"
                        else:
                            # File starts with shebang -> append license after the first line (and add
                            # an extra blank line)
                            start = fileContent.find("\n") + 1
                            assert start > 0
                            end = start
                            generatedCopyright = "\n" + generatedCopyright + "\n\n"
                modifiedContent = fileContent[ : start] + generatedCopyright + fileContent[end : ]
                if modifiedContent != fileContent:
                    fileHandle.close()
                    # Open for writing
                    fileHandle = open(fullPath, "w")
                    modifiedFiles += 1
                    fileHandle.write(modifiedContent)
            except InvalidFileError:
                continue
    print("Modified {} files".format(modifiedFiles))