internal bool Equals(BitArrayMask m)
 {
     for (int i = 0; i < bitArray.Length; i++)
     {
         if (bitArray[i] != m.bitArray[i])
         {
             return(false);
         }
     }
     return(true);
 }
            internal bool Match(BitArrayMask m)
            {
                int maskPart = 0;

                for (int i = 0; i < bitArray.Length; i++)
                {
                    maskPart = m.bitArray[i];
                    if ((bitArray[i] & maskPart) != maskPart)
                    {
                        return(false);
                    }
                }
                return(true);
            }
            IPivotData GetBasePivotData(BitArrayMask findMask)
            {
                PivotData minPvtData = null;

                foreach (var cacheEntry in Cache)
                {
                    if (cacheEntry.Key.Match(findMask))
                    {
                        if (minPvtData == null || cacheEntry.Value.Count < minPvtData.Count)
                        {
                            minPvtData = cacheEntry.Value;
                        }
                    }
                }
                return(minPvtData ?? PvtDataWrapper.PvtData);
            }
            BitArrayMask GetMask(object[] key)
            {
                var m = new BitArrayMask(Size);

                for (int i = 0; i < key.Length; i++)
                {
                    if (Key._Empty == key[i])
                    {
                        m.emptyDims++;
                    }
                    else
                    {
                        m.Set(i, true);
                    }
                }
                return(m);
            }