docs: Expression XreadAllTypesCommonValueExpression(boolean boole) {
  
          Expression e    = XreadAllTypesTerm(boole);
          int        type = 0;
          boolean    end  = false;
  
          while (true) {
              switch (token.tokenType) {
  
                  case Tokens.PLUS :
                      type  = OpTypes.ADD;
                      boole = false;
                      break;
  
                  case Tokens.MINUS :
                      type  = OpTypes.SUBTRACT;
                      boole = false;
                      break;
  
                  case Tokens.CONCAT :
                      type  = OpTypes.CONCAT;
                      boole = false;
                      break;
  
                  case Tokens.OR :
                      if (boole) {
                          type = OpTypes.OR;
  
                          break;
                      }
  
                  // $FALL-THROUGH$
                  default :
                      end = true;
                      break;
              }
  
              if (end) {
                  break;
              }
  
              read();
  
              Expression a = e;
  
              e = XreadAllTypesTerm(boole);
              e = boole ? new ExpressionLogical(type, a, e)
                        : new ExpressionArithmetic(type, a, e);
          }
  
          return e;
      }