Set<M> (C baseClass) { Set<M> result = ConcurrentCollectionFactory.createConcurrentSet(); List<M> memberInfos = getIntermediateMemberInfosList(baseClass); for (int i = 0; i < memberInfos.size(); i++) { final M memberInfo = memberInfos.get(i); final T member = memberInfo.getMember(); for(int j = 0; j < i; j++) { final M memberInfo1 = memberInfos.get(j); final T member1 = memberInfo1.getMember(); if(memberConflict(member1, member)) { result.add(memberInfo); // We let the first one be... // result.add(memberInfo1); } } } return result; }