def add_edge_end_unused(intersection, duplicates, intersections):
    """Add intersection that is ``COINCIDENT_UNUSED`` but on an edge end.

    This is a helper for :func:`~._py_triangle_intersection.add_intersection`.
    It assumes that

    * ``intersection`` will have at least one of ``s == 0.0`` or ``t == 0.0``
    * A "misclassified" intersection in ``intersections`` that matches
      ``intersection`` will be the "same" if it matches both ``index_first``
      and ``index_second`` and if it matches the start index exactly

    Args:
        intersection (.Intersection): An intersection to be added.
        duplicates (List[.Intersection]): List of duplicate intersections.
        intersections (List[.Intersection]): List of "accepted" (i.e.
            non-duplicate) intersections.
    """
    found = None
    for other in intersections:
        if (intersection.index_first == other.index_first and intersection.
            index_second == other.index_second):
            if intersection.s == 0.0 and other.s == 0.0:
                found = other
                break
            if intersection.t == 0.0 and other.t == 0.0:
                found = other
                break
    if found is not None:
        intersections.remove(found)
        duplicates.append(found)
    intersections.append(intersection)
