public IAstNode ProcessOperations()
        {
            var result = new AstComplexNode();

            foreach (var operation in operations)
            {
                IAstNode completeOperation = null;
                int      operationId       = AddObjectToStore(operation);

                if (operation is OperationsBlock)
                {
                    completeOperation =
                        new MappingOperationsProcessor(this)
                    {
                        operations = (operation as OperationsBlock).Operations
                    }.ProcessOperations();
                }
                else if (operation is ReadWriteComplex)
                {
                    completeOperation = Process_ReadWriteComplex(operation as ReadWriteComplex, operationId);
                }
                else if (operation is DestSrcReadOperation)
                {
                    completeOperation = ProcessDestSrcReadOperation(operation as DestSrcReadOperation, operationId);
                }
                else if (operation is SrcReadOperation)
                {
                    completeOperation = ProcessSrcReadOperation(operation as SrcReadOperation, operationId);
                }
                else if (operation is DestWriteOperation)
                {
                    completeOperation = ProcessDestWriteOperation(operation as DestWriteOperation, operationId);
                }
                else if (operation is ReadWriteSimple)
                {
                    completeOperation = ProcessReadWriteSimple(operation as ReadWriteSimple, operationId);
                }

                if (completeOperation == null)
                {
                    continue;
                }
                if (locException != null)
                {
                    var tryCatch = CreateExceptionHandlingBlock(operationId, completeOperation);
                    result.nodes.Add(tryCatch);
                }
                else
                {
                    result.nodes.Add(completeOperation);
                }
            }
            return(result);
        }
 public MappingOperationsProcessor(MappingOperationsProcessor prototype)
 {
     locFrom                 = prototype.locFrom;
     locTo                   = prototype.locTo;
     locState                = prototype.locState;
     locException            = prototype.locException;
     compilationContext      = prototype.compilationContext;
     operations              = prototype.operations;
     storedObjects           = prototype.storedObjects;
     mappingConfigurator     = prototype.mappingConfigurator;
     objectsMapperManager    = prototype.objectsMapperManager;
     rootOperation           = prototype.rootOperation;
     staticConvertersManager = prototype.staticConvertersManager;
 }