@Override
  public PsiType @NotNull [] getTypeArguments() {
    if (shouldInferTypeArguments(this)) {
      return getDiamondTypes(this);
    }
    else {
      return super.getTypeArguments();
    }
  }
@Override
  public PsiType @NotNull [] getTypeArguments()