code: public static List<Class<?>> findAllSuperInterfaces(final Class<?> a) {
          LinkedList<Class<?>> list = new LinkedList<Class<?>>();
          Queue<Class<?>> queue = new LinkedList<Class<?>>();
          queue.add(a);
          while (!queue.isEmpty()) {
              Class<?> c = queue.poll();
              if (c.isInterface()) {
                  list.addFirst(c);
              }
              queue.addAll(Arrays.asList(c.getInterfaces()));
          }
          return list;
      }
docs: Returns list of super interfaces,sorted from the top (super) to the bottom (extended).
  
  @param a
  @return a set of all super interfaces of a