docs: private String describeImpl(Session session) throws Exception {
  
          StringBuffer sb;
  
          sb = new StringBuffer();
  
          switch (type) {
  
              case StatementTypes.SELECT_CURSOR : {
                  sb.append(queryExpression.describe(session));
                  appendParms(sb).append('\n');
                  appendSubqueries(session, sb);
  
                  return sb.toString();
              }
              case StatementTypes.INSERT : {
                  if (queryExpression == null) {
                      sb.append("INSERT VALUES");
                      sb.append('[').append('\n');
                      appendMultiColumns(sb, insertColumnMap).append('\n');
                      appendTable(sb).append('\n');
                  }
                  else {
                      sb.append("INSERT SELECT");
                      sb.append('[').append('\n');
                      appendColumns(sb, insertColumnMap).append('\n');
                      appendTable(sb).append('\n');
                      sb.append(queryExpression.describe(session)).append('\n');
                  }
                  appendParms(sb).append('\n');
                  appendSubqueries(session, sb).append(']');
  
                  return sb.toString();
              }
              case StatementTypes.UPDATE_WHERE : {
                  sb.append("UPDATE");
                  sb.append('[').append('\n');
                  appendColumns(sb, updateColumnMap).append('\n');
                  appendTable(sb).append('\n');
                  appendCondition(session, sb);
                  for (RangeVariable trv : targetRangeVariables) {
                      sb.append(trv.describe(session)).append('\n');
                  }
                  appendParms(sb).append('\n');
                  appendSubqueries(session, sb).append(']');
  
                  return sb.toString();
              }
              case StatementTypes.DELETE_WHERE : {
                  sb.append("DELETE");
                  sb.append('[').append('\n');
                  appendTable(sb).append('\n');
                  appendCondition(session, sb);
                  for (RangeVariable trv : targetRangeVariables) {
                      sb.append(trv.describe(session)).append('\n');
                  }
                  appendParms(sb).append('\n');
                  appendSubqueries(session, sb).append(']');
  
                  return sb.toString();
              }
              case StatementTypes.CALL : {
                  sb.append("CALL");
                  sb.append('[').append(']');
  
                  return sb.toString();
              }
              case StatementTypes.MERGE : {
                  sb.append("MERGE");
                  sb.append('[').append('\n');
                  appendMultiColumns(sb, insertColumnMap).append('\n');
                  appendColumns(sb, updateColumnMap).append('\n');
                  appendTable(sb).append('\n');
                  appendCondition(session, sb);
                  for (RangeVariable trv : targetRangeVariables) {
                      sb.append(trv.describe(session)).append('\n');
                  }
                  appendParms(sb).append('\n');
                  appendSubqueries(session, sb).append(']');
  
                  return sb.toString();
              }
              default : {
                  return "UNKNOWN";
              }
          }
      }