code: public SyncStatement request( Collection<? extends BEvent> toRequest ) {
          return new SyncStatement(getBthread(), toRequest, getWaitFor(), getBlock(), getInterrupt(), isHot(), getData());
      }
docs: Creates a new {@link SyncStatement} based on {@code this}, with the
  request updated to the {@code toRequest} parameter.
  @param toRequest the request part of the new statement
  @return a new statement