DefaultExecutionContextManager implements ExecutionContextManager { @Override public void pushContext(ExecutionContext context, boolean inherit) throws ExecutionContextException { this.execution.pushContext(context, inherit); if (!inherit) { runInitializers(context); } }  @Override ExecutionContext clone(ExecutionContext context); @Override void initialize(ExecutionContext context); @Override void pushContext(ExecutionContext context, boolean inherit); @Override void popContext();  }
@Test void pushContext() throws ExecutionContextException { ReflectionUtils.setFieldValue(contextManager, "execution", execution); execution.pushContext(new ExecutionContext()); execution.getContext().newProperty("inherited").inherited().initial("value").declare(); contextManager.pushContext(new ExecutionContext(), true); assertNull(execution.getContext().getProperty("key")); assertNotNull(execution.getContext().getProperty("inherited")); contextManager.pushContext(new ExecutionContext(), false); assertEquals("value", ((List<String>) execution.getContext().getProperty("key")).get(0)); assertNull(execution.getContext().getProperty("inherited")); }