### Question:
Hasher { public Hasher putClass(Class<?> type) { Optional.ofNullable(type) .map(Class::getName) .ifPresent(hasher::putUnencodedChars); return this; }  static Hasher of(HashFunction function); HashCode hash(); Hasher put(Hashable hashable); Hasher putAll(Iterable<? extends Hashable> hashables); Hasher putBoolean(boolean b); Hasher putByte(byte b); Hasher putBytes(byte[] bytes); Hasher putChar(char c); Hasher putClass(Class<?> type); Hasher putDouble(double d); Hasher putFloat(float f); Hasher putInt(int i); Hasher putLong(long l); Hasher putShort(short s); Hasher putUnencodedChars(CharSequence charSequence);  }### Answer:
@Test public void testPutClass() { assertThat(Hasher.of(HASH_FUNCTION) .putClass(HasherTest.class) .putClass(Hasher.class) .hash()) .isEqualTo(HASH_FUNCTION.newHasher().putUnencodedChars(HasherTest.class.getName()) .putUnencodedChars(Hasher.class.getName()).hash()); }