public IEnumerable<PropertyEntity> GetProperties(bool includeSuper, bool includeProtocols)
{
List<PropertyEntity> properties = new List<PropertyEntity> (this.Properties);
if (this.SuperClass != null && includeSuper) {
properties.AddRange (this.SuperClass.GetProperties (true, true));
}
if (this.Protocols != null && includeProtocols) {
foreach (ProtocolEntity protocol in this.Protocols) {
properties.AddRange (protocol.Properties);
}
}
return properties.Distinct ();
}