def METHOD_NAME(self, metafunc):
    """
    Perform the parametrisation over the test cases, performing the
    explicit broadcasting into separate test cases when required.
    We detect whether to perform explicit broadcasting over one of the
    arguments of the `_Case` by looking for a singular/plural name of the
    parameter in the test.  If the parameter is singular, then we manually
    perform the broadcasting rule for that fixture, and parametrise over
    the resulting list, taking care to pick out the correct parts of the
    reference array.
    """
    cases = _known_cases
    op_name, state_name = 'operator', 'state'
    if op_name not in metafunc.fixturenames:
        op_name += 's'
    else:
        cases = [_Case(op, case.state, expected)
                 for case in cases
                 for op, expected in zip(case.operator, case.expected)]
    if state_name not in metafunc.fixturenames:
        state_name += 's'
    else:
        cases = [_Case(case.operator, state, expected)
                 for case in cases
                 for state, expected in zip(case.state, case.expected.T)]
    metafunc.parametrize([op_name, state_name, 'expected'], cases,
                         ids=[_case_id(case) for case in cases])