public static <E> DequePush<E> push(Deque<E> stack, E elem) {
		return new DequePush<>(stack, elem);
	}
Push an element to the given stack
@param stack the stack
@param elem the element
@return a context used to pop the element

This is an idiomatic convenience, as in a try-with-resources block:
<pre>
{@code
Deque<String> stack = new LinkedList<>();
try(DequePush<?> p = DequePush.push(stack, "Hello, World!\n")) {
    System.out.println(stack.peek());
}
}
</pre>

This idiom can be very useful if there is complex logic between the push and pop. It's easy
to forget to pop; however, this convenience comes at the cost of a heap allocation.
Ghidra/Framework/Generic/src/main/java/generic/util/DequePush.java