diff --git a/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java b/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
index 1aaca7c..b3a77c6 100644
--- a/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
+++ b/uimafit-core/src/main/java/org/apache/uima/fit/util/CasUtil.java
@@ -900,6 +900,23 @@
 
     return unmodifiableMap(index);
   }
+
+  /**
+   * Get a list of annotations of the given annotation type overlapping the given annotation. Does 
+   * not use subiterators and does not respect type prioritites.
+   * 
+   * @param aType
+   *          a UIMA type.
+   * @param  aBoundaryAnnotation
+   *          the covering annotation.
+   * @return a list of overlapping annotations.
+   * @see <a href="package-summary.html#SortOrder">Order of selected feature structures</a>
+   */  
+  public static List<AnnotationFS> selectOverlapping(Type aType,
+          AnnotationFS aBoundaryAnnotation) {
+    return selectOverlapping(aBoundaryAnnotation.getCAS(), aType, aBoundaryAnnotation.getBegin(),
+            aBoundaryAnnotation.getEnd());
+  }  
   
   /**
    * Get a list of annotations of the given annotation type overlapping the given annotation. Does 
diff --git a/uimafit-core/src/main/java/org/apache/uima/fit/util/JCasUtil.java b/uimafit-core/src/main/java/org/apache/uima/fit/util/JCasUtil.java
index 7d8695a..2c1cf32 100644
--- a/uimafit-core/src/main/java/org/apache/uima/fit/util/JCasUtil.java
+++ b/uimafit-core/src/main/java/org/apache/uima/fit/util/JCasUtil.java
@@ -544,6 +544,23 @@
    * Get a list of annotations of the given annotation type overlapping the given annotation. Does 
    * not use subiterators and does not respect type prioritites.
    * 
+   * @param aType
+   *          a UIMA type.
+   * @param  aBoundaryAnnotation
+   *          the covering annotation.
+   * @return a list of overlapping annotations.
+   * @see <a href="package-summary.html#SortOrder">Order of selected feature structures</a>
+   */  
+  public static <T extends Annotation> List<T> selectOverlapping(Class<T> aType,
+          AnnotationFS aBoundaryAnnotation) {
+    return cast(CasUtil.selectOverlapping(getType(aBoundaryAnnotation.getJCas(), aType),
+            aBoundaryAnnotation));
+  }
+  
+  /**
+   * Get a list of annotations of the given annotation type overlapping the given annotation. Does 
+   * not use subiterators and does not respect type prioritites.
+   * 
    * @param aJCas
    *          a CAS.
    * @param aType
@@ -557,7 +574,7 @@
           AnnotationFS aBoundaryAnnotation) {
     return cast(
             CasUtil.selectOverlapping(aJCas.getCas(), getType(aJCas, aType), aBoundaryAnnotation));
-  }  
+  }
   
   /**
    * Get a list of annotations of the given annotation type overlapping the given span. Does not use
