code: public static void registerSpecialInverse(String target,
                                                String inverseTarget,
                                                boolean bidirectional) {
          SPECIAL_INVERSES.put(new CaseInsensitiveString(target), inverseTarget);
          if (bidirectional && !target.equalsIgnoreCase(inverseTarget)) {
              SPECIAL_INVERSES.put(new CaseInsensitiveString(inverseTarget), target);
          }
      }
docs: Register two targets as being inverses of one another.  For
  example, calling registerSpecialInverse("NFC", "NFD", true) causes
  Transliterator to form the following inverse relationships:
  
  <pre>NFC => NFD
  Any-NFC => Any-NFD
  NFD => NFC
  Any-NFD => Any-NFC</pre>
  
  (Without the special inverse registration, the inverse of NFC
  would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
  that the presence or absence of "Any-" is preserved.
  
  <p>The relationship is symmetrical; registering (a, b) is
  equivalent to registering (b, a).
  
  <p>The relevant IDs must still be registered separately as
  factories or classes.
  
  <p>Only the targets are specified.  Special inverses always
  have the form Any-Target1 <=> Any-Target2.  The target should
  have canonical casing (the casing desired to be produced when
  an inverse is formed) and should contain no whitespace or other
  extraneous characters.
  
  @param target the target against which to register the inverse
  @param inverseTarget the inverse of target, that is
  Any-target.getInverse() => Any-inverseTarget
  @param bidirectional if true, register the reverse relation
  as well, that is, Any-inverseTarget.getInverse() => Any-target