diff --git a/src/com/google/testing/littlemock/LittleMock.java b/src/com/google/testing/littlemock/LittleMock.java
index 0d93c4f..9946798 100644
--- a/src/com/google/testing/littlemock/LittleMock.java
+++ b/src/com/google/testing/littlemock/LittleMock.java
@@ -898,7 +898,7 @@
   }
 
   /** Represents something capable of testing if it matches an argument or not. */
-  /*package*/ interface ArgumentMatcher {
+  public interface ArgumentMatcher {
     public boolean matches(Object value);
   }
 
@@ -980,6 +980,12 @@
     return value;
   }
 
+  /** A custom argument matcher, should be used only for object arguments not primitives. */
+  public static <T> T matches(ArgumentMatcher argument) {
+    sMatchArguments.add(argument);
+    return null;
+  }
+
   /** Utility method to throw an AssertionError if an assertion fails. */
   private static void expect(boolean result, String message) {
     if (!result) {
diff --git a/tests/com/google/testing/littlemock/LittleMockTest.java b/tests/com/google/testing/littlemock/LittleMockTest.java
index fde8c7c..ad12f3e 100644
--- a/tests/com/google/testing/littlemock/LittleMockTest.java
+++ b/tests/com/google/testing/littlemock/LittleMockTest.java
@@ -39,6 +39,7 @@
 import static com.google.testing.littlemock.LittleMock.eq;
 import static com.google.testing.littlemock.LittleMock.initMocks;
 import static com.google.testing.littlemock.LittleMock.isA;
+import static com.google.testing.littlemock.LittleMock.matches;
 import static com.google.testing.littlemock.LittleMock.mock;
 import static com.google.testing.littlemock.LittleMock.never;
 import static com.google.testing.littlemock.LittleMock.reset;
@@ -48,6 +49,8 @@
 import static com.google.testing.littlemock.LittleMock.verifyNoMoreInteractions;
 import static com.google.testing.littlemock.LittleMock.verifyZeroInteractions;
 
+import com.google.testing.littlemock.LittleMock.ArgumentMatcher;
+
 import junit.framework.TestCase;
 
 import java.io.IOException;
@@ -1413,6 +1416,20 @@
     } catch (IllegalStateException expected) {}
   }
 
+  public void testCustomMatcher() {
+    ArgumentMatcher argumentMatcher = new ArgumentMatcher() {
+      @Override
+      public boolean matches(Object value) {
+        return ((String) value).contains("[]");
+      }
+    };
+    mFoo.add("as[]df");
+    mFoo.add("qwer[]asdf");
+    mFoo.add("1234");
+    verify(mFoo, times(3)).add(anyString());
+    verify(mFoo, times(2)).add((String) matches(argumentMatcher));
+  }
+
   public static class Jim {
     public void bob() {
       fail();
