public void SetFlags(SHELL_LINK_DATA_FLAGS flags, bool value)
 {
     if (!this.InternalSetFlags(flags, value))
     {
         throw new NotSupportedException();
     }
 }
 private bool InternalSetFlags(SHELL_LINK_DATA_FLAGS flags, bool value)
 {
     SHELL_LINK_DATA_FLAGS shell_link_data_flags2;
     IShellLinkDataList persistStream = this.PersistStream as IShellLinkDataList;
     if (persistStream == null)
     {
         return false;
     }
     SHELL_LINK_DATA_FLAGS shell_link_data_flags = persistStream.GetFlags();
     if (value)
     {
         shell_link_data_flags2 = shell_link_data_flags | flags;
     }
     else
     {
         shell_link_data_flags2 = shell_link_data_flags & ~flags;
     }
     if (shell_link_data_flags2 != shell_link_data_flags)
     {
         persistStream.SetFlags(shell_link_data_flags2);
     }
     return true;
 }