code: public static boolean unregister(Object key) {
          if (key == null) {
              throw new IllegalArgumentException("registry key must not be null");
          }
          // TODO: we don't do code coverage for the following lines
          // because in getBreakInstance we always instantiate the shim,
          // and test execution is such that we always instantiate a
          // breakiterator before we get to the break iterator tests.
          // this is for modularization, and we could remove the
          // dependencies in getBreakInstance by rewriting part of the
          // LocaleData code, or perhaps by accepting it into the
          // module.
          ///CLOVER:OFF
          if (shim != null) {
              // Unfortunately, we don't know what is being unregistered
              // -- what `kind' and what locale -- so we flush all
              // caches.  This is safe but inefficient if people are
              // actively registering and unregistering.
              for (int kind=0; kind<KIND_COUNT; ++kind) {
                  iterCache[kind] = null;
              }
              return shim.unregister(key);
          }
          return false;
          ///CLOVER:ON
      }
docs: <strong>[icu]</strong> Unregisters a previously-registered BreakIterator using the key returned
  from the register call.  Key becomes invalid after this call and should not be used
  again.
  @param key the registry key returned by a previous call to registerInstance
  @return true if the iterator for the key was successfully unregistered
  @hide unsupported on Android