Thus violates the contract of equals() because it is not reflexive:

    RunListener listener = new RunListener() {};
    SynchronizedRunListener wrappedListener = new SynchronizedRunListener(listener);
    assertTrue(wrappedListener.equals(listener);
    assertFalse(wrappedListener.equals(listener);

You should simply return false here.