def find_surrounding(span, spans):
    """Finds the span in spans that best surrounds span.
   
    Args:
        span (Span): Span to surround.
        spans (List[Span]): Surrounding candidates.
        
    Returns:
        (Span): Surrounding span.
    """
    mid = (span.start + span.end) // 2
    return max((s for s in spans if s.start < mid < s.end),
               key=lambda _s: min(_s.end - mid, mid - _s.start))