def METHOD_NAME(nw: NodeWrangler, tentacles, points_fn=None, density=500, realize=True):
    geometry = nw.new_node(Nodes.GroupInput, expose_input=[('NodeSocketGeometry', 'Geometry', None)])
    tentacles = nw.new_node(Nodes.CollectionInfo, [tentacles, True, True])
    points, normal, rotation = nw.new_node(Nodes.DistributePointsOnFaces,
                                           input_kwargs={'Mesh': geometry, 'Density': density}).outputs
    rotation = nw.new_node(Nodes.RotateEuler,
                           input_kwargs={'Rotation': rotation, 'Angle': nw.uniform(0, 2 * np.pi)},
                           attrs={'type': 'AXIS_ANGLE', 'space': 'LOCAL'})
    points = surface.eval_argument(nw, points_fn, points=points, normal=normal)
    tentacles = nw.new_node(Nodes.InstanceOnPoints, input_kwargs={
        'Points': points,
        'Instance': tentacles,
        'Pick Instance': True,
        'Rotation': rotation,
        'Scale': nw.uniform([.6] * 3, [1.] * 3, data_type='FLOAT_VECTOR')})
    if realize:
        realize_instances = nw.new_node(Nodes.RealizeInstances, input_kwargs={'Geometry': tentacles})
    else:
        realize_instances = tentacles
    group_output = nw.new_node(Nodes.GroupOutput, input_kwargs={'Geometry': realize_instances})