### Question:
Intersection extends ConflictResolutionFunction<List<ValueType>, RecordType, SchemaElementType> { @Override public FusedValue<List<ValueType>, RecordType, SchemaElementType> resolveConflict( Collection<FusibleValue<List<ValueType>, RecordType, SchemaElementType>> values) { if(values==null || values.size() == 0){ return new FusedValue<>(new LinkedList<>()); } Set<ValueType> allValues = null; for (FusibleValue<List<ValueType>, RecordType, SchemaElementType> value : values) { if (allValues == null) { allValues = new HashSet<>(); allValues.addAll(value.getValue()); } else { if(value.getValue()==null) { allValues.clear(); } else { allValues.retainAll(value.getValue()); } } } List<ValueType> intersection = new LinkedList<>(allValues); FusedValue<List<ValueType>, RecordType, SchemaElementType> fused = new FusedValue<>( intersection); for (FusibleValue<List<ValueType>, RecordType, SchemaElementType> value : values) { if(value.getValue()!=null) { for (ValueType v : value.getValue()) { if (allValues.contains(v)) { fused.addOriginalRecord(value); break; } } } } return fused; }  @Override FusedValue<List<ValueType>, RecordType, SchemaElementType> resolveConflict(
			Collection<FusibleValue<List<ValueType>, RecordType, SchemaElementType>> values);  }### Answer:
@Test public void testResolveConflict() { Collection<FusibleValue<List<String>, Record, Attribute>> values = new LinkedList<>(); Intersection<String, Record,Attribute> intersection = new Intersection<>(); FusedValue<List<String>, Record, Attribute> result = intersection.resolveConflict(null); assertEquals(0, result.getValue().size()); result = intersection.resolveConflict(values); assertEquals(0, result.getValue().size()); values.add(new FusibleValue<List<String>,Record,Attribute>(Q.toList("a", "b", "c"), null, null)); result = intersection.resolveConflict(values); assertEquals(Q.toList("a", "b", "c"), result.getValue()); values.add(new FusibleValue<List<String>,Record,Attribute>(Q.toList("a", "d", "e"), null, null)); result = intersection.resolveConflict(values); assertEquals(Q.toList("a"), result.getValue()); values.add(new FusibleValue<List<String>,Record,Attribute>(Q.toList("a", "e", "f"), null, null)); result = intersection.resolveConflict(values); assertEquals(Q.toList("a"), result.getValue()); values.add(new FusibleValue<List<String>,Record,Attribute>(null, null, null)); result = intersection.resolveConflict(values); assertEquals(0, result.getValue().size()); }