Buggy code:
public class EJBComponentCreateService extends BasicComponentCreateService { private final Map < MethodTransactionAttributeKey , TransactionAttributeType > txAttrs ; private final TransactionManagementType transactionManagementType ; private final ApplicationExceptions applicationExceptions ; private final Map < String , ServiceName > viewServices ; private final EJBSecurityMetaData securityMetaData ; private final TimerService timerService ; private final Map < Method , InterceptorFactory > timeoutInterceptors ; private final Method timeoutMethod ; private final ServiceName ejbLocalHome ; private final ServiceName ejbHome ; private final ServiceName ejbObject ; private final ServiceName ejbLocalObject ; private final String applicationName ; private final String earApplicationName ; private final String moduleName ; private final String distinctName ; private final InjectedValue < EJBRemoteTransactionsRepository > ejbRemoteTransactionsRepository = new InjectedValue < EJBRemoteTransactionsRepository > ( ) ; public EJBComponentCreateService ( final ComponentConfiguration componentConfiguration , final ApplicationExceptions applicationExceptions ) { } private static Method getComponentMethod ( final ComponentConfiguration componentConfiguration , final String name , final Class < ? > [ ] parameterTypes ) { } protected EJBUtilities getEJBUtilities ( ) { } Map < MethodTransactionAttributeKey , TransactionAttributeType > getTxAttrs ( ) { } TransactionManagementType getTransactionManagementType ( ) { } ApplicationExceptions getApplicationExceptions ( ) { } protected void processTxAttr ( final EJBComponentDescription ejbComponentDescription , final MethodIntf methodIntf , final Method method ) { if ( this . getTransactionManagementType ( ) . equals ( BEAN ) ) { return ; } String className = method . getDeclaringClass ( ) . getName ( ) ; String methodName = method . getName ( ) ; <START_BUG> TransactionAttributeType txAttr = ejbComponentDescription . getTransactionAttribute ( methodIntf , className , methodName , EJBComponentCreateService . toString ( method . getParameterTypes ( ) ) ) ; <END_BUG> if ( txAttr != ( TransactionAttributeType . REQUIRED ) ) { txAttrs . put ( new MethodTransactionAttributeKey ( methodIntf , MethodIdentifier . getIdentifierForMethod ( method ) ) , txAttr ) ; } } private static String [ ] toString ( Class < ? > [ ] a ) { } public Map < String , ServiceName > getViewServices ( ) { } public EJBSecurityMetaData getSecurityMetaData ( ) { } public Map < Method , InterceptorFactory > getTimeoutInterceptors ( ) { } public TimerService getTimerService ( ) { } public Method getTimeoutMethod ( ) { } public ServiceName getEjbHome ( ) { } public ServiceName getEjbLocalHome ( ) { } public ServiceName getEjbObject ( ) { } public ServiceName getEjbLocalObject ( ) { } public String getApplicationName ( ) { } public String getEarApplicationName ( ) { } public String getDistinctName ( ) { } public String getModuleName ( ) { } public Injector < EJBRemoteTransactionsRepository > getEJBRemoteTransactionsRepositoryInjector ( ) { } EJBRemoteTransactionsRepository getEJBRemoteTransactionsRepository ( ) { } }

Fix:
TransactionAttributeType txAttr = ejbComponentDescription . getTransactionAttributes ( ) . getAttribute ( methodIntf , className , methodName , EJBComponentCreateService . toString ( method . getParameterTypes ( ) ) ) ;