public override PropertyDescriptorCollection GetProperties()
{
using (Profiler.StartContext("ExtendedTypeDescriptor.GetProperties() for {0}", componentType))
return new PropertyDescriptorCollection(
base.GetProperties().Cast<PropertyDescriptor>()
.Union(TypeDescriptor.GetAttributes(componentType)
.OfType<ExtendWithTypeAttribute>()
.SelectMany(et =>
from prop in TypeDescriptor.GetProperties(et.With).Cast<PropertyDescriptor>()
select new ExtendedPropertyDescriptor(prop, et.With)
)).ToArray());
}