From a7571c9fee75e341392e474779f446f7d731d624 Mon Sep 17 00:00:00 2001
From: Tim te Beek <timtebeek@gmail.com>
Date: Mon, 7 Aug 2023 21:29:59 +0000
Subject: [PATCH 1/3] refactor: Use method references in lambda

Use this link to re-run the recipe: https://app.moderne.io/recipes/org.openrewrite.staticanalysis.ReplaceLambdaWithMethodReference?organizationId=T3BlblJld3JpdGU%3D

Co-authored-by: Moderne <team@moderne.io>
---
 .../analysis/controlflow/ControlFlowSummary.java     | 12 ++++++------
 .../openrewrite/analysis/dataflow/DataFlowNode.java  |  2 +-
 .../dataflow/global/GlobalDataFlowAccumulator.java   |  2 +-
 .../org/openrewrite/analysis/search/FindMethods.java |  2 +-
 .../openrewrite/analysis/trait/expr/VarAccess.java   |  2 +-
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/openrewrite/analysis/controlflow/ControlFlowSummary.java b/src/main/java/org/openrewrite/analysis/controlflow/ControlFlowSummary.java
index 8ea49302f..29924a39b 100644
--- a/src/main/java/org/openrewrite/analysis/controlflow/ControlFlowSummary.java
+++ b/src/main/java/org/openrewrite/analysis/controlflow/ControlFlowSummary.java
@@ -59,16 +59,16 @@ private static void recurseGetAllControlFlowNodes(ControlFlowNode current, Set<C
     public Set<ControlFlowNode.BasicBlock> getBasicBlocks() {
         return getAllNodes()
                 .stream()
-                .filter(node -> node instanceof ControlFlowNode.BasicBlock)
-                .map(node -> (ControlFlowNode.BasicBlock) node)
+                .filter(org.openrewrite.analysis.controlflow.ControlFlowNode.BasicBlock.class::isInstance)
+                .map(org.openrewrite.analysis.controlflow.ControlFlowNode.BasicBlock.class::cast)
                 .collect(Collectors.toSet());
     }
 
     public Set<ControlFlowNode.ConditionNode> getConditionNodes() {
         return getAllNodes()
                 .stream()
-                .filter(node -> node instanceof ControlFlowNode.ConditionNode)
-                .map(node -> (ControlFlowNode.ConditionNode) node)
+                .filter(org.openrewrite.analysis.controlflow.ControlFlowNode.ConditionNode.class::isInstance)
+                .map(org.openrewrite.analysis.controlflow.ControlFlowNode.ConditionNode.class::cast)
                 .collect(Collectors.toSet());
     }
 
@@ -92,8 +92,8 @@ public Set<ControlFlowNode.BasicBlock> computeReachableBasicBlock(BarrierGuardPr
         recurseComputeReachableBasicBlock(start, predicate, reachable);
         return reachable
                 .stream()
-                .filter(cfn -> cfn instanceof ControlFlowNode.BasicBlock)
-                .map(cfn -> (ControlFlowNode.BasicBlock) cfn)
+                .filter(org.openrewrite.analysis.controlflow.ControlFlowNode.BasicBlock.class::isInstance)
+                .map(org.openrewrite.analysis.controlflow.ControlFlowNode.BasicBlock.class::cast)
                 .collect(Collectors.toSet());
     }
 
diff --git a/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java b/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
index d77dc7fca..3c37ee9ae 100644
--- a/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
+++ b/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
@@ -65,7 +65,7 @@ public static Option<DataFlowNode> of(Cursor cursor) {
                     .toOption()
                     .map(expr -> new ExpressionDataFlowNode(cursor, expr));
         } else if (cursor.getValue() instanceof J.VariableDeclarations.NamedVariable) {
-            return Parameter.viewOf(cursor).map(parameter -> (DataFlowNode) new ParameterDataFlowNode(cursor, parameter)).toOption();
+            return Parameter.viewOf(cursor).map(DataFlowNode.class::cast).toOption();
         } else {
             return Option.none();
         }
diff --git a/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java b/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
index cf2deec65..e834d961a 100644
--- a/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
+++ b/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
@@ -346,7 +346,7 @@ public GlobalDataFlow.Summary summary(Cursor cursor) {
         }
         return DataFlowNode
                 .of(cursor)
-                .map(n -> (GlobalDataFlow.Summary) new ResultSummary(n, prunedParticipatingNodes))
+                .map(org.openrewrite.analysis.dataflow.global.GlobalDataFlow.Summary.class::cast)
                 .orSome(AlwaysFalseSummary.INSTANCE);
     }
 
