public Builder setSource(Object source) throws IllegalArgumentException {
            this.source = ByteSource.Util.bytes(source);
            return this;
        }
Sets the source data that will be hashed by a {@link HashService}.
<p/>
This is a convenience alternative to {@link #setSource(ByteSource)}: it will attempt to convert the
argument into a {@link ByteSource} instance using Shiro's default conversion heuristics
(as defined by {@link ByteSource.Util#isCompatible(Object) ByteSource.Util.isCompatible}.  If the object
cannot be heuristically converted to a {@code ByteSource}, an {@code IllegalArgumentException} will be
thrown.

@param source the byte-backed source data that will be hashed by a {@link HashService}.
@return this {@code Builder} instance for method chaining.
@throws IllegalArgumentException if the argument cannot be heuristically converted to a {@link ByteSource}
                                 instance.
@see HashRequest#getSource()
@see #setSource(ByteSource)
crypto/hash/src/main/java/org/apache/shiro/crypto/hash/HashRequest.java