public static void customizePresentation(StackFrameDescriptorImpl descriptor,
                                           @NotNull ColoredTextContainer component,
                                           @Nullable StackFrameDescriptorImpl selectedDescriptor) {
    component.setIcon(descriptor.getIcon());

    final ValueMarkup markup = descriptor.getValueMarkup();
    if (markup != null) {
      component.append("[" + markup.getText() + "] ", new SimpleTextAttributes(SimpleTextAttributes.STYLE_BOLD, markup.getColor()));
    }

    Location location = descriptor.getLocation();
    String offsetPrefix = location != null && Registry.is("debugger.show.offsets.in.frames") ? ("[" + location.codeIndex() + "]: ") : "";

    final String label = offsetPrefix + descriptor.getLabel();
    final int openingBrace = label.indexOf("{");
    final int closingBrace = (openingBrace < 0) ? -1 : label.indexOf("}");
    final SimpleTextAttributes attributes = getAttributes(descriptor);
    if (openingBrace < 0 || closingBrace < 0) {
      component.append(label, attributes);
    }
    else {
      component.append(label.substring(0, openingBrace - 1), attributes);
      component.append(" (" + label.substring(openingBrace + 1, closingBrace) + ")", SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES);
      component.append(label.substring(closingBrace + 1), attributes);
    }

    if (isOccurrenceOfSelectedFrame(selectedDescriptor, descriptor) && descriptor.isRecursiveCall()) {
      component.append(" [" + descriptor.getOccurrenceIndex() + "]", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES);
    }
  }
public static void customizePresentation(StackFrameDescriptorImpl descriptor,
                                           @NotNull ColoredTextContainer component,
                                           @Nullable StackFrameDescriptorImpl selectedDescriptor)