protected void fireSelectionChanged() {
   SourceSelection selection = getSelection();
   ITextSourceListener[] listeners = decorator.getListeners();
   for (ITextSourceListener listener : listeners) {
     listener.selectionChanged(selection);
   }
 }
 @Override
 public void selectionChanged(final SelectionChangedEvent event) {
   final ISelection selection = event.getSelection();
   if (selection instanceof TextSelection) {
     final TextSelection tSelection = (TextSelection) selection;
     final SourceSelection sSelection =
         new SourceSelection(getBlock(), tSelection.getOffset(), tSelection.getLength());
     final Object[] objects = listeners.getListeners();
     for (final Object object : objects) {
       final ITextSourceListener listener = (ITextSourceListener) object;
       listener.selectionChanged(sSelection);
     }
   }
 }