<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def basic_interior_combine(intersections, max_edges=10):
 """Combine intersections that don't involve tangencies. .. note:: This is a helper used only by :func:`combine_intersections`. .. note:: This helper assumes ``intersections`` isn't empty, but doesn't enforce it. Args: intersections (List[.Intersection]):
 Intersections from each of the 9 edge-edge pairs from a surface-surface pairing. max_edges (Optional[int]):
 The maximum number of allowed / expected edges per intersection. This is to avoid infinite loops. Returns: Tuple[Optional[list], Optional[bool]]: Pair (2-tuple) of * List of "edge info" lists. Each list represents a curved polygon and contains 3-tuples of edge index, start and end (see the output of :func:`ends_to_curve`). * "Contained" boolean. If not :data:`None`, indicates that one of the surfaces is contained in the other. Raises: RuntimeError: If the number of edges in a curved polygon exceeds ``max_edges``. This is interpreted as a sign that the algorithm failed. """

    unused = intersections[:]
    result = []
    while unused:
        start = unused.pop()
        curr_node = start
        next_node = get_next(curr_node, intersections, unused)
        edge_ends = [(curr_node, next_node)]
        while next_node is not start:
            curr_node = to_front(next_node, intersections, unused)
            # NOTE: We also check to break when moving a corner node
            #       to the front. This is because ``intersections``
            #       de-duplicates corners by selecting the one
            #       (of 2 or 4 choices) at the front of segment(s).
            if curr_node is start:
                break

            next_node = get_next(curr_node, intersections, unused)
            edge_ends.append((curr_node, next_node))
            if len(edge_ends) > max_edges:
                raise RuntimeError(
                    "Unexpected number of edges", len(edge_ends)
                )

        edge_info = tuple(
            ends_to_curve(start_node, end_node)
            for start_node, end_node in edge_ends
        )
        result.append(edge_info)
    if len(result) == 1:
        if result[0] in FIRST_SURFACE_INFO:
            return None, True

        elif result[0] in SECOND_SURFACE_INFO:
            return None, False

    return result, None