@Test
  public void testCombo() {

    Iterable<EclBinding> sysBs =
        Lists.newArrayList(
            sysBinding("key0", "cid0"),
            sysBinding("key1", "cid1"),
            sysBinding("key5", "cid1"),
            sysBinding("key4", "cid4", CURRENT_PLATFORM));

    Iterable<EclBinding> userBs =
        Lists.newArrayList(
            remBinding("key1"),
            remBinding("key4"),
            usrBinding("key2", "cid2"),
            usrBinding("key2", "cid2"), // Should be uniquified in the process
            usrBinding("key3", "cid3"));

    Map<KbaChangeSetQualifier, KbaChangeSet> systemBindings =
        KbaBootstrapper.buildSystemBindingsMap(sysBs);

    Map<KbaChangeSetQualifier, KbaChangeSet> userBindings =
        KbaBootstrapper.buildUserBindingsMap(
            CURRENT_PLATFORM, systemBindings, userBs, new MechanicLog(new EmptyLog()));

    KbaChangeSet actualSysBindings = systemBindings.get(ADD_Q_NULL_PLATFORM);
    Assert.assertEquals(3, actualSysBindings.getBindingList().size());

    KbaChangeSet actualSysBindingsCurrentPlatform = systemBindings.get(ADD_Q_CURRENT_PLATFORM);
    Assert.assertEquals(1, actualSysBindingsCurrentPlatform.getBindingList().size());

    KbaChangeSet actualUserAddBindings = userBindings.get(ADD_Q_NULL_PLATFORM);
    Assert.assertEquals(2, actualUserAddBindings.getBindingList().size());

    KbaChangeSet actualUserRemBindings = userBindings.get(REM_Q_NULL_PLATFORM);
    Assert.assertEquals(2, actualUserRemBindings.getBindingList().size());

    Set<KbaBinding> actualRemoved = Sets.newHashSet(actualUserRemBindings.getBindingList());
    Set<KbaBinding> expectedRemoved =
        Sets.newHashSet(
            new KbaBinding("key1", "cid1", Maps.<String, String>newHashMap()),
            new KbaBinding("key4", "cid4", Maps.<String, String>newHashMap()));
    Assert.assertEquals(expectedRemoved, actualRemoved);

    Assert.assertEquals(Action.REMOVE, actualUserRemBindings.getAction());
  }