docs: static BaseLongColumnValueSelector makeColumnValueSelectorWithLongDefault(
        final ColumnSelectorFactory metricFactory,
        final ExprMacroTable macroTable,
        @Nullable final String fieldName,
        @Nullable final String fieldExpression,
        final long nullValue
    )
    {
      if ((fieldName == null) == (fieldExpression == null)) {
        throw new IllegalArgumentException("Only one of fieldName and fieldExpression should be non-null");
      }
      if (fieldName != null) {
        return metricFactory.makeColumnValueSelector(fieldName);
      } else {
        final Expr expr = Parser.parse(fieldExpression, macroTable);
        final ColumnValueSelector<ExprEval> baseSelector = ExpressionSelectors.makeExprEvalSelector(metricFactory, expr);
        class ExpressionLongColumnSelector implements LongColumnSelector
        {
          @Override
          public long getLong()
          {
            final ExprEval exprEval = baseSelector.getObject();
            return exprEval.isNumericNull() ? nullValue : exprEval.asLong();
          }
  
          @Override
          public void inspectRuntimeShape(RuntimeShapeInspector inspector)
          {
            inspector.visit("baseSelector", baseSelector);
          }
  
          @Override
          public boolean isNull()
          {
            final ExprEval exprEval = baseSelector.getObject();
            return exprEval == null || exprEval.isNumericNull();
          }
        }
        return new ExpressionLongColumnSelector();
      }
    }