diff --git a/src/main/java/org/openrewrite/analysis/search/FindMethods.java b/src/main/java/org/openrewrite/analysis/search/FindMethods.java
index 90c8531ac..ccb836296 100644
--- a/src/main/java/org/openrewrite/analysis/search/FindMethods.java
+++ b/src/main/java/org/openrewrite/analysis/search/FindMethods.java
@@ -209,7 +209,7 @@ public static Set<J> find(J j, String methodPattern, boolean matchOverrides) {
                 )
                 .stream()
                 .filter(t -> t instanceof J.MethodInvocation || t instanceof J.MemberReference || t instanceof J.NewClass)
-                .map(t -> (J) t)
+                .map(J.class::cast)
                 .collect(Collectors.toSet());
     }
 
diff --git a/src/main/java/org/openrewrite/analysis/trait/expr/VarAccess.java b/src/main/java/org/openrewrite/analysis/trait/expr/VarAccess.java
index e5caa7d31..9e8442701 100644
--- a/src/main/java/org/openrewrite/analysis/trait/expr/VarAccess.java
+++ b/src/main/java/org/openrewrite/analysis/trait/expr/VarAccess.java
@@ -137,7 +137,7 @@ public boolean hasQualifier() {
 
     @Override
     public Option<Expr> getQualifier() {
-        return InstanceAccess.viewOf(cursor.getParentTreeCursor()).map(e -> (Expr) e).toOption();
+        return InstanceAccess.viewOf(cursor.getParentTreeCursor()).map(Expr.class::cast).toOption();
     }
 
     @Override

From da821471849d6ad87a3c7526e28f0f735826deb1 Mon Sep 17 00:00:00 2001
From: Tim te Beek <timtebeek@gmail.com>
Date: Mon, 7 Aug 2023 22:37:03 +0100
Subject: [PATCH 2/3] Revert DataFlowNode cast

---
 .../java/org/openrewrite/analysis/dataflow/DataFlowNode.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java b/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
index 3c37ee9ae..d77dc7fca 100644
--- a/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
+++ b/src/main/java/org/openrewrite/analysis/dataflow/DataFlowNode.java
@@ -65,7 +65,7 @@ public static Option<DataFlowNode> of(Cursor cursor) {
                     .toOption()
                     .map(expr -> new ExpressionDataFlowNode(cursor, expr));
         } else if (cursor.getValue() instanceof J.VariableDeclarations.NamedVariable) {
-            return Parameter.viewOf(cursor).map(DataFlowNode.class::cast).toOption();
+            return Parameter.viewOf(cursor).map(parameter -> (DataFlowNode) new ParameterDataFlowNode(cursor, parameter)).toOption();
         } else {
             return Option.none();
         }

From 3c65843fa84829cf013b5fa8bde225a7b383d0c5 Mon Sep 17 00:00:00 2001
From: Tim te Beek <timtebeek@gmail.com>
Date: Mon, 7 Aug 2023 22:43:32 +0100
Subject: [PATCH 3/3] Revert GlobalDataFlowAccumulator cast

---
 .../analysis/dataflow/global/GlobalDataFlowAccumulator.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java b/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
index e834d961a..cf2deec65 100644
--- a/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
+++ b/src/main/java/org/openrewrite/analysis/dataflow/global/GlobalDataFlowAccumulator.java
@@ -346,7 +346,7 @@ public GlobalDataFlow.Summary summary(Cursor cursor) {
         }
         return DataFlowNode
                 .of(cursor)
-                .map(org.openrewrite.analysis.dataflow.global.GlobalDataFlow.Summary.class::cast)
+                .map(n -> (GlobalDataFlow.Summary) new ResultSummary(n, prunedParticipatingNodes))
                 .orSome(AlwaysFalseSummary.INSTANCE);
     }