public String toString() {
            if (putCount == 0) {
                return "";
            } else {
                final StringBuilder sb = new StringBuilder();
                final String detail = map.entrySet()
                        .stream()
                        .sorted(Comparator.nullsFirst(Comparator.comparing(valueEntry ->
                                valueEntry.getValue().getFirstOffset())))
                        .map(valueEntry -> {
                            final byte[] bytes = valueEntry.getKey();
                            final String hexBytes = ByteArrayUtils.byteArrayToHex(bytes);
                            final int instances = valueEntry.getValue().count;
                            final int offsetsCount = valueEntry.getValue().getOffsetCount();
                            final String offsets = valueEntry.getValue().offsets
                                    .stream()
                                    .map(i -> Integer.toString(i))
                                    .collect(Collectors.joining(", "));

                            return sb.append(instances)
                                    .append(StringUtil.plural(" instance", instances))
                                    .append(" of ")
                                    .append(StringUtil.plural("byte", bytes.length))
                                    .append(" [")
                                    .append(hexBytes)
                                    .append("] at ")
                                    .append(StringUtil.plural("offset", offsetsCount))
                                    .append("[")
                                    .append(offsets)
                                    .append("]")
                                    .toString();
                        })
                        .collect(Collectors.joining("\n"));

                final StringBuilder sb2 = new StringBuilder()
                        .append("Found ")
                        .append(putCount)
                        .append(StringUtil.plural("instance", "instances", putCount))
                        .append(" of un-decodable bytes:")
                        .append("\n")
                        .append(detail);
                if (wasTruncated()) {
                    sb2.append("\nSome instances have been omitted.");
                }
                return sb2.toString();
            }
        }
@return True if the bytes could not be decoded using the {@link Charset} of
this {@link ByteStreamDecoder}
stroom-pipeline/src/main/java/stroom/pipeline/reader/ByteStreamDecoder.java