public virtual Formula Visit(BinaryFormula formula)
 {
     Visit((Formula)formula);
     if (formula.Left != null) formula.Left.Accept(this);
     if (formula.Right != null) formula.Right.Accept(this);
     return visitor.Visit(formula);
 }
 public Formula Visit(BinaryFormula formula)
 {
     return formula;
 }
 public override Formula Visit(BinaryFormula formula)
 {
     IncreaseIfNecessary(formula.Right, _ => _.TypeDeclaration, increased => formula.Right = increased);
     return base.Visit(formula);
 }