public void onOutputChanged() {
   // notify listeners
   List<TransformerChangeListener> listeners = getAllListeners();
   for (TransformerChangeListener listener : listeners) {
     listener.onOutputChanged(this, _outputColumns);
   }
 }
 /** Notification method invoked when transformer is removed. */
 @Override
 protected void onRemovedInternal() {
   List<TransformerChangeListener> listeners = getAllListeners();
   for (TransformerChangeListener listener : listeners) {
     listener.onOutputChanged(this, new LinkedList<MutableInputColumn<?>>());
     listener.onRemove(this);
   }
 }
 @Override
 public void onRequirementChanged() {
   super.onRequirementChanged();
   List<TransformerChangeListener> listeners = getAllListeners();
   for (TransformerChangeListener listener : listeners) {
     listener.onRequirementChanged(this);
   }
 }
  @Override
  public void onConfigurationChanged() {
    super.onConfigurationChanged();

    // trigger getOutputColumns which will notify consumers in the case of
    // output changes
    if (isConfigured()) {
      getOutputColumns();
    }

    List<TransformerChangeListener> listeners = getAllListeners();
    for (TransformerChangeListener listener : listeners) {
      listener.onConfigurationChanged(this);
    }
  }