final String normalized =  charBuf.toString();
final String normalized = preserveWhitespace ? charBuf.toString() : charBuf.getNormalizedString(FastStringBuffer.SUPPRESS_BOTH);
	public void endElement(String namespaceURI, String localName, String qName)		throws SAXException {		if (inModification && charBuf.length() > 0) {			final String normalized =				// charBuf.getNormalizedString(FastStringBuffer.SUPPRESS_BOTH);                charBuf.toString();                			if (normalized.length() > 0) {				Text text = doc.createTextNode(normalized);				if (stack.isEmpty()) {					contents.add(text);				} else {					Element last = (Element) stack.peek();					last.appendChild(text);				}			}			charBuf.setLength(0);		}		if (XUPDATE_NS.equals(namespaceURI)) {			if (IF.equals(localName)) {				Conditional cond = (Conditional) conditionals.pop();				modifications.add(cond);			} else if (localName.equals(ELEMENT)) {				this.resetWhitespaceHandling((Element) stack.pop());			} else if (localName.equals(ATTRIBUTE)) {				inAttribute = false;			} else if (localName.equals(APPEND)				|| localName.equals(UPDATE)				|| localName.equals(REMOVE)				|| localName.equals(RENAME)				|| localName.equals(REPLACE)				|| localName.equals(INSERT_BEFORE)				|| localName.equals(INSERT_AFTER)) {				inModification = false;				modification.setContent(contents);				if(!conditionals.isEmpty()) {					Conditional cond = (Conditional) conditionals.peek();					cond.addModification(modification);				} else {					modifications.add(modification);				}				modification = null;			}		} else if (inModification) {            this.resetWhitespaceHandling((Element) stack.pop());        }	}