A number of functions provide for results to be wrapped in an arbitrary head. This is very important in cases where the results should not be evaluated. Take Level as an example:
expr = Hold[{2/2, g[8/4], 1/0}]; Level[expr, {-2}, Hold] Hold[1/2, 1/4, 1/0]
Cases however provides no such parameter, causing undesired evaluation:
Cases[expr, _Times, 3] Power::infy: Infinite expression 1/0 encountered. >>
{1, 2, ComplexInfinity} (* failure *)
How can this behavior be attained?