void (Class<?> aClass, Set<? super Class<?>> classes, Set<? super PresentationTemplate> templates) { if (!classes.add(aClass)) { return; } ContainerUtil.addIfNotNull(templates, createPresentationTemplate(aClass)); Class<?> superClass = aClass.getSuperclass(); if (superClass != null) { walkSupers(superClass, classes, templates); } for (Class<?> intf : aClass.getInterfaces()) { walkSupers(intf, classes, templates); } }