ExecutionContext { public void removeProperty(String key) { ExecutionContextProperty property = this.properties.get(key); if (property != null && property.isFinal()) { throw new PropertyIsFinalException(key); } this.properties.remove(key); }  Object getProperty(String key); DeclarationBuilder newProperty(String key); boolean hasProperty(String key); Map<String, Object> getProperties(); void removeProperty(String key); void setProperty(String key, Object value); void setProperties(Map<String, Object> properties); void inheritFrom(ExecutionContext executionContext);  }
@Test void removeProperty() { ExecutionContext context = new ExecutionContext(); context.setProperty("key", "value"); assertEquals("value", context.getProperty("key")); context.removeProperty("key"); assertNull(context.getProperty("key")); }
@Test void removeUnexistingProperty() { ExecutionContext context = new ExecutionContext(); context.removeProperty("doesnotexist"); }