@Override
 public Matcher visit(BinaryLogicOperator condition) {
   Matcher leftMatcher = condition.getLeft().accept(this);
   Matcher rightMatcher = condition.getRight().accept(this);
   return new BinaryMatcher(leftMatcher, condition.getPredicate(), rightMatcher);
 }
 @Override
 public Collection<? extends ComplexTypeMetadata> visit(BinaryLogicOperator condition) {
   condition.getLeft().accept(this);
   condition.getRight().accept(this);
   return closure;
 }