public static List<Class<?>> getInterfacesIncludeSuperClass(final Class<?> clazz) {
		List<Class<?>> types=new ArrayList<Class<?>>();
		for (Class<?> superClass = clazz; superClass != Object.class;
				superClass = superClass.getSuperclass()) {
			for(Class<?> intf: superClass.getInterfaces()){
				if (!types.contains(intf)){
					types.add(intf);
				}
			}
		}
		return types;
	}