You need a class mirror, from there you can walk through all the superclasses.
List<Type> getInheritanceStructure(Object o){
ClassMirror baseClass = reflectClass(o.runtimeType);
return walkSuperclasses(baseClass);
}
List<Type> walkSuperclasses(ClassMirror cm) {
List<Type> l = [];
l.add(cm.reflectedType);
if(cm.superclass != null) {
l.addAll(walkSuperclasses(cm.superclass));
}
return l;
}