@Override
 public void endRecord() {
   if (!recordOpen) {
     return;
   }
   try {
     if (listener != null) {
       listener.endRecord();
     }
     if (contentHandler != null) {
       contentHandler.endElement(nsUri, RECORD, RECORD);
     }
     if (listener != null) {
       // emit trailer event, drives record output segmentation
       listener.trailer(null);
     }
     this.recordOpen = false;
   } catch (Exception ex) {
     if (fatalerrors) {
       throw new RuntimeException(ex);
     } else if (!silenterrors) {
       logger.warn(designator + ": " + ex.getMessage(), ex);
     }
   }
 }