I donโt know about your domain, but for it to be readable, I would probably delegate and simplify something like this:
return n.getD().stream() .filter(d -> d.getT().containsAC(this)) .findFirst() .orElse(null);
And then in class T add a delegation method:
public boolean containsAC(AC ac) { return m.stream().anyMatch(m -> m.getAC().contains(ac)); }
source share