make yield/push_context methods const because the objects are copyable anyway