ArrayList GetMethodsDeep (Type type)
{
ArrayList al = new ArrayList ();
MethodInfo[] methods = type.GetMethods (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy);
al.AddRange (methods);
Type t = type.BaseType;
while (t != null) {
methods = t.GetMethods (BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
al.AddRange (methods);
t = t.BaseType;
}
return al;
}