static List<MethodSignature> GetAllSignatures(Type superClass, List<Type> interfaces, ISeq methods)
{
HashSet<MethodSignature> considered = new HashSet<MethodSignature>();
List<MethodSignature> todo = new List<MethodSignature>();
GetAllMethods(superClass,considered,todo,"super");
foreach( Type t in interfaces)
GetAllMethods(t,considered,todo,"interface");
for (ISeq s = methods; s != null; s = s.next())
{
IPersistentVector v = (IPersistentVector)s.first();
// v == [name [paramTypes...] returnType]
string name = ((Symbol)v.nth(0)).Name;
Type[] paramTypes = CreateTypeArray((ISeq)v.nth(1));
Type returnType = (Type)v.nth(2);
bool isStatic = RT.booleanCast(v.nth(3));
MethodSignature sig = new MethodSignature(name, paramTypes, returnType, isStatic, "other");
if ( ! considered.Contains(sig) )
todo.Add(sig);
considered.Add(sig);
}
return todo;
}