def METHOD_NAME(app_conf_path: str) -> Dict[str, ServerVar]:
    """Parses an application.conf file and returns the set of referenced environment variables.
    If the application.conf file includes other conf files, those files will
    also be parsed for referenced environment variables.
    """
    # Matches any comment lines.
    comment_regex = re.compile(r"^\s*(#|//)")
    # Matches any include statements. Captures the file name in group 1.
    include_regex = re.compile(r"^\s*include\s+\"(.+)\"$")
    # Matches any UPPER_SNAKE_CASE variables in substitutions like
    # ${?WHITELABEL_SMALL_LOGO_URL}. Captures the variable name in group 1.
    env_var_regex = re.compile(r"^.*\${\?\s*([A-Z0-9_]+)\s*}")
    dir_base = os.path.dirname(app_conf_path)
    files_to_parse = [app_conf_path]
    vars = dict()
    while len(files_to_parse) != 0:
        path = files_to_parse.pop()
        with open(path) as f:
            f.seek(0)  # Ensure we are reading from the start of the file.
            for line in f:
                if comment_regex.match(line) != None:
                    continue
                include_match = include_regex.match(line)
                if include_match != None:
                    assert include_match is not None  # Appease mypy.
                    include_path = include_match.group(1)
                    if include_path == None:
                        errorexit(
                            f"ERROR: include_regex matched on {line} but found no file path"
                        )
                    files_to_parse.append(os.path.join(dir_base, include_path))
                    continue
                match = env_var_regex.match(line)
                if match == None:
                    continue
                assert match is not None  # Appease mypy.
                var = match.group(1)
                if var == None:
                    continue
                vars[var] = ServerVar(var, line.split("=")[0].strip(), path)
    return vars