System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitUnion C# (CSharp) Метод

VisitUnion() защищенный Метод

protected VisitUnion ( QilBinary local0 ) : QilNode
local0 System.Xml.Xsl.Qil.QilBinary
Результат QilNode
        protected override QilNode VisitUnion(QilBinary local0) {
            QilNode local1 = local0[0];
            QilNode local2 = local0[1];
            if (this[XmlILOptimization.FoldNone]) {
                if ( (object) ( (local1).XmlType ) == (object) XmlQueryTypeFactory.None ) {
                    if (AllowReplace(XmlILOptimization.FoldNone, local0)) {
                        return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(local1)));
                    }
                }
            }
            if (this[XmlILOptimization.FoldNone]) {
                if ( (object) ( (local2).XmlType ) == (object) XmlQueryTypeFactory.None ) {
                    if (AllowReplace(XmlILOptimization.FoldNone, local0)) {
                        return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(local2)));
                    }
                }
            }
            if (this[XmlILOptimization.EliminateUnion]) {
                if (local2 == local1) {
                    if (AllowReplace(XmlILOptimization.EliminateUnion, local0)) {
                        return Replace(XmlILOptimization.EliminateUnion, local0, VisitDocOrderDistinct(f.DocOrderDistinct(local1)));
                    }
                }
            }
            if (this[XmlILOptimization.EliminateUnion]) {
                if (local1.NodeType == QilNodeType.Sequence) {
                    if ( (local1).Count == (0) ) {
                        if (AllowReplace(XmlILOptimization.EliminateUnion, local0)) {
                            return Replace(XmlILOptimization.EliminateUnion, local0, VisitDocOrderDistinct(f.DocOrderDistinct(local2)));
                        }
                    }
                }
            }
            if (this[XmlILOptimization.EliminateUnion]) {
                if (local2.NodeType == QilNodeType.Sequence) {
                    if ( (local2).Count == (0) ) {
                        if (AllowReplace(XmlILOptimization.EliminateUnion, local0)) {
                            return Replace(XmlILOptimization.EliminateUnion, local0, VisitDocOrderDistinct(f.DocOrderDistinct(local1)));
                        }
                    }
                }
            }
            if (this[XmlILOptimization.EliminateUnion]) {
                if (local1.NodeType == QilNodeType.XmlContext) {
                    if (local2.NodeType == QilNodeType.XmlContext) {
                        if (AllowReplace(XmlILOptimization.EliminateUnion, local0)) {
                            return Replace(XmlILOptimization.EliminateUnion, local0, local1);
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeUnion]) {
                if ((!( IsDocOrderDistinct(local1) )) || (!( IsDocOrderDistinct(local2) ))) {
                    if (AllowReplace(XmlILOptimization.NormalizeUnion, local0)) {
                        return Replace(XmlILOptimization.NormalizeUnion, local0, VisitUnion(f.Union(VisitDocOrderDistinct(f.DocOrderDistinct(local1)), VisitDocOrderDistinct(f.DocOrderDistinct(local2)))));
                    }
                }
            }
            if (this[XmlILOptimization.AnnotateUnion]) {
                if (AllowReplace(XmlILOptimization.AnnotateUnion, local0)) {
                     OptimizerPatterns.Write((QilNode) (local0)).AddPattern(OptimizerPatternName.IsDocOrderDistinct);  }
            }
            if (this[XmlILOptimization.AnnotateUnionContent]) {
                if (( IsStepPattern(local1, QilNodeType.Content) ) || ( IsStepPattern(local1, QilNodeType.Union) )) {
                    if ((( IsStepPattern(local2, QilNodeType.Content) ) || ( IsStepPattern(local2, QilNodeType.Union) )) && ( ( OptimizerPatterns.Read((QilNode) (local1)).GetArgument(OptimizerPatternArgument.StepInput) ) == ( OptimizerPatterns.Read((QilNode) (local2)).GetArgument(OptimizerPatternArgument.StepInput) ) )) {
                        if (AllowReplace(XmlILOptimization.AnnotateUnionContent, local0)) {
                             AddStepPattern((QilNode) (local0), (QilNode) ( OptimizerPatterns.Read((QilNode) (local1)).GetArgument(OptimizerPatternArgument.StepInput) ));  OptimizerPatterns.Write((QilNode) (local0)).AddPattern(OptimizerPatternName.SameDepth);  }
                    }
                }
            }
            return NoReplace(local0);
        }
        
XmlILOptimizerVisitor