docs: public String describe(Session session) {
  
          StringBuffer sb;
          String       temp;
          Index        index;
          Index        primaryIndex;
          int[]        primaryKey;
          boolean      hidden;
          boolean      fullScan;
  
          sb           = new StringBuffer();
          index        = rangeIndex;
          primaryIndex = rangeTable.getPrimaryIndex();
          primaryKey   = rangeTable.getPrimaryKey();
          hidden       = false;
          fullScan     = (indexCondition == null && indexEndCondition == null);
  
          if (index == null) {
              index = primaryIndex;
          }
  
          if (index == primaryIndex && primaryKey.length == 0) {
              hidden   = true;
              fullScan = true;
          }
  
          sb.append(super.toString()).append('\n');
          sb.append("table=[").append(rangeTable.getName().name).append("]\n");
  
          if (tableAlias != null) {
              sb.append("alias=[").append(tableAlias.name).append("]\n");
          }
  
          sb.append("access=[").append(fullScan ? "FULL SCAN"
                                                : "INDEX PRED").append("]\n");
          sb.append("index=[");
          sb.append(index == null ? "NONE"
                                  : index.getName() == null ? "UNNAMED"
                                                            : index.getName()
                                                            .name);
          sb.append(hidden ? "[HIDDEN]]\n"
                           : "]\n");
  
          temp = "INNER";
  
          if (isLeftJoin) {
              temp = "LEFT OUTER";
  
              if (isRightJoin) {
                  temp = "FULL";
              }
          } else if (isRightJoin) {
              temp = "RIGHT OUTER";
          }
  
          sb.append("joinType=[").append(temp).append("]\n");
  
          temp = indexCondition == null ? "null"
                                        : indexCondition.describe(session);
  
          if (findFirstExpressions != null) {
              StringBuffer sbt = new StringBuffer();
  
              for (int i = 0; i < multiColumnCount; i++) {
                  sbt.append(findFirstExpressions[i].describe(session));
              }
  
              temp = sbt.toString();
          }
  
          sb.append("eStart=[").append(temp).append("]\n");
  
          temp = indexEndCondition == null ? "null"
                                           : indexEndCondition.describe(session);
  
          sb.append("eEnd=[").append(temp).append("]\n");
  
          temp = nonIndexJoinCondition == null ? "null"
                                               : nonIndexJoinCondition.describe(
                                               session);
  
          sb.append("eAnd=[").append(temp).append("]");
  
          return sb.toString();
      }