private Set<String> getIndexSequencesWithMinimumEditDistance(int minimumDistance) { Set<String> sequences = new HashSet<>(); List<PoolableElementView> views = getPoolDilutions().stream().map(PoolDilution::getPoolableElementView).collect(Collectors.toList()); if (minimumDistance > 1 && views.stream().allMatch(PoolImpl::hasFakeSequence)) return Collections.emptySet(); for (int i = 0; i < views.size(); i++) { String sequence1 = getCombinedIndexSequences(views.get(i)); if (sequence1.length() == 0) { continue; } for (int j = i + 1; j < views.size(); j++) { String sequence2 = getCombinedIndexSequences(views.get(j)); if (sequence2.length() == 0 || !isCheckNecessary(views.get(i), views.get(j), minimumDistance)) { continue; } if (Index.checkEditDistance(sequence1, sequence2) < minimumDistance) { sequences.add(sequence1); sequences.add(sequence2); } } } return sequences; }