@Nullable
  public static PsiType getElementType(@NotNull PsiElement psi) {
    List<? extends ThreadLocalTypes> stack = ourGuard.currentStack();
    for (int i = stack.size() - 1; i >= 0; i--) {
      ThreadLocalTypes types = stack.get(i);
      PsiType type = types.myMap.get(psi);
      if (type != null) {
        if (types.myProhibitCaching) {
          ourGuard.prohibitResultCaching(types);
        }
        return type;
      }
    }
    return null;
  }
@Nullable
  public static PsiType getElementType(@NotNull PsiElement psi)