final UnderTest underTest = new UnderTest();
registerMockRoles(underTest);
underTest.scan(asList(RI1A.class, RI1B.class, RI1C.class,
RI2A.class, RI2B.class, RI2C.class,
RI3A.class, RI3B.class, RI3C.class));
assertSetEquals(underTest.findRoleImplementationsFor(CA1.class, R1.class), asSet(RI1A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CA1.class, R2.class), asSet(RI2A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CA1.class, R3.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CA2.class, R1.class), asSet(RI1A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CA2.class, R2.class), asSet(RI2C.class));
assertSetEquals(underTest.findRoleImplementationsFor(CA2.class, R3.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CA3.class, R1.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CA3.class, R2.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CA3.class, R3.class), asSet(RI3A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB1.class, R1.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CB1.class, R2.class), asSet(RI2B.class, RI2C.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB1.class, R3.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(CB2.class, R1.class), asSet(RI1A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB2.class, R2.class), asSet(RI2C.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB2.class, R3.class), asSet(RI3C.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB3.class, R1.class), asSet(RI1A.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB3.class, R2.class), asSet(RI2A.class, RI2B.class));
assertSetEquals(underTest.findRoleImplementationsFor(CB3.class, R3.class), asSet());
assertSetEquals(underTest.findRoleImplementationsFor(XCA1.class, R1.class), asSet(RI1A.class));
assertSetEquals(underTest.findRoleImplementationsFor(XCA1.class, R2.class), asSet(RI2A.class));
assertSetEquals(underTest.findRoleImplementationsFor(XCA1.class, R3.class), asSet());