def METHOD_NAME(nw: NodeWrangler, extrude_scale=1):
    geometry = nw.new_node(Nodes.GroupInput, expose_input=[('NodeSocketGeometry', 'Geometry', None)])
    face_area = nw.new_node(Nodes.InputMeshFaceArea)
    tops = []
    extrude_configs = [(uniform(.2, .3), .8, .4), (.6, .2, .6)]
    top_facing = nw.compare_direction('LESS_THAN', nw.new_node(Nodes.InputNormal), (0, 0, 1), np.pi * 2 / 3)
    for prob, extrude, scale in extrude_configs:
        extrude = extrude * extrude_scale
        face_area_stats = nw.new_node(Nodes.AttributeStatistic, [geometry, None, face_area],
                                      attrs={'domain': 'FACE'}).outputs
        selection = reduce(lambda *xs: nw.boolean_math('AND', *xs), [top_facing, nw.bernoulli(prob),
            nw.compare('GREATER_THAN', face_area, face_area_stats['Mean'])])
        geometry, top, side = nw.new_node(Nodes.ExtrudeMesh, [geometry, selection, None,
            nw.uniform(extrude * .5, extrude)]).outputs
        geometry = nw.new_node(Nodes.ScaleElements, [geometry, top, nw.uniform(scale * .5, scale)])
        tops.append(top)
    geometry = nw.new_node(Nodes.StoreNamedAttribute,
                           [geometry, 'top', None, reduce(lambda *xs: nw.boolean_math('OR', *xs), tops)])
    nw.new_node(Nodes.GroupOutput, input_kwargs={"Geometry": geometry})