def METHOD_NAME() -> Tuple[Dict[str, List[str]], List[str]]:
    """Creates an adjaceny list considering services as node and dependencies
    as edges.
    Returns:
        tuple(dict, list(str)). Adjancency list of the graph formed with
        services as nodes and dependencies as edges, list of all the services.
    """
    adj_list = collections.defaultdict(list)
    nodes_list = []
    for dirname in DIRECTORY_NAMES:
        for root, _, filenames in os.walk(dirname):
            for filename in filenames:
                if filename.endswith(SERVICE_FILES_SUFFICES):
                    nodes_list.append(filename)
                    filepath = os.path.join(root, filename)
                    with utils.open_file(filepath, 'r') as f:
                        file_lines = f.readlines()
                    dep_lines = ''
                    index = 0
                    while index < len(file_lines):
                        line = file_lines[index]
                        if line.startswith('require'):
                            while not line.endswith(';\n'):
                                dep_lines = dep_lines + line
                                index += 1
                                line = file_lines[index]
                            dep_lines = dep_lines + line
                            index += 1
                        elif line.startswith('import'):
                            while not line.endswith(';\n'):
                                index += 1
                                line = file_lines[index]
                                if '\'' in line:
                                    break
                            dep_lines = dep_lines + (
                                'require (' + line[
                                    line.find('\''):line.rfind('\'') + 1
                                    ] + ');\n')
                            index += 1
                        else:
                            index += 1
                    parsed_script = esprima.parseScript(dep_lines, comment=True)
                    parsed_nodes = parsed_script.body
                    for parsed_node in parsed_nodes:
                        # We make sure that 'dep_lines' contains only the
                        # expressions beginning with the 'require' keyword.
                        # Hence the below assert statements always hold.
                        assert parsed_node.type == 'ExpressionStatement'
                        assert parsed_node.expression.callee.name == (
                            'require')
                        arguments = parsed_node.expression.arguments
                        for argument in arguments:
                            dep_path = argument.value
                            if argument.operator == '+':
                                dep_path = (
                                    argument.left.value +
                                    argument.right.value)
                            if not dep_path.endswith('.ts'):
                                dep_path = dep_path + '.ts'
                            if dep_path.endswith(SERVICE_FILES_SUFFICES):
                                dep_name = os.path.basename(dep_path)
                                adj_list[dep_name].append(filename)
    return (adj_list, nodes_list)