/// <summary>
 ///     Indexer by guid
 /// </summary>
 /// <param name="key">Property Key</param>
 /// <returns>Property or null if not found</returns>
 public PropertyStoreProperty this[PropertyKey key]
 {
     get
     {
         for (int i = 0; i < Count; i++)
         {
             PropertyKey ikey = Get(i);
             if ((ikey.formatId == key.formatId) && (ikey.propertyId == key.propertyId))
             {
                 PropVariant result;
                 Marshal.ThrowExceptionForHR(storeInterface.GetValue(ref ikey, out result));
                 return new PropertyStoreProperty(ikey, result);
             }
         }
         return null;
     }
 }
 /// <summary>
 ///     Contains property guid
 /// </summary>
 /// <param name="key">Looks for a specific key</param>
 /// <returns>True if found</returns>
 public bool Contains(PropertyKey key)
 {
     for (int i = 0; i < Count; i++)
     {
         PropertyKey ikey = Get(i);
         if ((ikey.formatId == key.formatId) && (ikey.propertyId == key.propertyId))
         {
             return true;
         }
     }
     return false;
 }