internal override void RemoveChild(Opcode opcode)
 {
     LiteralRelationOpcode opcode2 = this.ValidateOpcode(opcode);
     QueryBranch branch = this.branchIndex[opcode2.Literal];
     this.branchIndex.Remove(opcode2.Literal);
     Opcode opcode1 = branch.Branch;
     opcode1.Flags &= ~OpcodeFlags.NoContextCopy;
     if (this.alwaysBranches != null)
     {
         int index = this.alwaysBranches.IndexOfID(branch.ID);
         if (index >= 0)
         {
             this.alwaysBranches.RemoveAt(index);
             if (this.alwaysBranches.Count == 0)
             {
                 this.alwaysBranches = null;
             }
         }
     }
 }
 internal void InvokeNonMatches(ProcessingContext context, QueryBranchTable nonMatchTable)
 {
     int counterMarker = context.Processor.CounterMarker;
     BranchContext context2 = new BranchContext(context);
     int num2 = 0;
     int num3 = 0;
     while ((num3 < this.resultTable.Count) && (num2 < nonMatchTable.Count))
     {
         QueryBranchResult result = this.resultTable[num3];
         int num4 = result.Branch.ID - nonMatchTable[num2].ID;
         if (num4 > 0)
         {
             ProcessingContext context3 = context2.Create();
             this.InvokeNonMatch(context3, nonMatchTable[num2]);
             context.Processor.CounterMarker = counterMarker;
             num2++;
         }
         else
         {
             if (num4 == 0)
             {
                 num2++;
                 continue;
             }
             num3++;
         }
     }
     while (num2 < nonMatchTable.Count)
     {
         ProcessingContext context4 = context2.Create();
         this.InvokeNonMatch(context4, nonMatchTable[num2]);
         context.Processor.CounterMarker = counterMarker;
         num2++;
     }
     context2.Release();
 }
 internal void RemoveAlwaysBranch(Opcode opcode)
 {
     if (this.alwaysBranches != null)
     {
         if (OpcodeID.Branch == opcode.ID)
         {
             OpcodeList branches = ((BranchOpcode) opcode).Branches;
             for (int i = 0; i < branches.Count; i++)
             {
                 this.alwaysBranches.Remove(branches[i]);
             }
         }
         else
         {
             this.alwaysBranches.Remove(opcode);
         }
         if (this.alwaysBranches.Count == 0)
         {
             this.alwaysBranches = null;
         }
     }
 }