code: private void visit(Condition condition, Visitor<Condition> visitor)
     {
        visitor.visit(condition);
  
        if (condition instanceof CompositeCondition) {
           if (((CompositeCondition) condition).getConditions() != null) {
              for (Condition child : ((CompositeCondition) condition).getConditions()) {
                 visit(child, visitor);
              }
           }
        }
     }
docs: Method to call the visitor for the supplied {@link Condition} and recursively calls itself, if the
  {@link Condition} is a {@link CompositeCondition}.