def METHOD_NAME(param_shape):
    if param_shape == "static_shape":
        shape = [16]
        ndim = -1
    elif param_shape == "dynamic_shape":
        shape = [tir.Var("N", "int64")]
        ndim = -1
    elif param_shape == "ndim":
        shape = None
        ndim = 1
    elif param_shape == "arbitrary":
        shape = None
        ndim = -1
    else:
        raise ValueError(f"Unknown param_shape: {param_shape}")
    @R.function
    def before(A: R.Shape(shape, ndim=ndim)):
        R.func_attr({"global_symbol": "main"})
        B: R.Shape(shape, ndim=ndim) = A
        return B
    @R.function
    def expected() -> R.Shape([16]):
        R.func_attr({"global_symbol": "main"})
        B = R.ShapeExpr([16])
        return B
    after = before.bind_params({"A": relax.ShapeExpr([16])})
    tvm.ir.assert_structural_equal(expected, after)