@Override
    public void characters(final char[] ch, final int start, final int length) throws SAXException {
        if (insideValueElement) {
            if (haveSeenXmlInValueElement) {
                // This is an XML FastInfoSet value
                LOGGER.trace(() -> LogUtil.message(
                        "characters(\"{}\")", new String(ch, start, length).trim()));
                if (insideElement || !isAllWhitespace(ch, start, length)) {
                    // Delegate to the fastInfoset content handler which will write to stagingValueOutputStream
                    fastInfosetCharacters(ch, start, length);
                }
            } else {
                content.append(ch, start, length);
//                // This is a simple String value
//                final String str = new String(ch, start, length);
//                try {
//                    stagingValueOutputStream.write(str.getBytes(StandardCharsets.UTF_8));
//                } catch (IOException e) {
//                    throw new RuntimeException(LogUtil.message(
//                            "Error writing chars '{}' to stagingValueOutputStream", str), e);
//                }
            }
        } else {
            // outside the value element so capture the chars, so we can get keys, map names, etc.
            content.append(ch, start, length);
        }

        super.characters(ch, start, length);
    }
@param ch     An array of characters.
@param start  The starting position in the array.
@param length The number of characters to use from the array.
@throws org.xml.sax.SAXException The client may throw an exception during processing.
@see stroom.pipeline.filter.AbstractXMLFilter#characters(char[],
int, int)
stroom-pipeline/src/main/java/stroom/pipeline/refdata/ReferenceDataFilter.java