docs: private void validateVeLogNode(VeLogNode node) {
      if (node.getVeDataExpression().getRoot().getType().getKind() != Kind.VE_DATA) {
        reporter.report(
            node.getVeDataExpression().getSourceLocation(),
            INVALID_VE,
            node.getVeDataExpression().getRoot().getType());
      }
      if (node.getLogonlyExpression() != null) {
        // check to see if it is in a msg node.  logonly is disallowed in msg nodes because we don't
        // have an implementation strategy.
        if (isInMsgNode(node)) {
          reporter.report(node.getLogonlyExpression().getSourceLocation(), LOGONLY_DISALLOWED_IN_MSG);
        }
        SoyType type = node.getLogonlyExpression().getType();
        if (type.getKind() != Kind.BOOL) {
          reporter.report(
              node.getLogonlyExpression().getSourceLocation(),
              WRONG_TYPE,
              BoolType.getInstance(),
              type);
        }
      }
    }