Buggy code:
public abstract class AbstractDeploymentDescriptorBindingsProcessor implements DeploymentUnitProcessor { private static final Map < Class < ? > , Class < ? > > BOXED_TYPES ; @ Override public final void deploy ( DeploymentPhaseContext phaseContext ) throws DeploymentUnitProcessingException { } protected abstract List < BindingConfiguration > processDescriptorEntries ( DeploymentUnit deploymentUnit , DeploymentDescriptorEnvironment environment , ResourceInjectionTarget resourceInjectionTarget , final ComponentDescription componentDescription , ClassLoader classLoader , DeploymentReflectionIndex deploymentReflectionIndex , final EEApplicationClasses applicationClasses ) throws DeploymentUnitProcessingException { } @ Override public void undeploy ( DeploymentUnit context ) { } protected Class < ? > processInjectionTargets ( final ResourceInjectionTarget resourceInjectionTarget , InjectionSource injectionSource , ClassLoader classLoader , DeploymentReflectionIndex deploymentReflectionIndex , ResourceInjectionMetaData entry , Class < ? > classType ) throws DeploymentUnitProcessingException { if ( ( entry . getInjectionTargets ( ) ) != null ) { for ( ResourceInjectionTargetMetaData injectionTarget : entry . getInjectionTargets ( ) ) { final String injectionTargetClassName = injectionTarget . getInjectionTargetClass ( ) ; final String injectionTargetName = injectionTarget . getInjectionTargetName ( ) ; final AccessibleObject fieldOrMethod = getInjectionTarget ( injectionTargetClassName , injectionTargetName , classLoader , deploymentReflectionIndex ) ; final Class < ? > injectionTargetType = ( fieldOrMethod instanceof Field ) ? ( ( Field ) ( fieldOrMethod ) ) . getType ( ) : ( ( Method ) ( fieldOrMethod ) ) . getParameterTypes ( ) [ 0 ] ; final String memberName = ( fieldOrMethod instanceof Field ) ? ( ( Field ) ( fieldOrMethod ) ) . getName ( ) : ( ( Method ) ( fieldOrMethod ) ) . getName ( ) ; if ( classType != null ) { <START_BUG> if ( ! ( classType . isAssignableFrom ( injectionTargetType ) ) ) { <END_BUG> boolean ok = false ; if ( classType . isPrimitive ( ) ) { if ( AbstractDeploymentDescriptorBindingsProcessor . BOXED_TYPES . get ( classType ) . equals ( injectionTargetType ) ) { ok = true ; } } else if ( injectionTargetType . isPrimitive ( ) ) { if ( AbstractDeploymentDescriptorBindingsProcessor . BOXED_TYPES . get ( injectionTargetType ) . equals ( classType ) ) { ok = true ; } } if ( ! ok ) { throw EeMessages . MESSAGES . invalidInjectionTarget ( injectionTarget . getInjectionTargetName ( ) , injectionTarget . getInjectionTargetClass ( ) , classType ) ; } classType = injectionTargetType ; } } else { classType = injectionTargetType ; } final InjectionTarget injectionTargetDescription = ( fieldOrMethod instanceof Field ) ? new FieldInjectionTarget ( injectionTargetClassName , memberName , classType . getName ( ) ) : new MethodInjectionTarget ( injectionTargetClassName , memberName , classType . getName ( ) ) ; final ResourceInjectionConfiguration injectionConfiguration = new ResourceInjectionConfiguration ( injectionTargetDescription , injectionSource ) ; resourceInjectionTarget . addResourceInjection ( injectionConfiguration ) ; } } return classType ; } }

Fix:
if ( ! ( injectionTargetType . isAssignableFrom ( classType ) ) ) {