def cut_by_plane(self, plane, inverted=False):
        '''
        Like cut_across_axis, but works with an arbitrary plane. Keeps
        vertices that lie in front of the plane (i.e. in the direction
        of the plane normal).

        inverted: When `True`, invert the logic, to keep the vertices
          that lie behind the plane instead.

        Return the original indices of the kept vertices.

        '''
        vertices_to_keep = plane.points_in_front(self.v, inverted=inverted, ret_indices=True)

        self.keep_vertices(vertices_to_keep)

        return vertices_to_keep