There are three implementations of the Binary class and only one is using the faster 'UTF8.decode' in the 'toStringUsingUTF8' method. This fixes them to all use the faster UTF8.decode.
As noted in the comments, the 'new String' approach creates a new decoder each time, which is slower than the cached instance used by 'UTF8.decode'.
#1. ByteArraySliceBackedBinary <-- UTF8.decode
#2. ByteArrayBackedBinary <-- new String
#3. ByteBufferBackedBinary <-- new String