@Override
 @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
 public void reportError(Exception exception) {
   Preconditions.checkNotNull(exception, "exception cannot be null");
   if (exception instanceof StageException) {
     StageException stageException = (StageException) exception;
     errorSink.addError(
         instanceName,
         new ErrorMessage(stageException.getErrorCode(), stageException.getParams()));
   } else {
     errorSink.addError(
         instanceName, new ErrorMessage(ContainerError.CONTAINER_0001, exception.toString()));
   }
 }
 private void toError(Record record, ErrorMessage errorMessage) {
   RecordImpl recordImpl = ((RecordImpl) record).clone();
   if (stageType == StageType.SOURCE) {
     recordImpl.getHeader().setSourceRecord(recordImpl);
   }
   recordImpl.getHeader().setError(instanceName, errorMessage);
   errorSink.addRecord(instanceName, recordImpl);
 }
 @Override
 public void reportError(ErrorCode errorCode, Object... args) {
   Preconditions.checkNotNull(errorCode, "errorId cannot be null");
   errorSink.addError(instanceName, new ErrorMessage(errorCode, args));
 }
 @Override
 public void reportError(String errorMessage) {
   Preconditions.checkNotNull(errorMessage, "errorMessage cannot be null");
   errorSink.addError(instanceName, new ErrorMessage(ContainerError.CONTAINER_0002, errorMessage));
 }