@Override public boolean isValid() { Boolean valid = (_alleleValidator == Predicates.TRUE && _alleleSeqValidator == Predicates.<ISeq<A>>True()) ? Boolean.TRUE : _valid; if (valid == null) { final ISeq<A> alleles = stream() .map(Gene::getAllele) .collect(ISeq.toISeq()); valid = _alleleSeqValidator.test(alleles) && alleles.forAll(_alleleValidator); } return _valid = valid; }