Buggy code:
public class ReflectivePropertyAccessor implements PropertyAccessor { private final Map < ReflectivePropertyAccessor . CacheKey , ReflectivePropertyAccessor . InvokerPair > readerCache = new ConcurrentHashMap < ReflectivePropertyAccessor . CacheKey , ReflectivePropertyAccessor . InvokerPair > ( 64 ) ; private final Map < ReflectivePropertyAccessor . CacheKey , Member > writerCache = new ConcurrentHashMap < ReflectivePropertyAccessor . CacheKey , Member > ( 64 ) ; private final Map < ReflectivePropertyAccessor . CacheKey , TypeDescriptor > typeDescriptorCache = new ConcurrentHashMap < ReflectivePropertyAccessor . CacheKey , TypeDescriptor > ( 64 ) ; public Class < ? > [ ] getSpecificTargetClasses ( ) { } public boolean canRead ( EvaluationContext context , Object target , String name ) throws AccessException { } public TypedValue read ( EvaluationContext context , Object target , String name ) throws AccessException { } public boolean canWrite ( EvaluationContext context , Object target , String name ) throws AccessException { } public void write ( EvaluationContext context , Object target , String name , Object newValue ) throws AccessException { } private TypeDescriptor getTypeDescriptor ( EvaluationContext context , Object target , String name ) { } private Method findGetterForProperty ( String propertyName , Class < ? > clazz , Object target ) { } private Method findSetterForProperty ( String propertyName , Class < ? > clazz , Object target ) { } private Field findField ( String name , Class < ? > clazz , Object target ) { } protected Method findGetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) { Method [ ] ms = clazz . getMethods ( ) ; String propertyWriteMethodSuffix ; if ( ( ( propertyName . length ( ) ) > 1 ) && ( Character . isUpperCase ( propertyName . charAt ( 1 ) ) ) ) { propertyWriteMethodSuffix = propertyName ; } else { propertyWriteMethodSuffix = StringUtils . capitalize ( propertyName ) ; } String getterName = "get" + propertyWriteMethodSuffix ; for ( Method method : ms ) { if ( ( ( ( ! ( method . isBridge ( ) ) ) && ( method . getName ( ) . equals ( getterName ) ) ) && ( ( method . getParameterTypes ( ) . length ) == 0 ) ) && ( ( ! mustBeStatic ) || ( Modifier . isStatic ( method . getModifiers ( ) ) ) ) ) { return method ; } } getterName = "is" + propertyWriteMethodSuffix ; for ( Method method : ms ) { <START_BUG> if ( ( ( ( ( ! ( method . isBridge ( ) ) ) && ( method . getName ( ) . equals ( getterName ) ) ) && ( ( method . getParameterTypes ( ) . length ) == 0 ) ) && ( boolean . class . equals ( method . getReturnType ( ) ) ) ) && ( ( ! mustBeStatic ) || ( Modifier . isStatic ( method . getModifiers ( ) ) ) ) ) { <END_BUG> return method ; } } return null ; } protected Method findSetterForProperty ( String propertyName , Class < ? > clazz , boolean mustBeStatic ) { } protected Field findField ( String name , Class < ? > clazz , boolean mustBeStatic ) { } public PropertyAccessor createOptimalAccessor ( EvaluationContext eContext , Object target , String name ) { } private static class InvokerPair { final Member member ; final TypeDescriptor typeDescriptor ; public InvokerPair ( Member member , TypeDescriptor typeDescriptor ) { } } private static class CacheKey { private final Class clazz ; private final String name ; public CacheKey ( Class clazz , String name ) { } @ Override public boolean equals ( Object other ) { } @ Override public int hashCode ( ) { } } private static class OptimalPropertyAccessor implements PropertyAccessor { private final Member member ; private final TypeDescriptor typeDescriptor ; private final boolean needsToBeMadeAccessible ; OptimalPropertyAccessor ( ReflectivePropertyAccessor . InvokerPair target ) { } public Class [ ] getSpecificTargetClasses ( ) { } public boolean canRead ( EvaluationContext context , Object target , String name ) throws AccessException { } public TypedValue read ( EvaluationContext context , Object target , String name ) throws AccessException { } public boolean canWrite ( EvaluationContext context , Object target , String name ) { } public void write ( EvaluationContext context , Object target , String name , Object newValue ) { } } }

Fix:
if ( ( ( ( ( ! ( method . isBridge ( ) ) ) && ( method . getName ( ) . equals ( getterName ) ) ) && ( ( method . getParameterTypes ( ) . length ) == 0 ) ) && ( ( boolean . class . equals ( method . getReturnType ( ) ) ) || ( Boolean . class . equals ( method . getReturnType ( ) ) ) ) ) && ( ( ! mustBeStatic ) || ( Modifier . isStatic ( method . getModifiers ( ) ) ) ) ) {