code: @Override
  	public void visit(LogicalCriterion criterion, Object context) {
  		LogicalCriterionDto clone = new LogicalCriterionDto(criterion.getOperator());
  		List<Criterion> clonedChildren = new ArrayList<Criterion>(criterion.getChildren().size());
  		for (Criterion criterionDto : criterion.getChildren()) {
  			clonedChildren.add(clone((CriterionDto) criterionDto));
  		}
  		clone.setChildren(clonedChildren);
  		((CriterionContext) context).setCriterion(clone);
  	}
docs: ------------------------------------------------------------------------