static XmlILOptimizerVisitor() {
// Enable all normalizations and annotations for Release code
// Enable all patterns for Release code
PatternsOpt = new QilPatterns((int) XmlILOptimization.Last_, true);
// Only enable Required and OptimizedConstruction pattern groups
// Only enable Required patterns
PatternsNoOpt = new QilPatterns((int) XmlILOptimization.Last_, false);
PatternsNoOpt.Add((int) XmlILOptimization.FoldNone);
PatternsNoOpt.Add((int) XmlILOptimization.EliminatePositionOf);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateTypeAssert);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateIsType);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateIsEmpty);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateAverage);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateSum);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateMinimum);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateMaximum);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateSort);
PatternsNoOpt.Add((int) XmlILOptimization.EliminateStrConcatSingle);
PatternsNoOpt.Add((int) XmlILOptimization.NormalizeUnion);
PatternsNoOpt.Add((int) XmlILOptimization.NormalizeIntersect);
PatternsNoOpt.Add((int) XmlILOptimization.NormalizeDifference);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotatePositionalIterator);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotateTrackCallers);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotateDod);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotateConstruction);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotateIndex1);
PatternsNoOpt.Add((int) XmlILOptimization.AnnotateIndex2);
}