code: public boolean updateAttributes(Collection<Attribute> attributes)
        throws IllegalStateException {
      if (this.terminated) {
        throw new IllegalStateException(
            "Cannot send solutions to the World Model once the connection has been destroyed.");
      }
  
      if (this.canSend) {
        return this.wmi.updateAttributes(attributes);
      }
      for (Attribute a : attributes) {
        if (!this.attributeBuffer.offer(a)) {
          return false;
        }
      }
  
      return true;
    }
docs: Sends a collection of updated Attribute values to the world model, or
  buffers them to be sent later if the World Model is not connected.
  
  @param attributes
  the Attribute values to send.
  @return {@code true} if the solutions were able to be sent immediately, and
  {@code false} if one or more were unable to be sent or were
  buffered for later transmission.
  @throws IllegalStateException
  if this method is called once the world model connection has been
  destroyed.