The composite future wraps a list of futures, it is useful when several futures needs to be coordinated.

- `Anything`
  - `Object`
    - `Basic` ...and other supertypes
      - `Future`
        - `CompositeFuture`

- `CompositeFuture`
  - `Future`
    - `Basic`
      - `Identifiable`
      - `Object`
        - `Anything`

no subtypes hierarchy

Initializer
`CompositeFuture(CompositeFuture unknown)`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`

Methods
`cause` | `shared default Throwable cause(Integer index)` Returns a cause of a wrapped future Parameters: `index` the wrapped future index
`complete` | `shared actual default void complete(CompositeFuture result)` Set the result. Any handler will be called, if there is one, and the future will be marked as completed. Parameters: `result` the result Refines `Future.complete`
`completer` | `shared actual default Anything(Throwable|CompositeFuture) completer()` Refines `Future.completer`
`compose` | `shared actual default Future<U> compose<U>(Future<U>(CompositeFuture) mapper)` Compose this future with a `mapper` function. When this future (the one on which `compose` is called) succeeds, the `mapper` will be called with the completed value and this mapper returns another future object. This returned future completion will complete the future returned by this method call. If the `mapper` throws an exception, the returned future will be failed with this exception. When this future fails, the failure will be propagated to the returned future and the `mapper` will not be called. Parameters: `mapper` the mapper function Refines `Future.compose`
`compose` | `shared actual default Future<U> compose<U>(Anything(CompositeFuture) handler, Future<U> next)` Compose this future with a provided `next` future. When this (the one on which `compose` is called) future succeeds, the `handler` will be called with the completed value, this handler should complete the next future. If the `handler` throws an exception, the returned future will be failed with this exception. When this future fails, the failure will be propagated to the `next` future and the `handler` will not be called. Parameters: `handler` the handler `next` the next future Refines `Future.compose`
`failed` | `shared default Boolean failed(Integer index)` Returns true if a wrapped future is failed Parameters: `index` the wrapped future index
`isComplete` | `shared default Boolean isComplete(Integer index)` Returns true if a wrapped future is completed Parameters: `index` the wrapped future index
`map` | `shared actual default Future<U> map<U>(U?(CompositeFuture) mapper)` Apply a `mapper` function on this future. When this future succeeds, the `mapper` will be called with the completed value and this mapper returns a value. This value will complete the future returned by this method call. If the `mapper` throws an exception, the returned future will be failed with this exception. When this future fails, the failure will be propagated to the returned future and the `mapper` will not be called. Parameters: `mapper` the mapper function Refines `Future.map`
`result` | `shared actual default CompositeFuture result()` The result of the operation. This will be null if the operation failed. Refines `Future.result`
`resultAt` | `shared default T? resultAt<T>(Integer index)` Returns the result of a wrapped future Parameters: `index` the wrapped future index
`setHandler` | `shared actual default CompositeFuture setHandler(Anything(Throwable|CompositeFuture) handler)` Set a handler for the result. If the future has already been completed it will be called immediately. Otherwise it will be called when the future is completed. Refines `Future.setHandler`
`size` | `shared default Integer size()`
`succeeded` | `shared default Boolean succeeded(Integer index)` Returns true if a wrapped future is succeeded Parameters: `index` the wrapped future index

Inherited Methods
Methods inherited from: `Future<T>` `cause()`, `complete()`, `completer()`, `compose()`, `fail()`, `failed()`, `isComplete()`, `map()`, `result()`, `setHandler()`, `succeeded()`
Methods inherited from: `Object` `equals`