public void removeListener(SimpleSubjectListener listener) {
   publisher.removeListener(SimpleSubjectListener.this, listener);
 }
 public void addListener(SimpleSubjectListener listener) {
   publisher.addListener(
       SimpleSubjectListener.this, listener, SimpleSubjectListenerEventFormat.INSTANCE);
 }
 public void addListener(DetachedSubject listener) {
   listener.upstreamSubjects.add(this);
   Listener innerListener = new Listener(listener);
   publisher.setRelatedSubject(innerListener, innerListener.subject);
   publisher.addListener(this, innerListener, DetachedSubjectAndListenerEventFormat.INSTANCE);
 }
 public void increment(int amount) {
   this.latestRevision += amount;
   publisher.fireEvent(
       this, new Integer(this.latestRevision), DetachedSubjectAndListenerEventFormat.INSTANCE);
 }
 public void setValue(String value) {
   this.value = value;
   publisher.fireEvent(
       this, "[" + name + ":" + this.value + "]", SimpleSubjectListenerEventFormat.INSTANCE);
 }