diff --git a/api/src/main/java/jakarta/el/MethodExpression.java b/api/src/main/java/jakarta/el/MethodExpression.java
index 83668a2..2136e29 100644
--- a/api/src/main/java/jakarta/el/MethodExpression.java
+++ b/api/src/main/java/jakarta/el/MethodExpression.java
@@ -110,4 +110,31 @@
     public boolean isParametersProvided() {
         return false;
     }
+    
+    /**
+     * Obtain the {@link MethodReference} for the method to which this method
+     * expression resolves.
+     *
+     * @param context The EL context for this evaluation
+     *
+     * @return This default implementation always returns <code>null</code>
+     *
+     * @throws NullPointerException
+     *              If the supplied context is <code>null</code>
+     * @throws PropertyNotFoundException
+     *              If a property/variable resolution failed because no match
+     *              was found or a match was found but was not readable
+     * @throws MethodNotFoundException
+     *              If no matching method can be found
+     * @throws ELException
+     *              Wraps any exception throw whilst resolving the property
+     *
+     * @since EL 5.0
+     */
+    public MethodReference getMethodReference(ELContext context) {
+        // Expected to be over-ridden by implementations
+        context.notifyBeforeEvaluation(getExpressionString());
+        context.notifyAfterEvaluation(getExpressionString());
+        return null;
+    }
 }
diff --git a/api/src/main/java/jakarta/el/MethodReference.java b/api/src/main/java/jakarta/el/MethodReference.java
new file mode 100644
index 0000000..5d4e39a
--- /dev/null
+++ b/api/src/main/java/jakarta/el/MethodReference.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package jakarta.el;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * Provides information about the method to which a method expression resolves.
+ */
+public class MethodReference {
+
+    private final Object base;
+    private final MethodInfo methodInfo;
+    private final Annotation[] annotations;
+    private final Object[] evaluatedParameters;
+
+
+    public MethodReference(Object base, MethodInfo methodInfo, Annotation[] annotations, Object[] evaluatedParameters) {
+        this.base = base;
+        this.methodInfo = methodInfo;
+        this.annotations = annotations;
+        this.evaluatedParameters = evaluatedParameters;
+    }
+
+
+    /**
+     * Obtain the base object on which the method will be invoked.
+     *
+     * @return The base object on which the method will be invoked or
+     *         {@code null} for literal method expressions.
+     */
+    public Object getBase() {
+        return base;
+    }
+
+
+    /**
+     * Obtain the {@link MethodInfo} for the {@link MethodExpression} for which
+     * this {@link MethodReference} has been generated.
+     *
+     * @return The {@link MethodInfo} for the {@link MethodExpression} for which
+     *         this {@link MethodReference} has been generated.
+     */
+    public MethodInfo getMethodInfo() {
+        return this.methodInfo;
+    }
+
+
+    /**
+     * Obtain the annotations on the method to which the associated expression
+     * resolves.
+     *
+     * @return The annotations on the method to which the associated expression
+     *         resolves. If the are no annotations, then an empty array is
+     *         returned.
+     */
+    public Annotation[] getAnnotations() {
+        return annotations;
+    }
+
+
+    /**
+     * Obtain the evaluated parameter values that will be passed to the method
+     * to which the associated expression resolves.
+     *
+     *  @return The evaluated parameters.
+     */
+    public Object[] getEvaluatedParameters() {
+        return evaluatedParameters;
+    }
+}
diff --git a/spec/src/main/asciidoc/ELSpec.adoc b/spec/src/main/asciidoc/ELSpec.adoc
index fb85d8c..18e4c1c 100644
--- a/spec/src/main/asciidoc/ELSpec.adoc
+++ b/spec/src/main/asciidoc/ELSpec.adoc
@@ -2961,6 +2961,11 @@
   Remove the deprecated, mis-spelt method
   `MethodExpression#isParmetersProvided()` from the API
 
+* https://github.com/eclipse-ee4j/el-ri/issues/154[#154]
+  Add the `MethodReference` class to provide access to details of the method to
+  which a `MethodExpression` resolves, including any annotations present on the
+  method.
+
 * https://github.com/eclipse-ee4j/el-ri/issues/157[#157]
   Generics are now used where appropriate throughout the API
 
