Buggy code:
public abstract class SessionBeanComponentDescription extends EJBComponentDescription { private boolean noInterfaceViewPresent ; private ConcurrencyManagementType concurrencyManagementType ; private final Map < String , LockType > beanLevelLockType = new HashMap < String , LockType > ( ) ; private final Map < String , AccessTimeoutDetails > beanLevelAccessTimeout = new HashMap < String , AccessTimeoutDetails > ( ) ; private final Map < MethodIdentifier , LockType > methodLockTypes = new HashMap < MethodIdentifier , LockType > ( ) ; private final Map < MethodIdentifier , AccessTimeoutDetails > methodAccessTimeouts = new HashMap < MethodIdentifier , AccessTimeoutDetails > ( ) ; private final Set < MethodIdentifier > asynchronousMethods = new HashSet < MethodIdentifier > ( ) ; private final Set < String > asynchronousClasses = new HashSet < String > ( ) ; private String mappedName ; private ClusteringInfo clusteringInfo ; public enum SessionBeanType { STATELESS , STATEFUL , SINGLETON ; } public SessionBeanComponentDescription ( final String componentName , final String componentClassName , final EjbJarDescription ejbJarDescription , final ServiceName deploymentUnitServiceName , final SessionBeanMetaData descriptorData ) { } public abstract boolean allowsConcurrentAccess ( ) { } public void addLocalBusinessInterfaceViews ( final Collection < String > classNames ) { } public void addLocalBusinessInterfaceViews ( final String ... classNames ) { } public void addNoInterfaceView ( ) { noInterfaceViewPresent = true ; final ViewDescription viewDescription = registerView ( getEJBClassName ( ) , LOCAL ) ; viewDescription . getConfigurators ( ) . add ( new ViewConfigurator ( ) { @ Override public void configure ( final DeploymentPhaseContext context , final ComponentConfiguration componentConfiguration , final ViewDescription description , final ViewConfiguration configuration ) throws DeploymentUnitProcessingException { for ( final Method method : configuration . getProxyFactory ( ) . getCachedMethods ( ) ) { if ( ! ( Modifier . isPublic ( method . getModifiers ( ) ) ) ) { <START_BUG> configuration . addViewInterceptor ( method , new org . jboss . invocation . ImmediateInterceptorFactory ( new NotBusinessMethodInterceptor ( method ) ) , NOT_BUSINESS_METHOD_EXCEPTION ) ; <END_BUG> } } } } ) ; } public EJBViewDescription addWebserviceEndpointView ( ) { } public EJBViewDescription addWebserviceEndpointView ( final String wsEndpointViewName ) { } public void addRemoteBusinessInterfaceViews ( final Collection < String > classNames ) { } private void assertNoRemoteView ( final String viewClassName ) { } private void assertNoLocalView ( final String viewClassName ) { } public boolean hasNoInterfaceView ( ) { } public void setBeanLevelLockType ( String className , LockType locktype ) { } public Map < String , LockType > getBeanLevelLockType ( ) { } public void setLockType ( LockType lockType , MethodIdentifier method ) { } public Map < MethodIdentifier , LockType > getMethodApplicableLockTypes ( ) { } public Map < String , AccessTimeoutDetails > getBeanLevelAccessTimeout ( ) { } public void setBeanLevelAccessTimeout ( String className , AccessTimeoutDetails accessTimeout ) { } public void setAccessTimeout ( AccessTimeoutDetails accessTimeout , MethodIdentifier method ) { } public Map < MethodIdentifier , AccessTimeoutDetails > getMethodApplicableAccessTimeouts ( ) { } public ConcurrencyManagementType getConcurrencyManagementType ( ) { } public void setConcurrencyManagementType ( final ConcurrencyManagementType concurrencyManagementType ) { } public String getMappedName ( ) { } public void setMappedName ( String mappedName ) { } public void addAsynchronousMethod ( final MethodIdentifier methodIdentifier ) { } public Set < MethodIdentifier > getAsynchronousMethods ( ) { } public void addAsynchronousClass ( final String viewName ) { } public Set < String > getAsynchronousClasses ( ) { } public abstract SessionBeanComponentDescription . SessionBeanType getSessionBeanType ( ) { } @ Override protected void setupViewInterceptors ( EJBViewDescription view ) { } protected abstract ViewConfigurator getSessionBeanObjectViewConfigurator ( ) { } protected static void addTxManagementInterceptorForView ( ViewDescription view ) { } @ Override protected void addCurrentInvocationContextFactory ( ) { } @ Override protected void addCurrentInvocationContextFactory ( ViewDescription view ) { } @ Override public boolean isSession ( ) { } @ Override public boolean isSingleton ( ) { } @ Override public boolean isStateful ( ) { } @ Override public boolean isStateless ( ) { } @ Override public SessionBeanMetaData getDescriptorData ( ) { } public ClusteringInfo getClustering ( ) { } public void setClustering ( ClusteringInfo info ) { } }

Fix:
configuration . addClientInterceptor ( method , new org . jboss . invocation . ImmediateInterceptorFactory ( new NotBusinessMethodInterceptor ( method ) ) , NOT_BUSINESS_METHOD_EXCEPTION ) ;