public void testSerialize() {
    String s =
        "aced0005737200206a6176612e6265616e732e50726f70657274794368616e67"
            + "65537570706f727458d5d264574860bb03000349002a70726f706572747943686"
            + "16e6765537570706f727453657269616c697a65644461746156657273696f6e4c"
            + "00086368696c6472656e7400154c6a6176612f7574696c2f486173687461626c6"
            + "53b4c0006736f757263657400124c6a6176612f6c616e672f4f626a6563743b78"
            + "7000000002737200136a6176612e7574696c2e486173687461626c6513bb0f252"
            + "14ae4b803000246000a6c6f6164466163746f724900097468726573686f6c6478"
            + "703f4000000000000877080000000b00000001740001617371007e00000000000"
            + "2707400046265616e7372003a6c6962636f72652e6a6176612e7574696c2e6265"
            + "616e732e50726f70657274794368616e6765537570706f7274546573742445766"
            + "56e744c6f67b92667637d0b6f450200024c00036c6f677400104c6a6176612f75"
            + "74696c2f4c6973743b4c00046e616d657400124c6a6176612f6c616e672f53747"
            + "2696e673b7870737200136a6176612e7574696c2e41727261794c6973747881d2"
            + "1d99c7619d03000149000473697a6578700000000077040000000a7874000b6c6"
            + "97374656e6572546f4171007e000c70787871007e00087371007e00097371007e"
            + "000d0000000077040000000a7874000d6c697374656e6572546f416c6c7078";

    Object bean = "bean";
    PropertyChangeSupport support = new PropertyChangeSupport(bean);
    EventLog listenerToAll = new EventLog();
    listenerToAll.name = "listenerToAll";
    EventLog listenerToA = new EventLog();
    listenerToA.name = "listenerToA";
    support.addPropertyChangeListener(listenerToAll);
    support.addPropertyChangeListener("a", listenerToA);
    support.addPropertyChangeListener("a", listenerToA);

    new SerializationTester<PropertyChangeSupport>(support, s) {
      @Override
      protected boolean equals(PropertyChangeSupport a, PropertyChangeSupport b) {
        return describe(a.getPropertyChangeListeners())
            .equals(describe(b.getPropertyChangeListeners()));
      }

      @Override
      protected void verify(PropertyChangeSupport deserialized) {
        assertEquals(
            "[a to listenerToA, a to listenerToA, listenerToAll]",
            describe(deserialized.getPropertyChangeListeners()));
      }
    }.test();
  }