@Test
public void setExpressionValue() {

    AbstractFormItem<String> formItem = formItem(true);
    boolean modified = formItem.isModified();
    boolean undefined = formItem.isUndefined();
    formItem.setExpressionValue("${foo:bar}");
    assertNull(formItem.getValue());
    assertEquals("${foo:bar}", formItem.getExpressionValue());
    assertEquals(modified, formItem.isModified());
    assertEquals(undefined, formItem.isUndefined());
    ArgumentMatcher<ExpressionContext> eqExpr = ec -> "${foo:bar}".equals(ec.expression);
    verify(readOnlyAppearance).showExpression("${foo:bar}");
    verify(editingAppearance).showExpression("${foo:bar}");
    verify(readOnlyAppearance).apply(eq(EXPRESSION), argThat(eqExpr));
    verify(editingAppearance).apply(eq(EXPRESSION), argThat(eqExpr));
}