@Test
  public void testPurgeCycles() throws Exception {
    Map<KbaChangeSetQualifier, KbaChangeSet> map = Maps.newHashMap();
    KbaChangeSetQualifier addKey = ADD_Q_CURRENT_PLATFORM;
    KbaChangeSetQualifier remKey = REM_Q_CURRENT_PLATFORM;
    KbaBinding fooCommand =
        new KbaBinding("Ctrl+Alt+F", "com.google.FooCommand", Maps.<String, String>newHashMap());
    KbaBinding barCommand =
        new KbaBinding("Ctrl+Alt+G", "com.google.BarCommand", Maps.<String, String>newHashMap());
    Iterable<KbaBinding> bindingListToAdd = Lists.newArrayList(fooCommand, barCommand);
    Iterable<KbaBinding> bindingListToRem = Lists.newArrayList(fooCommand);
    KbaChangeSet changeSetToAdd = new KbaChangeSet(addKey, bindingListToAdd);
    KbaChangeSet changeSetToRem = new KbaChangeSet(remKey, bindingListToRem);

    map.put(addKey, changeSetToAdd);
    map.put(remKey, changeSetToRem);

    Assert.assertTrue(map.get(addKey).getBindingList().contains(fooCommand));
    Assert.assertTrue(map.get(addKey).getBindingList().contains(barCommand));
    Assert.assertTrue(map.get(remKey).getBindingList().contains(fooCommand));
    Map<KbaChangeSetQualifier, KbaChangeSet> result = KbaBootstrapper.purgeCycles(map);
    Assert.assertTrue(result.get(addKey).getBindingList().contains(fooCommand));
    Assert.assertTrue(result.get(addKey).getBindingList().contains(barCommand));
    Assert.assertFalse(result.get(remKey).getBindingList().contains(fooCommand));
  }