docs: public T visitBinaryExpression(BinaryExpression elm, C context) {
          if (elm instanceof Add) return visitAdd((Add)elm, context);
          else if (elm instanceof After) return visitAfter((After)elm, context);
          else if (elm instanceof And) return visitAnd((And)elm, context);
          else if (elm instanceof Before) return visitBefore((Before)elm, context);
          else if (elm instanceof Contains) return visitContains((Contains)elm, context);
          else if (elm instanceof Collapse) return visitCollapse((Collapse)elm, context);
          else if (elm instanceof DifferenceBetween) return visitDifferenceBetween((DifferenceBetween)elm, context);
          else if (elm instanceof Divide) return visitDivide((Divide)elm, context);
          else if (elm instanceof DurationBetween) return visitDurationBetween((DurationBetween)elm, context);
          else if (elm instanceof Ends) return visitEnds((Ends)elm, context);
          else if (elm instanceof Equal) return visitEqual((Equal)elm, context);
          else if (elm instanceof Equivalent) return visitEquivalent((Equivalent)elm, context);
          else if (elm instanceof Greater) return visitGreater((Greater)elm, context);
          else if (elm instanceof GreaterOrEqual) return visitGreaterOrEqual((GreaterOrEqual)elm, context);
          else if (elm instanceof In) return visitIn((In)elm, context);
          else if (elm instanceof IncludedIn) return visitIncludedIn((IncludedIn)elm, context);
          else if (elm instanceof Includes) return visitIncludes((Includes)elm, context);
          else if (elm instanceof Indexer) return visitIndexer((Indexer)elm, context);
          else if (elm instanceof Less) return visitLess((Less)elm, context);
          else if (elm instanceof LessOrEqual) return visitLessOrEqual((LessOrEqual)elm, context);
          else if (elm instanceof Log) return visitLog((Log)elm, context);
          else if (elm instanceof Meets) return visitMeets((Meets)elm, context);
          else if (elm instanceof MeetsAfter) return visitMeetsAfter((MeetsAfter)elm, context);
          else if (elm instanceof MeetsBefore) return visitMeetsBefore((MeetsBefore)elm, context);
          else if (elm instanceof Modulo) return visitModulo((Modulo)elm, context);
          else if (elm instanceof Multiply) return visitMultiply((Multiply)elm, context);
          else if (elm instanceof NotEqual) return visitNotEqual((NotEqual)elm, context);
          else if (elm instanceof Or) return visitOr((Or)elm, context);
          else if (elm instanceof Overlaps) return visitOverlaps((Overlaps)elm, context);
          else if (elm instanceof OverlapsAfter) return visitOverlapsAfter((OverlapsAfter)elm, context);
          else if (elm instanceof OverlapsBefore) return visitOverlapsBefore((OverlapsBefore)elm, context);
          else if (elm instanceof Power) return visitPower((Power)elm, context);
          else if (elm instanceof ProperContains) return visitProperContains((ProperContains)elm, context);
          else if (elm instanceof ProperIn) return visitProperIn((ProperIn)elm, context);
          else if (elm instanceof ProperIncludedIn) return visitProperIncludedIn((ProperIncludedIn)elm, context);
          else if (elm instanceof ProperIncludes) return visitProperIncludes((ProperIncludes)elm, context);
          else if (elm instanceof SameAs) return visitSameAs((SameAs)elm, context);
          else if (elm instanceof SameOrAfter) return visitSameOrAfter((SameOrAfter)elm, context);
          else if (elm instanceof SameOrBefore) return visitSameOrBefore((SameOrBefore)elm, context);
          else if (elm instanceof Starts) return visitStarts((Starts)elm, context);
          else if (elm instanceof Subtract) return visitSubtract((Subtract)elm, context);
          else if (elm instanceof Times) return visitTimes((Times)elm, context);
          else if (elm instanceof TruncatedDivide) return visitTruncatedDivide((TruncatedDivide)elm, context);
          else if (elm instanceof Xor) return visitXor((Xor)elm, context);
          else return null;
      }