public void testListenerMismatch() {
    TestModel testModel = new TestModel(7);
    Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
    // build a PROPERTY change listener and hack it so we
    // can add it as a STATE change listener
    Object listener =
        ReflectiveChangeListener.buildPropertyChangeListener(
            target, "propertyChangedSingleArgument");
    testModel.addStateChangeListener((StateChangeListener) listener);

    boolean exCaught = false;
    try {
      testModel.setValue(99);
      fail("listener mismatch: " + listener);
    } catch (IllegalArgumentException ex) {
      exCaught = true;
    }
    assertTrue(exCaught);
  }