private PropertyDescriptorCollection GetPropertiesWithMetadata(PropertyDescriptorCollection originalCollection)
 {
     if (this.generatedMetadataType != null)
     {
         bool flag = false;
         List <PropertyDescriptor> list = new List <PropertyDescriptor>();
         foreach (PropertyDescriptor descriptor in originalCollection)
         {
             Attribute[]        generatedMetadata = TypeDescriptorCache.GetGeneratedMetadata(this.generatedMetadataType, descriptor.Name);
             PropertyDescriptor item = descriptor;
             if (generatedMetadata.Length > 0)
             {
                 item = new GeneratedMetadataPropertyDescriptor(descriptor, generatedMetadata);
                 flag = true;
             }
             list.Add(item);
         }
         if (flag)
         {
             return(new PropertyDescriptorCollection(list.ToArray(), true));
         }
     }
     return(originalCollection);
 }