protected override QilNode VisitNe(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.EliminateNe]) {
if ( IsLiteral((local1)) ) {
if ( IsLiteral((local2)) ) {
if (AllowReplace(XmlILOptimization.EliminateNe, local0)) {
return Replace(XmlILOptimization.EliminateNe, local0, FoldComparison(QilNodeType.Ne, local1, local2) );
}
}
}
}
if (this[XmlILOptimization.NormalizeNeLiteral]) {
if ( IsLiteral((local1)) ) {
if (!( IsLiteral((local2)) )) {
if (AllowReplace(XmlILOptimization.NormalizeNeLiteral, local0)) {
return Replace(XmlILOptimization.NormalizeNeLiteral, local0, VisitNe(f.Ne(local2, local1)));
}
}
}
}
if (this[XmlILOptimization.NormalizeXsltConvertNe]) {
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.NormalizeXsltConvertNe, local0)) {
return Replace(XmlILOptimization.NormalizeXsltConvertNe, local0, VisitNe(f.Ne(local3, FoldXsltConvert(local2, (local3).XmlType ) )));
}
}
}
}
}
}
if (this[XmlILOptimization.NormalizeIdNe]) {
if (local1.NodeType == QilNodeType.XsltGenerateId) {
QilNode local3 = local1[0];
if ( ( (local3).XmlType ).IsSingleton ) {
if (local2.NodeType == QilNodeType.XsltGenerateId) {
QilNode local4 = local2[0];
if ( ( (local4).XmlType ).IsSingleton ) {
if (AllowReplace(XmlILOptimization.NormalizeIdNe, local0)) {
return Replace(XmlILOptimization.NormalizeIdNe, local0, VisitNot(f.Not(VisitIs(f.Is(local3, local4)))));
}
}
}
}
}
}
if (this[XmlILOptimization.NormalizeLengthNe]) {
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.NormalizeLengthNe, local0)) {
return Replace(XmlILOptimization.NormalizeLengthNe, local0, VisitNot(f.Not(VisitIsEmpty(f.IsEmpty(local3)))));
}
}
}
}
}
if (this[XmlILOptimization.AnnotateMaxLengthNe]) {
if (local1.NodeType == QilNodeType.Length) {
if (local2.NodeType == QilNodeType.LiteralInt32) {
int local4 = (int)((QilLiteral)local2).Value;
if (AllowReplace(XmlILOptimization.AnnotateMaxLengthNe, local0)) {
OptimizerPatterns.Write((QilNode) (local1)).AddPattern(OptimizerPatternName.MaxPosition); OptimizerPatterns.Write((QilNode) (local1)).AddArgument(OptimizerPatternArgument.MaxPosition, local4); }
}
}
}
return NoReplace(local0);
}