Preconditions.checkNotNull (operation);
Preconditions.checkNotNull (outputsClass);
CloudletComponent.this.transcript.traceDebugging ("calling to the component `%s` with operation `%s`...", component.string, operation);
// FIXME: This should be done in `Active` state
// FIXME: This should be done in an `FsmAccess`
final ComponentCallReference reference = ComponentCallReference.create ();
final ComponentCallRequest request = ComponentCallRequest.create (operation, inputs, reference);
final DeferredFuture<ComponentCallReply> future = DeferredFuture.create (ComponentCallReply.class);
CloudletComponent.this.componentPendingOutboundCalls.put (reference, future.trigger);
CloudletComponent.this.componentControllerProxy.call (component, request);
final DeferredFuture<TOutputs> completionFuture = DeferredFuture.create (outputsClass);