Buggy code:
private static final Log logger = LogFactory . getLog ( HandlerMethodInvoker . class ) ; private final HandlerMethodResolver methodResolver ; private final WebBindingInitializer bindingInitializer ; private final SessionAttributeStore sessionAttributeStore ; private final ParameterNameDiscoverer parameterNameDiscoverer ; private final WebArgumentResolver [ ] customArgumentResolvers ; private final HttpMessageConverter [ ] messageConverters ; private final SimpleSessionStatus sessionStatus = new SimpleSessionStatus ( ) ; public HandlerMethodInvoker ( HandlerMethodResolver methodResolver ) { } public HandlerMethodInvoker ( HandlerMethodResolver methodResolver , WebBindingInitializer bindingInitializer ) { } public HandlerMethodInvoker ( HandlerMethodResolver methodResolver , WebBindingInitializer bindingInitializer , SessionAttributeStore sessionAttributeStore , ParameterNameDiscoverer parameterNameDiscoverer , WebArgumentResolver [ ] customArgumentResolvers , HttpMessageConverter [ ] messageConverters ) { } public final Object invokeHandlerMethod ( Method handlerMethod , Object handler , NativeWebRequest webRequest , ExtendedModelMap implicitModel ) throws Exception { } public final void updateModelAttributes ( Object handler , Map < String , Object > mavModel , ExtendedModelMap implicitModel , NativeWebRequest webRequest ) throws Exception { } private Object [ ] resolveHandlerArguments ( Method handlerMethod , Object handler , NativeWebRequest webRequest , ExtendedModelMap implicitModel ) throws Exception { Class [ ] paramTypes = handlerMethod . getParameterTypes ( ) ; Object [ ] args = new Object [ paramTypes . length ] ; for ( int i = 0 ; i < ( args . length ) ; i ++ ) { MethodParameter methodParam = new MethodParameter ( handlerMethod , i ) ; methodParam . initParameterNameDiscovery ( this . parameterNameDiscoverer ) ; GenericTypeResolver . resolveParameterType ( methodParam , handler . getClass ( ) ) ; String paramName = null ; String headerName = null ; boolean requestBodyFound = false ; String cookieName = null ; String pathVarName = null ; String attrName = null ; boolean required = false ; String defaultValue = null ; boolean validate = false ; Object [ ] validationHints = null ; int annotationsFound = 0 ; Annotation [ ] paramAnns = methodParam . getParameterAnnotations ( ) ; for ( Annotation paramAnn : paramAnns ) { if ( RequestParam . class . isInstance ( paramAnn ) ) { RequestParam requestParam = ( ( RequestParam ) ( paramAnn ) ) ; paramName = requestParam . value ( ) ; required = requestParam . required ( ) ; defaultValue = parseDefaultValueAttribute ( requestParam . defaultValue ( ) ) ; annotationsFound ++ ; } else if ( RequestHeader . class . isInstance ( paramAnn ) ) { RequestHeader requestHeader = ( ( RequestHeader ) ( paramAnn ) ) ; headerName = requestHeader . value ( ) ; required = requestHeader . required ( ) ; defaultValue = parseDefaultValueAttribute ( requestHeader . defaultValue ( ) ) ; annotationsFound ++ ; } else if ( RequestBody . class . isInstance ( paramAnn ) ) { requestBodyFound = true ; annotationsFound ++ ; } else if ( CookieValue . class . isInstance ( paramAnn ) ) { CookieValue cookieValue = ( ( CookieValue ) ( paramAnn ) ) ; cookieName = cookieValue . value ( ) ; required = cookieValue . required ( ) ; defaultValue = parseDefaultValueAttribute ( cookieValue . defaultValue ( ) ) ; annotationsFound ++ ; } else if ( PathVariable . class . isInstance ( paramAnn ) ) { PathVariable pathVar = ( ( PathVariable ) ( paramAnn ) ) ; pathVarName = pathVar . value ( ) ; annotationsFound ++ ; } else if ( ModelAttribute . class . isInstance ( paramAnn ) ) { ModelAttribute attr = ( ( ModelAttribute ) ( paramAnn ) ) ; attrName = attr . value ( ) ; annotationsFound ++ ; } else if ( Value . class . isInstance ( paramAnn ) ) { defaultValue = ( ( Value ) ( paramAnn ) ) . value ( ) ; } else <START_BUG> if ( "Valid" . equals ( paramAnn . annotationType ( ) . getSimpleName ( ) ) ) { <END_BUG> validate = true ; Object value = AnnotationUtils . getValue ( paramAnn ) ; validationHints = ( value instanceof Object [ ] ) ? ( ( Object [ ] ) ( value ) ) : new Object [ ] { value } ; } } if ( annotationsFound > 1 ) { throw new IllegalStateException ( ( ( "Handler<seq2seq4repair_space>parameter<seq2seq4repair_space>annotations<seq2seq4repair_space>are<seq2seq4repair_space>exclusive<seq2seq4repair_space>choices<seq2seq4repair_space>-<seq2seq4repair_space>" + "do<seq2seq4repair_space>not<seq2seq4repair_space>specify<seq2seq4repair_space>more<seq2seq4repair_space>than<seq2seq4repair_space>one<seq2seq4repair_space>such<seq2seq4repair_space>annotation<seq2seq4repair_space>on<seq2seq4repair_space>the<seq2seq4repair_space>same<seq2seq4repair_space>parameter:<seq2seq4repair_space>" ) + handlerMethod ) ) ; } if ( annotationsFound == 0 ) { Object argValue = resolveCommonArgument ( methodParam , webRequest ) ; if ( argValue != ( WebArgumentResolver . UNRESOLVED ) ) { args [ i ] = argValue ; } else if ( defaultValue != null ) { args [ i ] = resolveDefaultValue ( defaultValue ) ; } else { Class < ? > paramType = methodParam . getParameterType ( ) ; if ( ( Model . class . isAssignableFrom ( paramType ) ) || ( Map . class . isAssignableFrom ( paramType ) ) ) { if ( ! ( paramType . isAssignableFrom ( implicitModel . getClass ( ) ) ) ) { throw new IllegalStateException ( ( ( ( ( "Argument<seq2seq4repair_space>[" + ( paramType . getSimpleName ( ) ) ) + "]<seq2seq4repair_space>is<seq2seq4repair_space>of<seq2seq4repair_space>type<seq2seq4repair_space>" ) + "Model<seq2seq4repair_space>or<seq2seq4repair_space>Map<seq2seq4repair_space>but<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>assignable<seq2seq4repair_space>from<seq2seq4repair_space>the<seq2seq4repair_space>actual<seq2seq4repair_space>model.<seq2seq4repair_space>You<seq2seq4repair_space>may<seq2seq4repair_space>need<seq2seq4repair_space>to<seq2seq4repair_space>switch<seq2seq4repair_space>" ) + "newer<seq2seq4repair_space>MVC<seq2seq4repair_space>infrastructure<seq2seq4repair_space>classes<seq2seq4repair_space>to<seq2seq4repair_space>use<seq2seq4repair_space>this<seq2seq4repair_space>argument." ) ) ; } args [ i ] = implicitModel ; } else if ( SessionStatus . class . isAssignableFrom ( paramType ) ) { args [ i ] = this . sessionStatus ; } else if ( HttpEntity . class . isAssignableFrom ( paramType ) ) { args [ i ] = resolveHttpEntityRequest ( methodParam , webRequest ) ; } else if ( Errors . class . isAssignableFrom ( paramType ) ) { throw new IllegalStateException ( ( "Errors//BindingResult<seq2seq4repair_space>argument<seq2seq4repair_space>declared<seq2seq4repair_space>" + "without<seq2seq4repair_space>preceding<seq2seq4repair_space>model<seq2seq4repair_space>attribute.<seq2seq4repair_space>Check<seq2seq4repair_space>your<seq2seq4repair_space>handler<seq2seq4repair_space>method<seq2seq4repair_space>signature!" ) ) ; } else if ( BeanUtils . isSimpleProperty ( paramType ) ) { paramName = "" ; } else { attrName = "" ; } } } if ( paramName != null ) { args [ i ] = resolveRequestParam ( paramName , required , defaultValue , methodParam , webRequest , handler ) ; }

Fix:
if ( paramAnn . annotationType ( ) . getSimpleName ( ) . startsWith ( "Valid" ) ) {