protected override QilNode VisitLt(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.EliminateLt]) {
if ( IsLiteral((local1)) ) {
if ( IsLiteral((local2)) ) {
if (AllowReplace(XmlILOptimization.EliminateLt, local0)) {
return Replace(XmlILOptimization.EliminateLt, local0, FoldComparison(QilNodeType.Lt, local1, local2) );
}
}
}
}
if (this[XmlILOptimization.NormalizeLtLiteral]) {
if ( IsLiteral((local1)) ) {
if (!( IsLiteral((local2)) )) {
if (AllowReplace(XmlILOptimization.NormalizeLtLiteral, local0)) {
return Replace(XmlILOptimization.NormalizeLtLiteral, local0, VisitGt(f.Gt(local2, local1)));
}
}
}
}
if (this[XmlILOptimization.NormalizeXsltConvertLt]) {
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.NormalizeXsltConvertLt, local0)) {
return Replace(XmlILOptimization.NormalizeXsltConvertLt, local0, VisitLt(f.Lt(local3, FoldXsltConvert(local2, (local3).XmlType ) )));
}
}
}
}
}
}
if (this[XmlILOptimization.AnnotateMaxLengthLt]) {
if (local1.NodeType == QilNodeType.Length) {
if (local2.NodeType == QilNodeType.LiteralInt32) {
int local4 = (int)((QilLiteral)local2).Value;
if (AllowReplace(XmlILOptimization.AnnotateMaxLengthLt, local0)) {
OptimizerPatterns.Write((QilNode) (local1)).AddPattern(OptimizerPatternName.MaxPosition); OptimizerPatterns.Write((QilNode) (local1)).AddArgument(OptimizerPatternArgument.MaxPosition, local4); }
}
}
}
return NoReplace(local0);
}