diff --git a/api/src/main/java/org/apache/myfaces/core/api/shared/lang/PropertyDescriptorUtils.java b/api/src/main/java/org/apache/myfaces/core/api/shared/lang/PropertyDescriptorUtils.java
index 4bac081..c0c56c8 100644
--- a/api/src/main/java/org/apache/myfaces/core/api/shared/lang/PropertyDescriptorUtils.java
+++ b/api/src/main/java/org/apache/myfaces/core/api/shared/lang/PropertyDescriptorUtils.java
@@ -43,10 +43,10 @@
 public class PropertyDescriptorUtils
 {
     /**
-     * Defines if MethodHandles and LambdaMetafactory instead of Reflection should be used for getter/setter.
+     * Defines if Lambda expressions (via LambdaMetafactory) are used for getter/setter instead of Reflection.
      */
     @JSFWebConfigParam(since="2.3-next", defaultValue="true", expectedValues="true,false", tags="performance")
-    public static final String USE_METHOD_HANDLES = "org.apache.myfaces.USE_METHOD_HANDLES";
+    public static final String USE_LAMBDA_METAFACTORY = "org.apache.myfaces.USE_LAMBDA_METAFACTORY";
 
     private static final String CACHE_KEY = PropertyDescriptorUtils.class.getName() + ".CACHE";
 
@@ -76,7 +76,7 @@
         return getCache(ec).computeIfAbsent(target.getName(), k -> getPropertyDescriptors(ec, target, false));
     }
 
-    public static boolean isMethodHandlesSupported(ExternalContext ec)
+    public static boolean isUseLambdaMetafactory(ExternalContext ec)
     {
         if (privateLookupIn == null)
         {
@@ -84,7 +84,7 @@
         }
         
         // activated per default
-        String useMethodHandles = ec.getInitParameter(USE_METHOD_HANDLES);
+        String useMethodHandles = ec.getInitParameter(USE_LAMBDA_METAFACTORY);
         return useMethodHandles == null || useMethodHandles.trim().isEmpty() || useMethodHandles.contains("true");
     }
 
@@ -92,7 +92,7 @@
             Class<?> target,
             boolean skipPropertyWithoutReadMethod)
     {
-        if (isMethodHandlesSupported(ec))
+        if (isUseLambdaMetafactory(ec))
         {
             return getLambdaPropertyDescriptors(target);
         }
diff --git a/extensions/quarkus/runtime/src/main/java/org/apache/myfaces/core/extensions/quarkus/runtime/graal/NativePropertyDescriptorUtils.java b/extensions/quarkus/runtime/src/main/java/org/apache/myfaces/core/extensions/quarkus/runtime/graal/NativePropertyDescriptorUtils.java
index 3221c0a..74e7b29 100644
--- a/extensions/quarkus/runtime/src/main/java/org/apache/myfaces/core/extensions/quarkus/runtime/graal/NativePropertyDescriptorUtils.java
+++ b/extensions/quarkus/runtime/src/main/java/org/apache/myfaces/core/extensions/quarkus/runtime/graal/NativePropertyDescriptorUtils.java
@@ -27,7 +27,7 @@
 public final class NativePropertyDescriptorUtils
 {
     @Substitute
-    public static boolean isMethodHandlesSupported(ExternalContext ec)
+    public static boolean isUseLambdaMetafactory(ExternalContext ec)
     {
         return false;
     }
diff --git a/impl/src/main/java/org/apache/myfaces/el/ELResolverBuilderForFaces.java b/impl/src/main/java/org/apache/myfaces/el/ELResolverBuilderForFaces.java
index 9587d37..50089d9 100644
--- a/impl/src/main/java/org/apache/myfaces/el/ELResolverBuilderForFaces.java
+++ b/impl/src/main/java/org/apache/myfaces/el/ELResolverBuilderForFaces.java
@@ -141,7 +141,7 @@
         list.add(new MapELResolver());
         list.add(new ListELResolver());
         list.add(new ArrayELResolver());
-        if (PropertyDescriptorUtils.isMethodHandlesSupported(facesContext.getExternalContext()))
+        if (PropertyDescriptorUtils.isUseLambdaMetafactory(facesContext.getExternalContext()))
         {
             list.add(new LambdaBeanELResolver(facesContext.getExternalContext()));
         }
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
index aedd5d1..b7f110c 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
@@ -326,7 +326,7 @@
         {
             try
             {
-                if (PropertyDescriptorUtils.isMethodHandlesSupported(
+                if (PropertyDescriptorUtils.isUseLambdaMetafactory(
                         FacesContext.getCurrentInstance().getExternalContext()))
                 {
                     meta = new LambdaMetadataTargetImpl(_type);
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeMetaRulesetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeMetaRulesetImpl.java
index e708320..003f1d3 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeMetaRulesetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeMetaRulesetImpl.java
@@ -214,7 +214,7 @@
         {
             try
             {
-                if (PropertyDescriptorUtils.isMethodHandlesSupported(
+                if (PropertyDescriptorUtils.isUseLambdaMetafactory(
                         FacesContext.getCurrentInstance().getExternalContext()))
                 {
                     meta = new LambdaMetadataTargetImpl(_type);
