code: final void setLocale(ULocale valid, ULocale actual) {
          // Change the following to an assertion later
          if ((valid == null) != (actual == null)) {
              ///CLOVER:OFF
              throw new IllegalArgumentException();
              ///CLOVER:ON
          }
          // Another check we could do is that the actual locale is at
          // the same level or less specific than the valid locale.
          this.validLocale = valid;
          this.actualLocale = actual;
      }
docs: Sets information about the locales that were used to create this
  object.  If the object was not constructed from locale data,
  both arguments should be set to null.  Otherwise, neither
  should be null.  The actual locale must be at the same level or
  less specific than the valid locale.  This method is intended
  for use by factories or other entities that create objects of
  this class.
  @param valid the most specific locale containing any resource
  data, or null
  @param actual the locale containing data used to construct this
  object, or null
  @see android.icu.util.ULocale
  @see android.icu.util.ULocale#VALID_LOCALE
  @see android.icu.util.ULocale#ACTUAL_LOCALE