In order to avoid duplicated code paths, I talked with Lennart about creating (and, before returning, destroying) an EnabledContext if one wasn't passed in. He said that would be okay. It should be extremely rarely used in practice.