### Question:
DataSource implements IConfig, Serializable { @Override public int hashCode() { return Objects.hash(providerName, version, params); } @VisibleForTesting  DataSource(@NonNull String providerName, @NonNull String version, @NonNull ImmutableSortedMap<String, String> params); @NonNull String getProviderName(); @NonNull String getVersion(); @Override SortedMap<String, String> getParams(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); @NonNull Builder toBuilder(); @NonNull static DataSource of(@NonNull String providerName, @NonNull String version); @NonNull static DataSource of(@NonNull String providerName, @NonNull String version, @NonNull String key, @NonNull String value); @NonNull static DataSource deepCopyOf(@NonNull String providerName, @NonNull String version, @NonNull Map<String, String> params); @NonNull static Builder builder(@NonNull String providerName, @NonNull String version); @Deprecated @NonNull static Builder builder(@NonNull DataSource dataSource); static Formatters.@NonNull Formatter<DataSource> xmlFormatter(boolean formattedOutput); static Parsers.@NonNull Parser<DataSource> xmlParser(); static Formatters.@NonNull Formatter<DataSource> uriFormatter(); static Parsers.@NonNull Parser<DataSource> uriParser();  }### Answer:
@Test public void testHashCode() { assertThat(newSample().hashCode()) .isEqualTo(newSample().hashCode()) .isEqualTo(new DataSource(PNAME, VERSION, ImmutableSortedMap.of(K3, V3, K2, V2, K1, V1)).hashCode()) .isNotEqualTo(ZERO.hashCode()); }