def METHOD_NAME(self, draw):
    def generate_data(*args, **kwargs):
        low, high = -10, 10
        dtype = "float32"
        shape = kwargs["shape"]
        if "low" in kwargs:
            low = kwargs["low"]
        if "high" in kwargs:
            high = kwargs["high"]
        if "dtype" in kwargs:
            dtype = kwargs["dtype"]
        if shape == []:
            if dtype == "int32":
                return np.ones(shape).astype(np.int32)
            elif dtype == "int64":
                return np.ones(shape).astype(np.int64)
            elif dtype == "float32":
                return np.random.random(shape).astype(np.float32)
        else:
            if dtype == "int32":
                if low == high:
                    return low * np.ones(shape).astype(np.int32)
                else:
                    return np.random.randint(low, high,
                                             shape).astype(np.int32)
            elif dtype == "int64":
                if low == high:
                    return low * np.ones(shape).astype(np.int64)
                else:
                    return np.random.randint(low, high,
                                             shape).astype(np.int64)
            elif dtype == "float32":
                return (
                    high - low
                ) * np.random.random(shape).astype(np.float32) + low
    in_shape_tmp = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=8), min_size=4, max_size=4))
    in_shape = draw(st.sampled_from([in_shape_tmp, []]))
    asin_op = OpConfig(
        type="asin",
        inputs={"X": ["input_data"]},
        outputs={"Out": ["output_data"]},
        attrs={})
    program_config = ProgramConfig(
        ops=[asin_op],
        weights={},
        inputs={
            "input_data": TensorConfig(data_gen=partial(
                generate_data, low=-1, high=1, shape=in_shape))
        },
        outputs=["output_data"])
    return program_config