def METHOD_NAME(self, obj, cut_center, cut_normal, noise_strength, noise_scale, radius, is_up=True):
    obj, cut = cut_plane(obj, cut_center, cut_normal, not is_up)
    assign_material(cut, self.material)
    obj = join_objects([obj, cut])
    with butil.ViewportMode(obj, 'EDIT'), butil.Suppress():
        bpy.ops.mesh.select_all(action='SELECT')
        bpy.ops.mesh.region_to_loop()
        bpy.ops.mesh.remove_doubles(threshold=1e-2)
    with butil.ViewportMode(obj, 'EDIT'):
        bpy.ops.mesh.select_all(action='SELECT')
        bpy.ops.mesh.fill_holes()
    metric_fn = lambda nw: nw.dot(nw.sub(nw.new_node(Nodes.InputPosition), cut_center), cut_normal)
    surface.add_geomod(obj, self.geo_cutter, apply=True,
                       input_args=[noise_strength, noise_scale, radius, metric_fn])
    obj = separate_loose(obj)
    surface.add_geomod(obj, self.geo_xyz, apply=True)
    return obj