def METHOD_NAME(nw: NodeWrangler, length, scale):
    geometry = nw.new_node(Nodes.GroupInput, expose_input=[('NodeSocketGeometry', 'Geometry', None)])
    wave = nw.new_node(Nodes.WaveTexture, input_kwargs={
        'Scale': log_uniform(5, 10),
        'Distortion': uniform(5, 10),
        'Detail Scale': 2, }, attrs={'bands_direction': 'Z', 'wave_profile': 'SAW'}).outputs['Fac']
    selection = nw.compare('LESS_THAN', nw.separate(nw.new_node(Nodes.InputPosition))[-1],
                           -uniform(.3, .7) * length)
    normal = nw.vector_math('NORMALIZE', nw.add(nw.new_node(Nodes.InputNormal), (0, 0, 2)))
    geometry = nw.new_node(Nodes.SetPosition,
                           [geometry, selection, None, nw.scale(nw.scale(wave, scale), normal)])
    nw.new_node(Nodes.GroupOutput, input_kwargs={'Geometry': geometry})