public static <T> T performWithTargetType(@NotNull PsiElement element, @NotNull PsiType targetType, @NotNull Supplier<? extends T> producer) {
    return ThreadLocalTypes.performWithTypes(types -> {
      types.forceType(element, targetType);
      return producer.get();
    });
  }
public static <T> T performWithTargetType(@NotNull PsiElement element, @NotNull PsiType targetType, @NotNull Supplier<? extends T> producer)