List<NodeRenderer> (Project project) { // the order is important as the renderers are applied according to it final List<NodeRenderer> allRenderers = new ArrayList<>(); // user defined renderers must come first myCustomRenderers.iterateRenderers(renderer -> { allRenderers.add(renderer); return true; }); if (Registry.is("debugger.renderers.annotations")) { addAnnotationRenderers(allRenderers, project); } // plugins registered renderers come after that CompoundRendererProvider.EP_NAME.getExtensionList().stream() .filter(provider -> provider.isApplicable(project)) .map((provider) -> provider.createRenderer()) .forEach(allRenderers::add); allRenderers.addAll(NodeRenderer.EP_NAME.getExtensionList()); // now all predefined stuff allRenderers.add(myHexRenderer); allRenderers.add(myPrimitiveRenderer); Collections.addAll(allRenderers, myAlternateCollectionRenderers); allRenderers.add(myToStringRenderer); allRenderers.add(myArrayRenderer); allRenderers.add(myClassRenderer); return allRenderers; }