code: private void visit_OP_CONCAT_DELETE() throws IOException {
      visitTxId();
      int sourceCount = 0;
      if (!LayoutVersion.supports(Feature.EDITLOG_OP_OPTIMIZATION, editsVersion)) {
        IntToken lengthToken = v.visitInt(EditsElement.LENGTH);
        sourceCount = lengthToken.value - 2;
        Log.info("------------------------- does not support");
      }
      v.visitStringUTF8(EditsElement.CONCAT_TARGET);
      // all except of CONCAT_TARGET and TIMESTAMP
      if (LayoutVersion.supports(Feature.EDITLOG_OP_OPTIMIZATION, editsVersion)) {
        IntToken lengthToken = v.visitInt(EditsElement.LENGTH);
        sourceCount = lengthToken.value;
        Log.info("------------------------- does support");
      }
      for(int i = 0; i < sourceCount; i++) {
        v.visitStringUTF8(EditsElement.CONCAT_SOURCE);
      }
      if (LayoutVersion.supports(Feature.EDITLOG_OP_OPTIMIZATION, editsVersion)) {
        v.visitLong(EditsElement.TIMESTAMP);
      } else {
        v.visitStringUTF8(EditsElement.TIMESTAMP);
      }
    }
docs: Visit OP_CONCAT_DELETE