// Test attribute-property transparency
  public boolean doTestAttributesTransparency(ValueHolder vh, UIComponent newComp) {
    assertEquals(vh.getValue(), (String) newComp.getAttributes().get("value"));
    vh.setValue("foo");
    assertEquals("foo", (String) newComp.getAttributes().get("value"));
    vh.setValue(null);
    assertNull((String) newComp.getAttributes().get("value"));
    newComp.getAttributes().put("value", "bar");
    assertEquals("bar", vh.getValue());
    newComp.getAttributes().put("value", null);
    assertNull(vh.getValue());

    assertEquals(vh.getConverter(), (String) newComp.getAttributes().get("converter"));
    vh.setConverter(new LongConverter());
    assertNotNull((Converter) newComp.getAttributes().get("converter"));
    assertTrue(newComp.getAttributes().get("converter") instanceof LongConverter);
    vh.setConverter(null);
    assertNull(newComp.getAttributes().get("converter"));
    newComp.getAttributes().put("converter", new ShortConverter());
    assertNotNull(vh.getConverter());
    assertTrue(vh.getConverter() instanceof ShortConverter);
    newComp.getAttributes().put("converter", null);
    assertNull(vh.getConverter());

    return true;
  }
 // Populate a pristine component to be used in state holder tests
 @Override
 protected void populateComponent(UIComponent component) {
   super.populateComponent(component);
   ValueHolder vh = (ValueHolder) component;
   vh.setValue("component value");
   vh.setConverter(createNumberConverter());
 }
  // Test setting properties to valid values
  public void testPropertiesValid() throws Exception {
    super.testPropertiesValid();
    ValueHolder vh = (ValueHolder) component;

    // value
    vh.setValue("foo.bar");
    assertEquals("expected value", "foo.bar", vh.getValue());
    vh.setValue(null);
    assertNull("erased value", vh.getValue());

    // converter
    vh.setConverter(new LongConverter());
    assertTrue("expected converter", vh.getConverter() instanceof LongConverter);
    vh.setConverter(null);
    assertNull("erased converter", vh.getConverter());
  }