Class<?> superClass = type;
while ((superClass = superClass.getSuperclass()) != null)
for (Class<?> iface : superClass.getInterfaces())
if (!result.contains(iface))
{
typeStack.push(iface);
result.add(iface);
}
// iterate through all added interfaces to find any further interfaces
while (typeStack.size() > 0)