code: public Event<T> setResult(T result) {
          synchronized (this) {
              if (results == null) {
                  // Make sure that we have a valid result before
                  // calling decrementOpen
                  results = new ArrayList<T>();
                  results.add(result);
                  firstResultAssigned();
                  return this;
              }
              results.add(result);
              return this;
          }
      }
docs: Sets the result of handling this event. If this method is invoked
  more then once, the various results are collected in a list. This
  can happen if the event is handled by several components.
  
  @param result the result to set
  @return the object for easy chaining