private static boolean extractHeadsHelper(final KAFDocument document, final Term term, final java.util.function.Predicate<Term> predicate, final Collection<Term> result) { final String pos = extendedPos(document, term); boolean accepted = false; if (pos.startsWith("V")) { final Term srlHead = syntacticToSRLHead(document, term); if (!term.equals(srlHead)) { accepted = extractHeadsHelper(document, srlHead, predicate, result); } } if (!accepted && (predicate == null || predicate.test(term))) { result.add(term); accepted = true; } if (accepted) { for (final Dep dep : document.getDepsFromTerm(term)) { if (dep.getRfunc().toUpperCase().contains("COORD")) { extractHeadsHelper(document, dep.getTo(), predicate, result); } } } else { for (final Dep dep : document.getDepsFromTerm(term)) { extractHeadsHelper(document, dep.getTo(), predicate, result); } } return accepted; }