public boolean handleEvent(Text text, TextEvent event) {
   if (text.getElement(LiveParseFlag.class).liveParse) {
     throw new RuntimeException("assert");
   }
   switchModes(text, null, text.getContent());
   doNotupdate = true;
   fChangeListener.valueChanges((IModelElement) null);
   doNotupdate = false;
   for (ITextEventListener listener :
       ((CompoundText) text).getTexts().get(0).getAllElements(ITextEventListener.class)) {
     listener.handleEvent(text, event);
   }
   return true;
 }
 /**
  * Switches the given view from live parsing to normal model view and vice versa. To switch from
  * live parse to normal model, value must not be null and the view must be flagged live parse. To
  * switch from model to live parse, value must be null and the view must not be flagged live
  * parse.
  *
  * @param view The view to switch.
  * @param value The new model or null.
  * @param content The textual representation of the current model, used when switching to live
  *     parse.
  */
 private void switchModes(Text view, IModelElement value, String content) {
   IValueChangeListener<IModelElement> changeListener =
       view.getElement(IValueChangeListener.class);
   if (value == null && !view.getElement(LiveParseFlag.class).liveParse) {
     ((CompoundText) view)
         .replaceText(
             ((CompoundText) view).getTexts().get(0),
             createLiveParseView(changeListener, content));
     view.getElement(LiveParseFlag.class).liveParse = true;
   } else if (value != null && view.getElement(LiveParseFlag.class).liveParse) {
     ((CompoundText) view)
         .replaceText(
             ((CompoundText) view).getTexts().get(0), super.createView(value, changeListener));
     view.getElement(LiveParseFlag.class).liveParse = false;
   } else {
     if (!view.getElement(LiveParseFlag.class).liveParse) {
       super.updateView(((CompoundText) view).getTexts().get(0), value);
     } else {
       ((CompoundText) view)
           .replaceText(
               ((CompoundText) view).getTexts().get(0),
               createLiveParseView(changeListener, content));
       view.getElement(LiveParseFlag.class).liveParse = true;
     }
   }
 }
 public boolean verifyEvent(Text text, TextEvent event) {
   return ExpressionTemplate.this.verifyEvent(text.getContent(), event);
 }