DefaultMutableTreeNode (DefaultMutableTreeNode rootNode) { final Collection<DClassElement> containingClasses = DynamicManager.getInstance(myProject).getAllContainingClasses(); DefaultMutableTreeNode containingClassNode; for (DClassElement containingClassElement : containingClasses) { containingClassNode = new DefaultMutableTreeNode(containingClassElement); final Collection<DPropertyElement> properties = DynamicManager.getInstance(myProject).findDynamicPropertiesOfClass(containingClassElement.getName()); // if (properties.length == 0) continue; DefaultMutableTreeNode propertyTreeNode; for (DPropertyElement property : properties) { propertyTreeNode = new DefaultMutableTreeNode(property); containingClassNode.add(propertyTreeNode); } DefaultMutableTreeNode methodTreeNode; final Set<DMethodElement> methods = containingClassElement.getMethods(); for (DMethodElement methodElement : methods) { final String[] psiTypes = QuickfixUtil.getArgumentsTypes(methodElement.getPairs()); final DMethodElement method = DynamicManager.getInstance(myProject) .findConcreteDynamicMethod(containingClassElement.getName(), methodElement.getName(), psiTypes); methodTreeNode = new DefaultMutableTreeNode(method); containingClassNode.add(methodTreeNode); } rootNode.add(containingClassNode); } return rootNode; }