public void ProcessSteps <TBuilder>(List <IMappingConfigStep> steps, IMappingConfiguration mappingConfiguration, TBuilder builder)
        {
            if (steps.Count == 0)
            {
                return;
            }
            var lastStep = steps[steps.Count - 1];

            if (!(lastStep is ResultMappingConfigStep))
            {
                return;
            }
            steps.Reverse();
            var stepsStack            = new Stack <IMappingConfigStep>(steps);
            var firstStep             = stepsStack.Pop();
            var internalConfiguration = stepsStack.Count == 0 ? null : mappingConfiguration.CreateDependantConfiguration();

            mappingConfigStepHandler.ProcessStep(firstStep, builder, mappingConfiguration, internalConfiguration);
            while (stepsStack.Count > 0)
            {
                var currentStep = stepsStack.Pop();
                mappingConfigStepHandler.ProcessStep(currentStep, builder, internalConfiguration, internalConfiguration);
            }
        }