code: @Override
      public String getMessage() {
          // In case the immediate child has the same msgCode, it must be
          // duplicated
          if (childException != null) {
              if (msgKey.equals(childException.getMsgKey())) {
                  return childException.getMessage();
              }
          }
          if (message == null && msgKey != null) {
              message = Tr.formatMessage(tc, msgKey, objs);
          }
          if (message != null) {
              return message;
          } else {
              return this.getClass().getName();
          }
      }
docs: /*
  intend to be the error cause when it's is a child