@Override
  public void init(DatabaseMetaData metaData) throws SQLException {
    checkState(!initialized, "onInit() must be called once");

    Version version = checkDbVersion(metaData, MIN_SUPPORTED_VERSION);

    supportsNullNotDistinct = version.compareTo(MIN_NULL_NOT_DISTINCT_VERSION) >= 0;

    initialized = true;
  }
@Test
  void init_throws_ISE_if_called_twice() throws Exception {
    DatabaseMetaData metaData = newMetadata(11, 0);
    underTest.init(metaData);

    assertThatThrownBy(() -> underTest.init(metaData))
      .isInstanceOf(IllegalStateException.class)
      .hasMessage("onInit() must be called once");
  }