@Override
  public void appendMirrorText(int indentLevel, @NotNull StringBuilder buffer) {
    PsiClassType @NotNull [] types = getStub().getReferencedTypes();
    if (types.length != 0) {
      Role role = getRole();
      switch (role) {
        case EXTENDS_BOUNDS_LIST:
          buffer.append(' ').append(PsiKeyword.EXTENDS).append(' ');
          break;
        case EXTENDS_LIST:
          buffer.append(PsiKeyword.EXTENDS).append(' ');
          break;
        case IMPLEMENTS_LIST:
          buffer.append(PsiKeyword.IMPLEMENTS).append(' ');
          break;
        case PERMITS_LIST:
          buffer.append(PsiKeyword.PERMITS).append(' ');
          break;
        case THROWS_LIST:
          buffer.append(PsiKeyword.THROWS).append(' ');
          break;
        case PROVIDES_WITH_LIST:
          buffer.append(PsiKeyword.WITH).append(' ');
          break;
      }
      for (int i = 0; i < types.length; i++) {
        if (i > 0) buffer.append(role == Role.EXTENDS_BOUNDS_LIST ? " & " : ", ");
        buffer.append(types[i].getCanonicalText(true));
      }
    }
  }
@Override
  public void appendMirrorText(int indentLevel, @NotNull StringBuilder buffer)