diff --git a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
index a73c954..8d0541f 100644
--- a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
+++ b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
@@ -223,7 +223,9 @@
 
         while (!Object.class.getName().equals(classToInspect.getName()))
         {
-            transferGroupValidationInformationToFoundGroups(objectToInspect,
+            transferGroupValidationInformationToFoundGroups(
+                    classToInspect,
+                    objectToInspect,
                     foundGroupsForPropertyValidation,
                     restrictedGroupsForPropertyValidation,
                     modelValidationEntryList,
@@ -231,7 +233,7 @@
                     activeViewId,
                     processModelValidation);
 
-            processInterfaces(objectToInspect.getClass(), objectToInspect,
+            processInterfaces(classToInspect, objectToInspect,
                     foundGroupsForPropertyValidation,
                     restrictedGroupsForPropertyValidation,
                     modelValidationEntryList,
@@ -383,6 +385,7 @@
 
     @ToDo(value = Priority.MEDIUM, description = "test proxy support")
     private void transferGroupValidationInformationToFoundGroups(
+            Class<?> classToInspect,
             Object objectToInspect,
             List<Class> foundGroupsForPropertyValidation,
             List<Class> restrictedGroupsForPropertyValidation,
@@ -391,9 +394,9 @@
             String activeViewId,
             boolean processModelValidation)
     {
-        if (objectToInspect.getClass().isAnnotationPresent(BeanValidation.class))
+        if (classToInspect.isAnnotationPresent(BeanValidation.class))
         {
-            tryToProcessMetaData(objectToInspect.getClass().getAnnotation(BeanValidation.class),
+            tryToProcessMetaData(classToInspect.getAnnotation(BeanValidation.class),
                     objectToInspect,
                     foundGroupsForPropertyValidation,
                     restrictedGroupsForPropertyValidation,
@@ -402,10 +405,10 @@
                     activeViewId,
                     processModelValidation);
         }
-        else if (objectToInspect.getClass().isAnnotationPresent(BeanValidation.List.class))
+        else if (classToInspect.isAnnotationPresent(BeanValidation.List.class))
         {
             for (BeanValidation currentBeanValidation :
-                    (objectToInspect.getClass().getAnnotation(BeanValidation.List.class)).value())
+                    (classToInspect.getAnnotation(BeanValidation.List.class)).value())
             {
                 tryToProcessMetaData(currentBeanValidation,
                         objectToInspect,
@@ -430,7 +433,9 @@
     {
         for (Class currentInterface : currentClass.getInterfaces())
         {
-            transferGroupValidationInformationToFoundGroups(metaDataSourceObject,
+            transferGroupValidationInformationToFoundGroups(
+                    currentClass,
+                    metaDataSourceObject,
                     foundGroupsForPropertyValidation,
                     restrictedGroupsForPropertyValidation,
                     modelValidationEntryList,
