code: public void mergeSubTransaction(SpiderTransaction subTran) {
          // Column adds
          for (String storeName : subTran.m_columnAdds.keySet()) {
              Map<String, Map<String, byte[]>> rowMap = subTran.m_columnAdds.get(storeName);
              for (String rowKey : rowMap.keySet()) {
                  Map<String, byte[]> colMap = rowMap.get(rowKey);
                  for (String colName : colMap.keySet()) {
                      this.addColumn(storeName, rowKey, colName, colMap.get(colName));
                  }
              }
          }
          
          // Column deletes
          for (String storeName : subTran.m_columnDeletes.keySet()) {
              Map<String, List<String>> rowMap = subTran.m_columnDeletes.get(storeName);
              for (String rowKey : rowMap.keySet()) {
                  this.deleteColumns(storeName, rowKey, rowMap.get(rowKey));
              }
          }
          
          // Row deletes
          for (String storeName : subTran.m_rowDeletes.keySet()) {
              for (String rowKey : subTran.m_rowDeletes.get(storeName)) {
                  this.deleteRow(storeName, rowKey);
              }
          }
      }
docs: Merge all updates accummulated by the given SpiderTransaction into this one. This
  allows one or more subtransactions to be merged with a master transaction so that
  all updates can be committed together. If the subtranaction sets a value for a
  store/row key/column name that already has a value, the new value replaces the
  existing one.
  
  @param subTran    {@link SpiderTransaction} containing updates to be applied to
  this one.