Could we maybe use a different name than 'either'? There's nothing in your implementation that precludes the tuple containing more than two items, but the grammar implies a set of two. If we did something like required_params_one or required_params_single, we could support larger sets in the future without any necessary code changes or confusion.