code: String getOutputStringForChar(char value)
      {
          // CharKey m_charKey = new CharKey(); //Alternative to synchronized
          m_charKey.setChar(value);
          return (String) m_charToString.get(m_charKey);
      }
docs: Map a character to a String. For example given
  the character '>' this method would return the fully decorated
  entity name "&lt;".
  Strings for entity references are loaded from a properties file,
  but additional mappings defined through calls to defineChar2String()
  are possible. Such entity reference mappings could be over-ridden.
  
  This is reusing a stored key object, in an effort to avoid
  heap activity. Unfortunately, that introduces a threading risk.
  Simplest fix for now is to make it a synchronized method, or to give
  up the reuse; I see very little performance difference between them.
  Long-term solution would be to replace the hashtable with a sparse array
  keyed directly from the character's integer value; see DTM's
  string pool for a related solution.
  
  @param value The character that should be resolved to
  a String, e.g. resolve '>' to  "&lt;".
  
  @return The String that the character is mapped to, or null if not found.
  @xsl.usage internal