### Question:
ReflectionUtils { public static Set<Class<?>> getImplementedInterfaces(Class<?> cl) { Set<Class<?>> interfaces = new HashSet<Class<?>>(); Deque<Class<?>> classes = new ArrayDeque<Class<?>>(); classes.add(cl); while (!classes.isEmpty()) { Class<?> c = classes.pop(); interfaces.addAll(Arrays.asList(c.getInterfaces())); if (c.getSuperclass() != null) { classes.add(c.getSuperclass()); } classes.addAll(Arrays.asList(c.getInterfaces())); } return interfaces; } private  ReflectionUtils(); static AnnotatedElement getAnnotatedElement(Class<?> beanClass, String propertyName, Class<?> propertyClass); @Nullable static Field getFieldOrNull(Class<?> beanClass, String propertyName); @Nullable static Method getGetterOrNull(Class<?> beanClass, String name); @Nullable static Method getGetterOrNull(Class<?> beanClass, String name, Class<?> type); static int getTypeParameterCount(java.lang.reflect.Type type); static Class<?> getTypeParameterAsClass(java.lang.reflect.Type type, int index); @Nullable static Type getTypeParameter(java.lang.reflect.Type type, int index); static Set<Class<?>> getSuperClasses(Class<?> cl); static Set<Field> getFields(Class<?> cl); static Set<Class<?>> getImplementedInterfaces(Class<?> cl);  }### Answer:
@Test @SuppressWarnings("unchecked") public void getImplementedInterfaces() { Set<Class<?>> ifaces = ReflectionUtils.getImplementedInterfaces(SimpleExpression.class); assertEquals(new HashSet<Class<?>>(Arrays.asList(Serializable.class, Expression.class)), ifaces); }