Buggy code:
public class ViewDescription { private final String viewClassName ; private final ComponentDescription componentDescription ; private final List < String > viewNameParts = new ArrayList < String > ( ) ; private final Set < String > bindingNames = new HashSet < String > ( ) ; private final Deque < ViewConfigurator > configurators = new ArrayDeque < ViewConfigurator > ( ) ; public ViewDescription ( final ComponentDescription componentDescription , final String viewClassName ) { } public String getViewClassName ( ) { } public ComponentDescription getComponentDescription ( ) { } public List < String > getViewNameParts ( ) { } public ServiceName getServiceName ( ) { } public ViewConfiguration createViewConfiguration ( final Class < ? > viewClass , final ComponentConfiguration componentConfiguration , final ProxyFactory < ? > proxyFactory ) { } public Set < String > getBindingNames ( ) { } public Deque < ViewConfigurator > getConfigurators ( ) { } static final ImmediateInterceptorFactory CLIENT_DISPATCHER_INTERCEPTOR_FACTORY = new ImmediateInterceptorFactory ( new Interceptor ( ) { public Object processInvocation ( final InterceptorContext context ) throws Exception { } } ) ; private static class DefaultConfigurator implements ViewConfigurator { public void configure ( final DeploymentPhaseContext context , final ComponentConfiguration componentConfiguration , final ViewDescription description , final ViewConfiguration configuration ) throws DeploymentUnitProcessingException { DeploymentReflectionIndex reflectionIndex = context . getDeploymentUnit ( ) . getAttachment ( REFLECTION_INDEX ) ; ClassReflectionIndex < ? > index = reflectionIndex . getClassIndex ( componentConfiguration . getComponentClass ( ) ) ; <START_BUG> Method [ ] methods = configuration . getProxyFactory ( ) . getCachedMethods ( ) ; <END_BUG> for ( Method method : methods ) { final Method componentMethod = ClassReflectionIndexUtil . findRequiredMethod ( reflectionIndex , index , method ) ; configuration . addViewInterceptor ( method , new ImmediateInterceptorFactory ( new ViewDescription . ComponentDispatcherInterceptor ( componentMethod ) ) , COMPONENT_DISPATCHER ) ; configuration . addClientInterceptor ( method , ViewDescription . CLIENT_DISPATCHER_INTERCEPTOR_FACTORY , CLIENT_DISPATCHER ) ; } configuration . addViewPostConstructInterceptor ( Interceptors . getTerminalInterceptorFactory ( ) , TERMINAL_INTERCEPTOR ) ; configuration . addViewPreDestroyInterceptor ( Interceptors . getTerminalInterceptorFactory ( ) , InterceptorOrder . ViewPreDestroy . TERMINAL_INTERCEPTOR ) ; configuration . addClientPostConstructInterceptor ( Interceptors . getTerminalInterceptorFactory ( ) , InterceptorOrder . ClientPostConstruct . TERMINAL_INTERCEPTOR ) ; configuration . addClientPreDestroyInterceptor ( Interceptors . getTerminalInterceptorFactory ( ) , InterceptorOrder . ClientPreDestroy . TERMINAL_INTERCEPTOR ) ; final List < BindingConfiguration > bindingConfigurations = configuration . getBindingConfigurations ( ) ; List < String > viewNameParts = description . getViewNameParts ( ) ; final ServiceName serviceName ; if ( ! ( viewNameParts . isEmpty ( ) ) ) { serviceName = context . getDeploymentUnit ( ) . getServiceName ( ) . append ( "component" ) . append ( componentConfiguration . getComponentName ( ) ) . append ( "VIEW" ) . append ( viewNameParts . toArray ( new String [ viewNameParts . size ( ) ] ) ) ; } else { serviceName = context . getDeploymentUnit ( ) . getServiceName ( ) . append ( "component" ) . append ( componentConfiguration . getComponentName ( ) ) . append ( "VIEW" ) . append ( description . getViewClassName ( ) ) ; } for ( String bindingName : description . getBindingNames ( ) ) { bindingConfigurations . add ( new BindingConfiguration ( bindingName , new ViewBindingInjectionSource ( serviceName ) ) ) ; } } } private static class ComponentDispatcherInterceptor implements Interceptor { private final Method componentMethod ; public ComponentDispatcherInterceptor ( final Method componentMethod ) { } public Object processInvocation ( final InterceptorContext context ) throws Exception { } } }

Fix:
List < Method > methods = configuration . getProxyFactory ( ) . getCachedMethods ( ) ;