protected override QilNode VisitGt(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.EliminateGt]) {
if ( IsLiteral((local1)) ) {
if ( IsLiteral((local2)) ) {
if (AllowReplace(XmlILOptimization.EliminateGt, local0)) {
return Replace(XmlILOptimization.EliminateGt, local0, FoldComparison(QilNodeType.Gt, local1, local2) );
}
}
}
}
if (this[XmlILOptimization.NormalizeGtLiteral]) {
if ( IsLiteral((local1)) ) {
if (!( IsLiteral((local2)) )) {
if (AllowReplace(XmlILOptimization.NormalizeGtLiteral, local0)) {
return Replace(XmlILOptimization.NormalizeGtLiteral, local0, VisitLt(f.Lt(local2, local1)));
}
}
}
}
if (this[XmlILOptimization.NormalizeXsltConvertGt]) {
if (local1.NodeType == QilNodeType.XsltConvert) {
QilNode local3 = local1[0];
QilNode local4 = local1[1];
if (local4.NodeType == QilNodeType.LiteralType) {
XmlQueryType local5 = (XmlQueryType)((QilLiteral)local4).Value;
if (( IsPrimitiveNumeric( (local3).XmlType ) ) && ( IsPrimitiveNumeric(local5) )) {
if (( IsLiteral((local2)) ) && ( CanFoldXsltConvertNonLossy(local2, (local3).XmlType ) )) {
if (AllowReplace(XmlILOptimization.NormalizeXsltConvertGt, local0)) {
return Replace(XmlILOptimization.NormalizeXsltConvertGt, local0, VisitGt(f.Gt(local3, FoldXsltConvert(local2, (local3).XmlType ) )));
}
}
}
}
}
}
if (this[XmlILOptimization.NormalizeLengthGt]) {
if (local1.NodeType == QilNodeType.Length) {
QilNode local3 = local1[0];
if (local2.NodeType == QilNodeType.LiteralInt32) {
int local4 = (int)((QilLiteral)local2).Value;
if (local4 == 0) {
if (AllowReplace(XmlILOptimization.NormalizeLengthGt, local0)) {
return Replace(XmlILOptimization.NormalizeLengthGt, local0, VisitNot(f.Not(VisitIsEmpty(f.IsEmpty(local3)))));
}
}
}
}
}
if (this[XmlILOptimization.AnnotateMaxLengthGt]) {
if (local1.NodeType == QilNodeType.Length) {
if (local2.NodeType == QilNodeType.LiteralInt32) {
int local4 = (int)((QilLiteral)local2).Value;
if (AllowReplace(XmlILOptimization.AnnotateMaxLengthGt, local0)) {
OptimizerPatterns.Write((QilNode) (local1)).AddPattern(OptimizerPatternName.MaxPosition); OptimizerPatterns.Write((QilNode) (local1)).AddArgument(OptimizerPatternArgument.MaxPosition, local4); }
}
}
}
return NoReplace(local0);
}