code: public static void assertSameElementsOrIllegalState(Iterable<?> left, Iterable<?> right,
        String msgIntroduction,
        String leftName, String rightName) {
      final Optional<String> exceptionMessage =
          assertSameElementsCommon(left, right, msgIntroduction, leftName, rightName);
  
      if (exceptionMessage.isPresent()) {
        throw new IllegalStateException(exceptionMessage.get());
      }
    }
docs: Checks if two {@link Iterable}s contain the same elements regardless of order or number of
  occurrences. If they do, nothing happens. If they don't an {@link IllegalStateException} is
  raised describing the difference. The exception's message will be prefixed by {@code
  msgIntroduction} and {@code leftNamePlural} and {@code rightNamePlural} will be used to
  describe the left and right element types.
  
  Example: <pre>
  assertSameElementsOrIllegalState(mySet1, mySet2, "Document IDs do not match: " ,
  "gold docIDs", "test docIDs");
  </pre>