private static Function<PsiElement, ExceptionLineRefiner.RefinerMatchResult> getFallbackExtractor() {
    return e -> {
      ExceptionLineRefiner.RefinerMatchResult matchResult = fromThrow(e);
      if (matchResult != null) return matchResult;
      matchResult = fromSynchronized(e);
      if (matchResult != null) return matchResult;
      matchResult = matchCompilerGeneratedNullCheck(e);
      if (matchResult != null) return matchResult;
      matchResult = fromUnboxing(e, null);
      if (matchResult != null) return matchResult;
      PsiElement nextVisible = PsiTreeUtil.nextVisibleLeaf(e);
      if (nextVisible instanceof PsiJavaToken token && token.getTokenType().equals(JavaTokenType.LBRACKET)) {
        PsiArrayAccessExpression arrayAccess = tryCast(nextVisible.getParent(), PsiArrayAccessExpression.class);
        if (arrayAccess != null) {
          PsiExpression arrayExpression = arrayAccess.getArrayExpression();
          if (mayBeNull(arrayExpression)) return onTheSameLineFor(e, arrayExpression, false);
        }
      }
      PsiElement next = null;
      if (nextVisible instanceof PsiJavaToken token && token.getTokenType().equals((JavaTokenType.DOT))) {
        next = token;
      }
      PsiElement prevVisible = PsiTreeUtil.prevVisibleLeaf(e);
      if (prevVisible instanceof PsiJavaToken token && token.getTokenType().equals((JavaTokenType.DOT))) {
        if (next == null) {
          next = token;
        }
        else {
          next = null;
        }
      }
      if (next != null) {
        PsiReferenceExpression ref = tryCast(next.getParent(), PsiReferenceExpression.class);
        if (ref != null) {
          PsiExpression qualifier = ref.getQualifierExpression();
          if (mayBeNull(qualifier)) return onTheSameLineFor(e, qualifier, false);
        }
      }
      return null;
    };
  }
private static Function<PsiElement, ExceptionLineRefiner.RefinerMatchResult> getFallbackExtractor()