/// <summary>
        /// Composes the specified composition context.
        /// </summary>
        /// <param name="compositionContext">The composition context.</param>
        private void compose(CompositionContext compositionContext)
        {
            var composition = CompositionProvider.Compose(compositionContext);

            CompositionResult.Set(composition);
            CompositionContext.Set(compositionContext);
            if (!composition.Failed)
            {
                Context.DynamicCall("$dynamic_composition", composition.Generator, compositionContext.InputInstances);
                Composed.Set(true);
            }
        }
        /// <summary>
        /// Processes the composition.
        /// </summary>
        /// <param name="notConstructed">The not constructed instances.</param>
        /// <param name="constructed">The constructed instances.</param>
        /// <param name="toRemove">Instances to be removed from composition.</param>
        private void processComposition(IEnumerable <Instance> notConstructed, IEnumerable <Instance> constructed, IEnumerable <Instance> toRemove)
        {
            if (notConstructed == null)
            {
                notConstructed = new Instance[0];
            }

            if (constructed == null)
            {
                constructed = new Instance[0];
            }

            if (toRemove == null)
            {
                toRemove = new Instance[0];
            }

            var composition = new CompositionContext(CallingAssemblyServices, Context);

            notConstructed = notConstructed.Except(toRemove);
            constructed    = constructed.Except(toRemove);

            //add components that needs importing constructor call
            composition.AddNotConstructedComponents(notConstructed);

            //add instances that doesn't need constructor call
            composition.AddConstructedComponents(constructed);

            //create composition
            var compositionResult = CompositionProvider.Compose(composition);

            CompositionResult.Set(compositionResult);

            if (!compositionResult.Failed)
            {
                //if composition building is OK then process composition
                Context.DynamicCall("$dynamic_composition", composition.Generator, composition.InputInstances);
            }
        }