class ExecModelLambdaPostProcessor {

    public void convertLambdas() {

        clone.findAll(MethodCallExpr.class, mc -> PatternExpressionBuilder.EXPR_CALL.equals(mc.getNameAsString()) ||
                                                  FlowExpressionBuilder.EXPR_CALL.equals(mc.getNameAsString()))
             .forEach(methodCallExpr1 -> {
                 if (containsTemporalPredicate(methodCallExpr1)) {
                     this.convertTemporalExpr(methodCallExpr1);
                 } else {
                     extractLambdaFromMethodCall(methodCallExpr1, () -> new MaterializedLambdaPredicate(packageName, ruleClassName));
                 }
             });

        clone.findAll(MethodCallExpr.class, mc -> INDEXED_BY_CALL.contains(mc.getName().asString()))
             .forEach(this::convertIndexedByCall);

        clone.findAll(MethodCallExpr.class, mc -> ALPHA_INDEXED_BY_CALL.contains(mc.getName().asString()))
             .forEach(this::convertIndexedByCall);

        clone.findAll(MethodCallExpr.class, mc -> BETA_INDEXED_BY_CALL.contains(mc.getName().asString()))
             .forEach(this::convertIndexedByCall);

        clone.findAll(MethodCallExpr.class, mc -> PatternExpressionBuilder.BIND_CALL.equals(mc.getNameAsString()))
             .forEach(this::convertBindCall);

        clone.findAll(MethodCallExpr.class, mc -> FlowExpressionBuilder.BIND_CALL.equals(mc.getNameAsString()))
             .forEach(this::convertBindCallForFlowDSL);

        clone.findAll(MethodCallExpr.class, mc -> FROM_CALL.equals(mc.getNameAsString()) ||
                                                  REACTIVE_FROM_CALL.equals(mc.getNameAsString()))
             .forEach(this::convertFromCall);

        clone.findAll(MethodCallExpr.class, this::isExecuteNonNestedCall)
             .forEach(methodCallExpr -> {
                 List<MaterializedLambda.BitMaskVariable> bitMaskVariables = findBitMaskFields(methodCallExpr);
                 extractLambdaFromMethodCall(methodCallExpr, () -> new MaterializedLambdaConsequence(packageName, ruleClassName, bitMaskVariables));
             });
    }

    public  ExecModelLambdaPostProcessor(PackageModel pkgModel,
                                        CompilationUnit clone);
    public  ExecModelLambdaPostProcessor(Map<String, CreatedClass> lambdaClasses,
                                        String packageName,
                                        String ruleClassName,
                                        Collection<String> imports,
                                        Collection<String> staticImports,
                                        Map<LambdaExpr, java.lang.reflect.Type> lambdaReturnTypes,
                                        CompilationUnit clone);

}