DocumentImpl: DRY, cache getCharSequence().toString()
optimizing ImmutableText.delete for empty ranges
avoid leaking too many components by tracking a limited number of focus requests
avoid defensive text copying in LazyParseableElement if it's already immutable