Buggy code:
public class DeploymentDescriptorMethodProcessor implements DeploymentUnitProcessor { @ Override public void deploy ( final DeploymentPhaseContext phaseContext ) throws DeploymentUnitProcessingException { } private void handleStatelessSessionBean ( final EJBComponentDescription component , final DeploymentClassIndex classIndex , final DeploymentReflectionIndex reflectionIndex ) throws ClassNotFoundException , DeploymentUnitProcessingException { } private void handleSessionBean ( final EJBComponentDescription component , final DeploymentClassIndex classIndex , final DeploymentReflectionIndex reflectionIndex ) throws ClassNotFoundException , DeploymentUnitProcessingException { if ( ( component . getDescriptorData ( ) ) == null ) { return ; } final ClassIndex componentClass = classIndex . classIndex ( component . getComponentClassName ( ) ) ; final EnterpriseBeanMetaData metaData = component . getDescriptorData ( ) ; AroundInvokesMetaData aroundInvokes = null ; if ( metaData instanceof SessionBeanMetaData ) { aroundInvokes = ( ( SessionBeanMetaData ) ( metaData ) ) . getAroundInvokes ( ) ; } else if ( metaData instanceof MessageDrivenBeanMetaData ) { aroundInvokes = ( ( MessageDrivenBeanMetaData ) ( metaData ) ) . getAroundInvokes ( ) ; } if ( aroundInvokes != null ) { for ( AroundInvokeMetaData aroundInvoke : aroundInvokes ) { final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( ) ; String methodName = aroundInvoke . getMethodName ( ) ; MethodIdentifier methodIdentifier = MethodIdentifier . getIdentifier ( Object . class , methodName , InvocationContext . class ) ; builder . setAroundInvoke ( methodIdentifier ) ; if ( ( ( aroundInvoke . getClassName ( ) ) == null ) || ( aroundInvoke . getClassName ( ) . isEmpty ( ) ) ) { final String className = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , componentClass . getModuleClass ( ) , methodIdentifier ) . getDeclaringClass ( ) . getName ( ) ; component . addInterceptorMethodOverride ( className , builder . build ( ) ) ; } else { component . addInterceptorMethodOverride ( aroundInvoke . getClassName ( ) , builder . build ( ) ) ; } } } LifecycleCallbacksMetaData postConstructs = metaData . getPostConstructs ( ) ; if ( postConstructs != null ) { for ( LifecycleCallbackMetaData postConstruct : postConstructs ) { final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( ) ; String methodName = postConstruct . getMethodName ( ) ; MethodIdentifier methodIdentifier = MethodIdentifier . getIdentifier ( void . class , methodName ) ; builder . setPostConstruct ( methodIdentifier ) ; if ( ( ( postConstruct . getClassName ( ) ) == null ) || ( postConstruct . getClassName ( ) . isEmpty ( ) ) ) { final String className = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , componentClass . getModuleClass ( ) , methodIdentifier ) . getDeclaringClass ( ) . getName ( ) ; component . addInterceptorMethodOverride ( className , builder . build ( ) ) ; } else { component . addInterceptorMethodOverride ( postConstruct . getClassName ( ) , builder . build ( ) ) ; } } } final LifecycleCallbacksMetaData preDestroys = metaData . getPreDestroys ( ) ; if ( preDestroys != null ) { for ( final LifecycleCallbackMetaData preDestroy : preDestroys ) { final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( ) ; final String methodName = preDestroy . getMethodName ( ) ; final MethodIdentifier methodIdentifier = MethodIdentifier . getIdentifier ( void . class , methodName ) ; builder . setPreDestroy ( methodIdentifier ) ; if ( ( ( preDestroy . getClassName ( ) ) == null ) || ( preDestroy . getClassName ( ) . isEmpty ( ) ) ) { final String className = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , componentClass . getModuleClass ( ) , methodIdentifier ) . getDeclaringClass ( ) . getName ( ) ; component . addInterceptorMethodOverride ( className , builder . build ( ) ) ; } else { component . addInterceptorMethodOverride ( preDestroy . getClassName ( ) , builder . build ( ) ) ; } } } <START_BUG> if ( metaData instanceof SessionBeanMetaData ) { <END_BUG> final SessionBeanMetaData sessionBeanMetadata = ( ( SessionBeanMetaData ) ( metaData ) ) ; final LifecycleCallbacksMetaData prePassivates = sessionBeanMetadata . getPrePassivates ( ) ; if ( prePassivates != null ) { for ( final LifecycleCallbackMetaData prePassivate : prePassivates ) { final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( ) ; final String methodName = prePassivate . getMethodName ( ) ; final MethodIdentifier methodIdentifier = MethodIdentifier . getIdentifier ( void . class , methodName ) ; builder . setPrePassivate ( methodIdentifier ) ; if ( ( ( prePassivate . getClassName ( ) ) == null ) || ( prePassivate . getClassName ( ) . isEmpty ( ) ) ) { final String className = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , componentClass . getModuleClass ( ) , methodIdentifier ) . getDeclaringClass ( ) . getName ( ) ; component . addInterceptorMethodOverride ( className , builder . build ( ) ) ; } else { component . addInterceptorMethodOverride ( prePassivate . getClassName ( ) , builder . build ( ) ) ; } } } final LifecycleCallbacksMetaData postActivates = sessionBeanMetadata . getPostActivates ( ) ; if ( postActivates != null ) { for ( final LifecycleCallbackMetaData postActivate : postActivates ) { final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( ) ; final String methodName = postActivate . getMethodName ( ) ; final MethodIdentifier methodIdentifier = MethodIdentifier . getIdentifier ( void . class , methodName ) ; builder . setPostActivate ( methodIdentifier ) ; if ( ( ( postActivate . getClassName ( ) ) == null ) || ( postActivate . getClassName ( ) . isEmpty ( ) ) ) { final String className = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , componentClass . getModuleClass ( ) , methodIdentifier ) . getDeclaringClass ( ) . getName ( ) ; component . addInterceptorMethodOverride ( className , builder . build ( ) ) ; } else { component . addInterceptorMethodOverride ( postActivate . getClassName ( ) , builder . build ( ) ) ; } } } } } @ Override public void undeploy ( final DeploymentUnit context ) { } }

Fix:
if ( component . isStateful ( ) ) {