Added a comment to the top of TextUpdateListener, providing an overview of how it works.