public static Class<?> getUserClass(Object instance) {
        Preconditions.checkNotNull(instance, "Instance must not be null");
        return getUserClass(instance.getClass());
    }
public static Class<?> getUserClass(Object instance) {
        Preconditions.checkNotNull(instance, "Instance must not be null");
        return getUserClass(instance.getClass());
    }
public static Class < ? > getUserClass ( Object instance ) { Preconditions . checkNotNull ( instance , "Instance must not be null" ) ; return getUserClass ( instance . getClass ( ) ) ; }
Return the user-defined class for the given instance: usually simply
the class of the given instance, but the original class in case of a
CGLIB-generated subclass.

@param instance the instance to check
@return the user-defined class
Return the user - defined class for the given instance : usually simply the class of the given instance but the original class in case of a CGLIB - generated subclass .