docs: private void transfer() {
  
          saveTable();
          updateEnabled(false);
          trace("Start Transfer");
  
          int           TransferIndex = CurrentTransfer;
          int           AlterIndex    = CurrentAlter;
          TransferTable t             = null;
          long          startTime, stopTime;
  
          startTime = System.currentTimeMillis();
  
          try {
              for (int i = TransferIndex; i < tTable.size(); i++) {
                  CurrentTransfer = i;
                  t               = (TransferTable) tTable.elementAt(i);
  
                  lTable.select(i);
                  displayTable(t);
                  t.transferStructure();
                  t.transferData(iMaxRows);
              }
  
              for (int i = AlterIndex; i < tTable.size(); i++) {
                  CurrentAlter = i;
                  t            = (TransferTable) tTable.elementAt(i);
  
                  lTable.select(i);
                  displayTable(t);
                  t.transferAlter();
              }
  
              stopTime = System.currentTimeMillis();
  
              trace("Transfer finished successfully in: "
                    + (stopTime - startTime) / 1000.00 + " sec");
  
              if (iTransferMode == TRFM_TRANSFER) {
                  bContinue.setLabel("Quit");
                  bContinue.setEnabled(true);
                  bContinue.invalidate();
              } else {
                  bStart.setLabel("Quit");
                  bStart.setEnabled(true);
                  bStart.invalidate();
              }
          } catch (Exception e) {
              String last = tMessage.getText();
  
              trace("Transfer stopped - " + last + " /  / Error: "
                    + e.getMessage());
              e.printStackTrace();
          }
  
          if (iTransferMode == TRFM_TRANSFER) {
              bContinue.setEnabled((CurrentAlter < tTable.size()));
          }
  
          updateEnabled(true);
          System.gc();
      }