### Question:
FieldLineageInfo { public Map<EndPointField, Set<EndPointField>> getIncomingSummary() { if (incomingSummary == null) { incomingSummary = computeIncomingSummary(); } return incomingSummary; } FieldLineageInfo(Collection<? extends Operation> operations);  FieldLineageInfo(Collection<? extends Operation> operations, boolean computeSummaries); long getChecksum(); Set<Operation> getOperations(); Map<EndPoint, Set<String>> getDestinationFields(); Map<EndPointField, Set<EndPointField>> getIncomingSummary(); Map<EndPointField, Set<EndPointField>> getOutgoingSummary(); Set<EndPoint> getSources(); Set<EndPoint> getDestinations(); static List<Operation> getTopologicallySortedOperations(Set<Operation> operations); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test(timeout = 10000) public void testLargeLineageOperation() { List<String> inputs = new ArrayList<>(); for (int i = 0; i < 100; i++) { inputs.add("num" + i); } List<Operation> operations = new ArrayList<>(); operations.add(new ReadOperation("read", "Read from something", EndPoint.of("start"), inputs)); generateLineage(inputs, operations, "first identity", "read", "alltoall1"); generateLineage(inputs, operations, "second identity", "alltoall1", "alltoall2"); generateLineage(inputs, operations, "third identity", "alltoall2", "alltoall3"); generateLineage(inputs, operations, "forth identity", "alltoall3", "alltoall4"); generateLineage(inputs, operations, "fifth identity", "alltoall4", "alltoall5"); List<InputField> newList = new ArrayList<>(); inputs.forEach(s -> newList.add(InputField.of("alltoall5", s))); WriteOperation operation = new WriteOperation("Write", "", EndPoint.of("dest"), newList); operations.add(operation); FieldLineageInfo info = new FieldLineageInfo(operations); Assert.assertNotNull(info); Set<EndPointField> relatedSources = new HashSet<>(); Map<EndPointField, Set<EndPointField>> expectedIncoming = new HashMap<>(); for (int i = 0; i < inputs.size(); i++) { relatedSources.add(new EndPointField(EndPoint.of("start"), "num" + i)); } for (int i = 0; i < inputs.size(); i++) { EndPointField key = new EndPointField(EndPoint.of("dest"), "num" + i); expectedIncoming.put(key, relatedSources); } Assert.assertEquals(expectedIncoming, info.getIncomingSummary()); }