def METHOD_NAME(self, x, y):
    """
    Build a polygon of the boundary of the mesh.
    Arguments:
        :param x: Array of node x position, lenght N
        :param y: Array of node y position, length N
    Returns:
        A `shapely.prepareped.prep` `shapely.Polygon`.
        The boundary of the mesh, ideally including holes in the mesh.
    Algorithms:
    .. note::
        Try this alogrithm: https://stackoverflow.com/a/14109211/377927
        Boundary edges (line between two nodes) are only referenced by a single
        triangle.
        1. Find a starting edge segment: [v_start, v_next] (v is vertex or node)
        2. Find another _unvisited_ edge segment [v_i, v_j] that has
           either v_i = v_next or v_j = v_next and add the one not equal to v_next to the polygon.
        3. Reset v_next to the newly added point. Mark edge as visited.
        4. Continue untill we reach v_start.
        The polygon has a rotation, but this should not matter for our purpose
        of checking the bounds.
        Note: In order to find holes in the polygon all points must be scanned.
    Approximate using the convex hull:
    An alternative simple approximation is to use the convex hull of the
    points, but this will miss points along the boundary which form a
    wedge in the boundary (as well as holes in the mesh).
    Holes in the mesh will often be covered by the landmask anyway, so they
    will usually not be a problem.
    """
    from shapely.geometry import Polygon
    from shapely.prepared import prep
    from scipy.spatial import ConvexHull
    P = np.vstack((x, y)).T
    hull = ConvexHull(P)
    boundary = P[hull.vertices, :]
    boundary = prep(Polygon(boundary))
    return boundary