code: @Nullable
      public String getState() {
          lifecycleLock.readLock().lock();
          try {
              return state == null ? null : state.toString();
          } finally {
              lifecycleLock.readLock().unlock();
          }
      }
docs: return a String and not an embedded-jmxtrans class/enum to be portable and usable in JMX tools such as VisualVM