diff --git a/library/src/org/hamcrest/Matchers.java b/library/src/org/hamcrest/Matchers.java
index b78864a..ce550b5 100644
--- a/library/src/org/hamcrest/Matchers.java
+++ b/library/src/org/hamcrest/Matchers.java
@@ -70,7 +70,7 @@
      * Evaluates to true only if ALL of the passed in matchers evaluate to true.
      */
     public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? extends T>... matchers) {
-        return org.hamcrest.core.AllOf.allOf(matchers);
+        return org.hamcrest.core.AllOf.<T>allOf(matchers);
     }
 
     /**
@@ -84,7 +84,7 @@
      * Evaluates to true if ANY of the passed in matchers evaluate to true.
      */
     public static <T> org.hamcrest.Matcher<T> anyOf(org.hamcrest.Matcher<? extends T>... matchers) {
-        return org.hamcrest.core.AnyOf.anyOf(matchers);
+        return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
     }
 
     /**
@@ -175,11 +175,11 @@
     }
 
     public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItem(org.hamcrest.Matcher<? extends T> elementMatcher) {
-        return org.hamcrest.collection.IsCollectionContaining.hasItem(elementMatcher);
+        return org.hamcrest.collection.IsCollectionContaining.<T>hasItem(elementMatcher);
     }
 
     public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(org.hamcrest.Matcher<? extends T>... elementMatchers) {
-        return org.hamcrest.collection.IsCollectionContaining.hasItems(elementMatchers);
+        return org.hamcrest.collection.IsCollectionContaining.<T>hasItems(elementMatchers);
     }
 
     public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... elements) {
diff --git a/src/org/hamcrest/CoreMatchers.java b/src/org/hamcrest/CoreMatchers.java
index fac3acf..dd36acb 100644
--- a/src/org/hamcrest/CoreMatchers.java
+++ b/src/org/hamcrest/CoreMatchers.java
@@ -70,7 +70,7 @@
    * Evaluates to true only if ALL of the passed in matchers evaluate to true.
    */
   public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? extends T>... matchers) {
-    return org.hamcrest.core.AllOf.allOf(matchers);
+    return org.hamcrest.core.AllOf.<T>allOf(matchers);
   }
 
   /**
@@ -84,7 +84,7 @@
    * Evaluates to true if ANY of the passed in matchers evaluate to true.
    */
   public static <T> org.hamcrest.Matcher<T> anyOf(org.hamcrest.Matcher<? extends T>... matchers) {
-    return org.hamcrest.core.AnyOf.anyOf(matchers);
+    return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
   }
 
   /**
