public static @Nullable IfConditionalModel from(@NotNull PsiIfStatement ifStatement, boolean allowOuterControlFlow) {
    IfConditionalModel model;
    model = extractFromAssignment(ifStatement);
    if (model != null) return model;
    model = extractFromImplicitAssignment(ifStatement);
    if (model != null) return model;
    model = extractFromOverwrittenDeclaration(ifStatement);
    if (model != null) return model;
    model = extractFromImplicitReturn(ifStatement, allowOuterControlFlow);
    if (model != null) return model;
    model = extractFromReturn(ifStatement);
    if (model != null) return model;
    model = extractFromYield(ifStatement);
    if (model != null) return model;
    model = extractFromImplicitYield(ifStatement);
    if (model != null) return model;
    return extractFromMethodCall(ifStatement);
  }
public static @Nullable IfConditionalModel from(@NotNull PsiIfStatement ifStatement, boolean allowOuterControlFlow)