private void CheckIfIsDefined(DataGridItemPropertyBaseFlags value)
            {
                if (Enum.IsDefined(typeof(DataGridItemPropertyBaseFlags), value))
                {
                    return;
                }

                int flags = Convert.ToInt32(value);

                foreach (var flag in Enum.GetValues(typeof(DataGridItemPropertyBaseFlags)))
                {
                    int flagValue = Convert.ToInt32(flag);
                    if ((flags & flagValue) == flagValue)
                    {
                        flags &= ~flagValue;

                        if (flags == 0)
                        {
                            break;
                        }
                    }
                }

                Debug.Assert(flags == 0);
            }
            internal bool this[DataGridItemPropertyBaseFlags flag]
            {
                get
                {
                    return((m_data & flag) == flag);
                }
                set
                {
                    this.CheckIfIsDefined(flag);

                    if (value)
                    {
                        m_data |= flag;
                    }
                    else
                    {
                        m_data &= ~flag;
                    }
                }
            }
      private void CheckIfIsDefined( DataGridItemPropertyBaseFlags value )
      {
        if( Enum.IsDefined( typeof( DataGridItemPropertyBaseFlags ), value ) )
          return;

        int flags = Convert.ToInt32( value );
        foreach( var flag in Enum.GetValues( typeof( DataGridItemPropertyBaseFlags ) ) )
        {
          int flagValue = Convert.ToInt32( flag );
          if( ( flags & flagValue ) == flagValue )
          {
            flags &= ~flagValue;

            if( flags == 0 )
              break;
          }
        }

        Debug.Assert( flags == 0 );
      }
      internal bool this[ DataGridItemPropertyBaseFlags flag ]
      {
        get
        {
          return ( ( m_data & flag ) == flag );
        }
        set
        {
          this.CheckIfIsDefined( flag );

          if( value )
          {
            m_data |= flag;
          }
          else
          {
            m_data &= ~flag;
          }
        }
      }