def METHOD_NAME(self, draw):
    shape0 = draw(st.integers(min_value=1, max_value=32))
    shape1 = draw(st.integers(min_value=1, max_value=32))
    shape2 = draw(st.integers(min_value=1, max_value=16))
    shape3 = draw(st.integers(min_value=1, max_value=16))
    shape4 = draw(st.integers(min_value=1, max_value=16))
    shape5 = draw(st.integers(min_value=1, max_value=16))
    shape6 = shape4 * shape5
    case = draw(st.sampled_from([1, 2, 3, 4]))
    if case == 1:
        x_num_col_dims = 2
        y_num_col_dims = 1
        shape3 = shape6
        shape2 = shape3
        X_shape = draw(
            st.sampled_from([[shape0, shape5, shape2],
                             [shape0, shape5, shape4, shape5]]))
        Y_shape = draw(
            st.sampled_from([[shape3, shape4, shape5], [shape3, shape5]]))
    if case == 2:
        x_num_col_dims = 2
        y_num_col_dims = 2
        X_shape = draw(
            st.sampled_from([[shape0, shape1, shape6],
                             [shape4, shape5, shape5, shape4]]))
        Y_shape = draw(st.sampled_from([[shape4, shape5, shape5]]))
    if case == 3:
        x_num_col_dims = 1
        y_num_col_dims = 1
        X_shape = draw(st.sampled_from([[shape0, shape4, shape5]]))
        Y_shape = draw(st.sampled_from([[shape6, shape5, shape5]]))
    if case == 4:
        x_num_col_dims = 3
        y_num_col_dims = 2
        X_shape = draw(
            st.sampled_from([[shape0, shape3, shape4, shape6],
                             [shape4, shape6, shape0, shape5, shape4]]))
        Y_shape = draw(st.sampled_from([[shape5, shape4, shape5]]))
    force_fp32_output = draw(st.booleans())
    mul_op = OpConfig(
        type="mul",
        inputs={"X": ["input_data_x"],
                "Y": ["input_data_y"]},
        outputs={"Out": ["output_data"]},
        attrs={
            "x_num_col_dims": x_num_col_dims,
            "y_num_col_dims": y_num_col_dims,
            "force_fp32_output": force_fp32_output
        })
    program_config = ProgramConfig(
        ops=[mul_op],
        weights={},
        inputs={
            "input_data_x": TensorConfig(shape=X_shape),
            "input_data_y": TensorConfig(shape=Y_shape)
        },
        outputs=["output_data"])
    return program_config