public static EventInfo[] GetEvents(this TypeInfo typeInfo, BindingFlags bindingFlags) { Argument.IsNotNull("typeInfo", typeInfo); var flattenHierarchy = ShouldFlattenHierarchy(bindingFlags); var eventsSource = flattenHierarchy ? typeInfo.AsType().GetRuntimeEvents() : typeInfo.DeclaredEvents; return (from x in eventsSource select x).ToArray(); }