Buggy code:
public class StatefulSessionComponent extends SessionBeanComponent implements IdentifierFactory < SessionID > , PassivationManager < SessionID , StatefulSessionComponentInstance > , StatefulObjectFactory < StatefulSessionComponentInstance > { public static final Object SESSION_ID_REFERENCE_KEY = new Object ( ) ; private final Cache < SessionID , StatefulSessionComponentInstance > cache ; private final InterceptorFactory afterBegin ; private final Method afterBeginMethod ; private final InterceptorFactory afterCompletion ; private final Method afterCompletionMethod ; private final InterceptorFactory beforeCompletion ; private final Method beforeCompletionMethod ; private final InterceptorFactory prePassivate ; private final InterceptorFactory postActivate ; private final Map < EJBBusinessMethod , AccessTimeoutDetails > methodAccessTimeouts ; private final DefaultAccessTimeoutService defaultAccessTimeoutProvider ; private final int currentMarshallingVersion ; private final Map < Integer , MarshallingConfiguration > marshallingConfigurations ; private final InterceptorFactory ejb2XRemoveMethod ; private final Set < Object > serialiableInterceptorContextKeys ; protected StatefulSessionComponent ( final StatefulSessionComponentCreateService ejbComponentCreateService ) { } @ Override public StatefulSessionComponentInstance createInstance ( ) { } @ Override public StatefulSessionComponentInstance createInstance ( final Object instance ) { } @ Override protected StatefulSessionComponentInstance constructComponentInstance ( ManagedReference instance , boolean invokePostConstruct , InterceptorFactoryContext context ) { } @ Override public void destroyInstance ( StatefulSessionComponentInstance instance ) { } @ Override public void postActivate ( StatefulSessionComponentInstance instance ) { } @ Override public void prePassivate ( StatefulSessionComponentInstance instance ) { } @ Override public int getCurrentMarshallingVersion ( ) { } @ Override public MarshallingConfiguration getMarshallingConfiguration ( int version ) { } protected SessionID getSessionIdOf ( final InterceptorContext ctx ) { } @ Override public < T > T getBusinessObject ( Class < T > businessInterface , final InterceptorContext context ) throws IllegalStateException { } @ Override public EJBLocalObject getEJBLocalObject ( final InterceptorContext ctx ) throws IllegalStateException { } @ SuppressWarnings ( "unchecked" ) @ Override public EJBObject getEJBObject ( final InterceptorContext ctx ) throws IllegalStateException { } @ Override public TimerService getTimerService ( ) throws IllegalStateException { } public AccessTimeoutDetails getAccessTimeout ( Method method ) { } protected Interceptor createInterceptor ( final InterceptorFactory factory , final InterceptorFactoryContext context ) { } public SessionID createSession ( ) { } public Cache < SessionID , StatefulSessionComponentInstance > getCache ( ) { } @ Override public SessionID createIdentifier ( ) { } @ Override protected BasicComponentInstance instantiateComponentInstance ( final AtomicReference < ManagedReference > instanceReference , final Interceptor preDestroyInterceptor , final Map < Method , Interceptor > methodInterceptors , final InterceptorFactoryContext interceptorContext ) { } @ Override protected void componentInstanceCreated ( final BasicComponentInstance basicComponentInstance , final InterceptorFactoryContext context ) { } public void removeSession ( final SessionID sessionId ) { } public InterceptorFactory getAfterBegin ( ) { } public InterceptorFactory getAfterCompletion ( ) { } public InterceptorFactory getBeforeCompletion ( ) { } public Method getAfterBeginMethod ( ) { } public Method getAfterCompletionMethod ( ) { } public Method getBeforeCompletionMethod ( ) { } public InterceptorFactory getPrePassivate ( ) { } public InterceptorFactory getPostActivate ( ) { } public InterceptorFactory getEjb2XRemoveMethod ( ) { } @ Override public void start ( ) { } @ Override public void stop ( ) { } @ Override public AllowedMethodsInformation getAllowedMethodsInformation ( ) { <START_BUG> return StatefulAllowedMethodsInformation . INSTANCE ; <END_BUG> } public Set < Object > getSerialiableInterceptorContextKeys ( ) { } private static ServiceContainer currentServiceContainer ( ) { } }

Fix:
return isBeanManagedTransaction ( ) ? StatefulAllowedMethodsInformation . INSTANCE_BMT : StatefulAllowedMethodsInformation . INSTANCE_CMT ;