def fill_holes(self, hole_size, inplace=False):  # pragma: no cover
        """
        Fill holes in a vtki.PolyData or vtk.vtkPolyData object.

        Holes are identified by locating boundary edges, linking them together
        into loops, and then triangulating the resulting loops. Note that you
        can specify an approximate limit to the size of the hole that can be
        filled.

        Parameters
        ----------
        hole_size : float
            Specifies the maximum hole size to fill. This is represented as a
            radius to the bounding circumsphere containing the hole. Note that
            this is an approximate area; the actual area cannot be computed
            without first triangulating the hole.

        inplace : bool, optional
            Return new mesh or overwrite input.

        Returns
        -------
        mesh : vtki.PolyData
            Mesh with holes filled.  None when inplace=True

        """
        logging.warning('vtki.pointset.PolyData.fill_holes is known to segfault. ' +
                        'Use at your own risk')
        fill = vtk.vtkFillHolesFilter()
        fill.SetHoleSize(hole_size)
        fill.SetInputData(self)
        fill.Update()

        mesh = _get_output(fill)
        if inplace:
            self.overwrite(mesh)
        else:
            return mesh