if (TextAttribute.RUN_DIRECTION.equals(key)) { if (TextAttribute.RUN_DIRECTION_RTL.equals(value) && Boolean.FALSE.equals(getProperty(I18N))) putProperty(I18N, Boolean.TRUE);  if (Boolean.TRUE.equals(getProperty(I18N))) { writeLock(); try { DefaultDocumentEvent ev = new DefaultDocumentEvent(0, getLength(), DocumentEvent.EventType.INSERT); updateBidi(ev); } finally { writeUnlock(); } } }
  public final void putProperty(Object key, Object value)  {    // FIXME: make me thread-safe    if (properties == null)      properties = new Hashtable();    properties.put(key, value);  }