System.Xml.Schema.ParticleContentValidator.GetApplicableMinMaxFollowPos C# (CSharp) Method

GetApplicableMinMaxFollowPos() private method

private GetApplicableMinMaxFollowPos ( BitSet curpos, BitSet posWithRangeTerminals, BitSet minmaxFollowPos ) : BitSet
curpos BitSet
posWithRangeTerminals BitSet
minmaxFollowPos BitSet
return BitSet
        private BitSet GetApplicableMinMaxFollowPos(BitSet curpos, BitSet posWithRangeTerminals, BitSet[] minmaxFollowPos) {
            if (curpos.Intersects(posWithRangeTerminals)) {
                BitSet newSet = new BitSet(positions.Count); //Doing work again 
                newSet.Or(curpos);
                newSet.And(posWithRangeTerminals);
                curpos = curpos.Clone();
                for (int pos = newSet.NextSet(-1); pos != -1; pos = newSet.NextSet(pos)) {
                    LeafRangeNode lrNode = positions[pos].particle as LeafRangeNode;
                    curpos.Or(minmaxFollowPos[lrNode.Pos]);
                }
            }
            return curpos;
        }