From b2d8176117dc2910bfd14a2acf3effde6232730f Mon Sep 17 00:00:00 2001
From: Andrei Solntsev <andrei.solntsev@gmail.com>
Date: Thu, 27 Mar 2025 22:57:10 +0200
Subject: [PATCH] use generics for AbstractFindByBuilder to avoid excessive
 casting

---
 .../org/openqa/selenium/support/AbstractFindByBuilder.java   | 4 ++--
 java/src/org/openqa/selenium/support/FindAll.java            | 5 ++---
 java/src/org/openqa/selenium/support/FindBy.java             | 5 ++---
 java/src/org/openqa/selenium/support/FindBys.java            | 5 ++---
 4 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/java/src/org/openqa/selenium/support/AbstractFindByBuilder.java b/java/src/org/openqa/selenium/support/AbstractFindByBuilder.java
index 645d17dafa5c7..c80dfea948081 100644
--- a/java/src/org/openqa/selenium/support/AbstractFindByBuilder.java
+++ b/java/src/org/openqa/selenium/support/AbstractFindByBuilder.java
@@ -22,9 +22,9 @@
 import java.util.Set;
 import org.openqa.selenium.By;
 
-public abstract class AbstractFindByBuilder {
+public abstract class AbstractFindByBuilder<T> {
 
-  public abstract By buildIt(Object annotation, Field field);
+  public abstract By buildIt(T annotation, Field field);
 
   protected By buildByFromFindBy(FindBy findBy) {
     assertValidFindBy(findBy);
diff --git a/java/src/org/openqa/selenium/support/FindAll.java b/java/src/org/openqa/selenium/support/FindAll.java
index fb49995e53625..64ec4a6d95164 100644
--- a/java/src/org/openqa/selenium/support/FindAll.java
+++ b/java/src/org/openqa/selenium/support/FindAll.java
@@ -45,10 +45,9 @@
 public @interface FindAll {
   FindBy[] value();
 
-  class FindByBuilder extends AbstractFindByBuilder {
+  class FindByBuilder extends AbstractFindByBuilder<FindAll> {
     @Override
-    public By buildIt(Object annotation, Field field) {
-      FindAll findBys = (FindAll) annotation;
+    public By buildIt(FindAll findBys, Field field) {
       assertValidFindAll(findBys);
 
       FindBy[] findByArray = findBys.value();
diff --git a/java/src/org/openqa/selenium/support/FindBy.java b/java/src/org/openqa/selenium/support/FindBy.java
index 5030c45b07c3c..adfb07d2d137c 100644
--- a/java/src/org/openqa/selenium/support/FindBy.java
+++ b/java/src/org/openqa/selenium/support/FindBy.java
@@ -74,10 +74,9 @@
 
   String xpath() default "";
 
-  class FindByBuilder extends AbstractFindByBuilder {
+  class FindByBuilder extends AbstractFindByBuilder<FindBy> {
     @Override
-    public By buildIt(Object annotation, Field field) {
-      FindBy findBy = (FindBy) annotation;
+    public By buildIt(FindBy findBy, Field field) {
       assertValidFindBy(findBy);
 
       By ans = buildByFromShortFindBy(findBy);
diff --git a/java/src/org/openqa/selenium/support/FindBys.java b/java/src/org/openqa/selenium/support/FindBys.java
index 67b54328aee7f..1877e85d2d9dd 100644
--- a/java/src/org/openqa/selenium/support/FindBys.java
+++ b/java/src/org/openqa/selenium/support/FindBys.java
@@ -44,10 +44,9 @@
 public @interface FindBys {
   FindBy[] value();
 
-  class FindByBuilder extends AbstractFindByBuilder {
+  class FindByBuilder extends AbstractFindByBuilder<FindBys> {
     @Override
-    public By buildIt(Object annotation, Field field) {
-      FindBys findBys = (FindBys) annotation;
+    public By buildIt(FindBys findBys, Field field) {
       assertValidFindBys(findBys);
 
       FindBy[] findByArray = findBys.value();