  	@Override 
  	public Object eval(Bindings bindings, ELContext context) {
  		return value;
-Index: src/main/java/de/odysseus/el/util/SimpleResolver.java
-===================================================================
---- src/main/java/de/odysseus/el/util/SimpleResolver.java	(revision 63)
-+++ src/main/java/de/odysseus/el/util/SimpleResolver.java	(working copy)
+Index: main/java/de/odysseus/el/util/SimpleResolver.java
+===================================================================
+--- main/java/de/odysseus/el/util/SimpleResolver.java	(revision 63)
++++ main/java/de/odysseus/el/util/SimpleResolver.java	(working copy)
 @@ -144,5 +144,12 @@
  		} else {
  			delegate.setValue(context, base, property, value);

 				public FeatureDescriptor next() {
 					PropertyDescriptor property = properties[next++];
 					FeatureDescriptor feature = new FeatureDescriptor();
@@ -206,6 +211,7 @@
 					feature.setValue(RESOLVABLE_AT_DESIGN_TIME, true);
 					return feature;
 				}

+		assertNull(parseNode("${base.bar()}").getMethodInfo(bindings, context, null, new Class[]{long.class}));
 	}
 }
Index: test/java/javax/el/BeanELResolverTest.java
===================================================================
--- test/java/javax/el/BeanELResolverTest.java	(revision 63)
+++ test/java/javax/el/BeanELResolverTest.java	(working copy)
@@ -16,7 +16,7 @@
 		public int getReadOnly() {
 			return readOnly;
 		}
-		void setReadOnly(int readOnly) {
+		protected void setReadOnly(int readOnly) {
 			this.readOnly = readOnly;
 		}
 		public int getReadWrite() {
@@ -31,6 +31,19 @@
 		public void setWriteOnly(int writeOnly) {
 			this.writeOnly = writeOnly;
 		}
+		public int add(int n, int... rest) {
+			for (int x : rest) {
+				n += x;
+			}
+			return n;
+		}
+		public String cat(String... strings) {
+			StringBuilder b = new StringBuilder();
+			for (String s : strings) {
+				b.append(s);
+			}
+			return b.toString();
+		}
 	}
 
 	ELContext context = new SimpleContext();
@@ -216,4 +229,27 @@
 			// fine
 		}
 	}
+
+	public void testInvoke() {
+		BeanELResolver resolver = new BeanELResolver();
+		
+		assertEquals(1, resolver.invoke(context, new TestBean(), "add", null, new Integer[]{1}));
+		assertEquals(6, resolver.invoke(context, new TestBean(), "add", null, new Integer[]{1, 2, 3}));
+		assertEquals(6, resolver.invoke(context, new TestBean(), "add", null, new String[]{"1", "2", "3"}));
+		assertEquals(6, resolver.invoke(context, new TestBean(), "add", null, new Object[]{1, new int[]{2, 3}}));
+		assertEquals(6, resolver.invoke(context, new TestBean(), "add", null, new Object[]{1, new Double[]{2.0, 3.0}}));
+
+		assertEquals("", resolver.invoke(context, new TestBean(), "cat", null, new Object[0]));
+		assertEquals("", resolver.invoke(context, new TestBean(), "cat", null, null));
+		assertEquals("123", resolver.invoke(context, new TestBean(), "cat", null, new Object[]{123}));
+		assertEquals("123", resolver.invoke(context, new TestBean(), "cat", null, new Integer[]{1, 2, 3}));
+		assertEquals("123", resolver.invoke(context, new TestBean(), "cat", null, new Object[]{new String[]{"1", "2", "3"}}));
+	
+		TestBean bean = new TestBean();
+		bean.setReadWrite(1);
+		assertNull(resolver.invoke(context, bean, "setReadWrite", null, new Object[]{null}));
+		assertEquals(0, bean.getReadWrite());
+		assertNull(resolver.invoke(context, bean, "setReadWrite", null, new Object[]{5}));
+		assertEquals(5, bean.getReadWrite());
+	}
 }
