Buggy code:
private static PropertyResolver . ObjectAndGetSetter getObjectAndGetSetter ( final String expression , final Object object , int tryToCreateNull ) { } private static PropertyResolver . ObjectAndGetSetter getObjectAndGetSetter ( final String expression , final Object object , final int tryToCreateNull , Class < ? > clz ) { } private static int getNextDotIndex ( final String expression , final int start ) { } private static final PropertyResolver . IGetAndSet getGetAndSetter ( String exp , final Class < ? > clz ) { PropertyResolver . IClassCache classesToGetAndSetters = PropertyResolver . getClassesToGetAndSetters ( ) ; Map < String , PropertyResolver . IGetAndSet > getAndSetters = classesToGetAndSetters . get ( clz ) ; if ( getAndSetters == null ) { getAndSetters = new ConcurrentHashMap < String , PropertyResolver . IGetAndSet > ( 8 ) ; classesToGetAndSetters . put ( clz , getAndSetters ) ; } PropertyResolver . IGetAndSet getAndSetter = getAndSetters . get ( exp ) ; if ( getAndSetter == null ) { Method method = null ; Field field = null ; if ( exp . startsWith ( "[" ) ) { exp = exp . substring ( 1 , ( ( exp . length ( ) ) - 1 ) ) ; } else if ( exp . endsWith ( "()" ) ) { method = PropertyResolver . findMethod ( clz , exp ) ; } else { method = PropertyResolver . findGetter ( clz , exp ) ; } if ( method == null ) { if ( List . class . isAssignableFrom ( clz ) ) { try { int index = Integer . parseInt ( exp ) ; getAndSetter = new PropertyResolver . ListGetSet ( index ) ; } catch ( NumberFormatException ex ) { method = PropertyResolver . findMethod ( clz , exp ) ; if ( method != null ) { getAndSetter = new PropertyResolver . MethodGetAndSet ( method , PropertyResolver . MethodGetAndSet . findSetter ( method , clz ) , null ) ; } else { field = PropertyResolver . findField ( clz , exp ) ; if ( field != null ) { getAndSetter = new PropertyResolver . FieldGetAndSetter ( field ) ; } else { throw new WicketRuntimeException ( ( ( ( "The<seq2seq4repair_space>expression<seq2seq4repair_space>'" + exp ) + "'<seq2seq4repair_space>is<seq2seq4repair_space>neither<seq2seq4repair_space>an<seq2seq4repair_space>index<seq2seq4repair_space>nor<seq2seq4repair_space>is<seq2seq4repair_space>it<seq2seq4repair_space>a<seq2seq4repair_space>method<seq2seq4repair_space>or<seq2seq4repair_space>field<seq2seq4repair_space>for<seq2seq4repair_space>the<seq2seq4repair_space>list<seq2seq4repair_space>" ) + clz ) ) ; } } } } else if ( Map . class . isAssignableFrom ( clz ) ) { getAndSetter = new PropertyResolver . MapGetSet ( exp ) ; } else if ( clz . isArray ( ) ) { try { int index = Integer . parseInt ( exp ) ; getAndSetter = new PropertyResolver . ArrayGetSet ( clz . getComponentType ( ) , index ) ; } catch ( NumberFormatException ex ) { if ( ( exp . equals ( "length" ) ) || ( exp . equals ( "size" ) ) ) { getAndSetter = new PropertyResolver . ArrayLengthGetSet ( ) ; } else { throw new WicketRuntimeException ( ( ( "Can't<seq2seq4repair_space>parse<seq2seq4repair_space>the<seq2seq4repair_space>expression<seq2seq4repair_space>'" + exp ) + "'<seq2seq4repair_space>as<seq2seq4repair_space>an<seq2seq4repair_space>index<seq2seq4repair_space>for<seq2seq4repair_space>an<seq2seq4repair_space>array<seq2seq4repair_space>lookup" ) ) ; } } } else { field = PropertyResolver . findField ( clz , exp ) ; if ( field == null ) { method = PropertyResolver . findMethod ( clz , exp ) ; if ( method == null ) { int index = exp . indexOf ( '.' ) ; if ( index != ( - 1 ) ) { String propertyName = exp . substring ( 0 , index ) ; String propertyIndex = exp . substring ( ( index + 1 ) ) ; try { int parsedIndex = Integer . parseInt ( propertyIndex ) ; String name = ( Character . toUpperCase ( propertyName . charAt ( 0 ) ) ) + ( propertyName . substring ( 1 ) ) ; method = clz . getMethod ( ( ( PropertyResolver . GET ) + name ) , new Class [ ] { int . class } ) ; getAndSetter = new PropertyResolver . ArrayPropertyGetSet ( method , parsedIndex ) ; } catch ( Exception e ) { throw new WicketRuntimeException ( ( ( ( "No<seq2seq4repair_space>get<seq2seq4repair_space>method<seq2seq4repair_space>defined<seq2seq4repair_space>for<seq2seq4repair_space>class:<seq2seq4repair_space>" + clz ) + "<seq2seq4repair_space>expression:<seq2seq4repair_space>" ) + propertyName ) ) ; } } else { throw new WicketRuntimeException ( ( ( ( "No<seq2seq4repair_space>get<seq2seq4repair_space>method<seq2seq4repair_space>defined<seq2seq4repair_space>for<seq2seq4repair_space>class:<seq2seq4repair_space>" + clz ) + "<seq2seq4repair_space>expression:<seq2seq4repair_space>" ) + exp ) ) ; } } else { <START_BUG> getAndSetter = new PropertyResolver . MethodGetAndSet ( method , PropertyResolver . MethodGetAndSet . findSetter ( method , clz ) , field ) ; <END_BUG> } } else { getAndSetter = new PropertyResolver . FieldGetAndSetter ( field ) ; } } } else { field = PropertyResolver . findField ( clz , exp ) ; getAndSetter = new PropertyResolver . MethodGetAndSet ( method , PropertyResolver . MethodGetAndSet . findSetter ( method , clz ) , field ) ; } getAndSetters . put ( exp , getAndSetter ) ; } return getAndSetter ; } private static Field findField ( final Class < ? > clz , final String expression ) { } private static final Method findGetter ( final Class < ? > clz , final String expression ) { } private static final Method findMethod ( final Class < ? > clz , String expression ) { } private PropertyResolver ( ) { } private static final class ObjectAndGetSetter { private final PropertyResolver . IGetAndSet getAndSetter ; private final Object value ; public ObjectAndGetSetter ( PropertyResolver . IGetAndSet getAndSetter , Object value ) { } public void setValue ( Object value , PropertyResolverConverter converter ) { } public Object getValue ( ) { } public Class < ? > getTargetClass ( ) { } public Field getField ( ) { } public Method getGetter ( ) { } public Method getSetter ( ) { } } public static interface IGetAndSet { public Object getValue ( final Object object ) { } public Class < ? > getTargetClass ( ) { } public Object newValue ( Object object ) { }

Fix:
getAndSetter = new PropertyResolver . MethodGetAndSet ( method , PropertyResolver . MethodGetAndSet . findSetter ( method , clz ) , null ) ;