code: @Override
      public void print(char c) throws IOException {
  	boolean isWS = Character.isWhitespace(c);
  	if (isWS) {
  	    if (isFirstChar) // ignore all WS before non-WS content
  		return;
  	    if (c == CHAR_RETURN) // ignore Carriage-Return chars
  		return;
  	    if (sb.length() > 0) {
  		printBuffer(); // buffer should never contain WS so flush it
  		lastChar = (c == CHAR_NL) ? CHAR_NL : c;
  		super.print(lastChar);
  		return;
  	    }
  	}
  
  	isFirstChar = false;
  	if (c == CHAR_GT && sb.length() > 0) printBuffer(); // buffer should never contain ">" so flush it
  
  	if (isWS || !addToBuffer(c)) {
  	    if (depthSum == 0) { // we're not in a WS-preserving tag; suppress whitespace
  		if (isWS) { // this char is WS
  		    if (lastChar == CHAR_NL) // lastChar was NL; discard this WS char
  			return;
  		    if (c != CHAR_NL) { // this WS char is not NL
  			if (Character.isWhitespace(lastChar)) return; // lastChar was WS but Not NL; discard this WS char
  		    }
  		}
  	    }
  	    lastChar = c; // remember c as lastChar and write it to output stream
  	    super.print(c);
  	}
      }
docs: sends a character to output stream if it is not a consecutive white-space unless we're inside a
  PRE or TEXTAREA tag.
  
  @param c
  @throws IOException