ParameterInfoControllerBase.Model update(boolean singleParameterInfo) {
    MyParameterContext context = new MyParameterContext(singleParameterInfo);

    int highlightedComponentIdx = -1;
    Object[] descriptors = myParameterInfoControllerData.getDescriptors();
    for (int i = 0; i < descriptors.length; i++) {
      context.i = i;
      final Object o = descriptors[i];

      boolean isHighlighted = descriptors[i].equals(myParameterInfoControllerData.getHighlighted());
      if (isHighlighted) {
        context.result.highlightedSignature = i;
      }
      if (singleParameterInfo && descriptors.length > 1 && !context.isHighlighted()) {
        setVisible(i, false);
      }
      else {
        setVisible(i, true);
        DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> {
          try (AccessToken ignore = SlowOperations.knownIssue("IDEA-305563, EA-819694")) {
            myParameterInfoControllerData.getHandler().updateUI(o, context);
          }
        });

        setVisible(i, context.isUIComponentVisible());

        // ensure that highlighted element is visible
        if (context.isHighlighted()) {
          highlightedComponentIdx = i;
        }
      }
    }

    if (myShortcutLabel != null) myShortcutLabel.setVisible(!singleParameterInfo);

    if (myCustomBottomComponent != null) {
      myParameterInfoControllerData.getHandler().updateBottomComponent(myCustomBottomComponent);
    }

    updateLabels();

    if (highlightedComponentIdx != -1) {
      myMainPanel.scrollRectToVisible(new Rectangle()); // hack to validate component tree synchronously
      myMainPanel.scrollRectToVisible(myPanels[highlightedComponentIdx].getBounds());
    }

    var project = myEditor.getProject();
    myDumbLabel.setVisible(project != null && DumbService.isDumb(project));

    return context.result;
  }
ParameterInfoControllerBase.Model update(boolean singleParameterInfo)