void () { List<ClassWrapperNode> lstClasses = getReversePostOrderListIterative(rootClasses); Map<String, Map<String, String>> classNameMaps = new HashMap<>(); for (ClassWrapperNode node : lstClasses) { StructClass cl = node.getClassStruct(); Map<String, String> names = new HashMap<>(); // merge information on super class if (cl.superClass != null) { Map<String, String> mapClass = classNameMaps.get(cl.superClass.getString()); if (mapClass != null) { names.putAll(mapClass); } } // merge information on interfaces for (String ifName : cl.getInterfaceNames()) { Map<String, String> mapInt = interfaceNameMaps.get(ifName); if (mapInt != null) { names.putAll(mapInt); } else { StructClass clintr = context.getClass(ifName); if (clintr != null) { names.putAll(processExternalInterface(clintr)); } } } renameClassIdentifiers(cl, names); if (!node.getSubclasses().isEmpty()) { classNameMaps.put(cl.qualifiedName, names); } } }