Buggy code:
public abstract class FormComponent < T > extends LabeledWebMarkupContainer implements IFormModelUpdateListener , IFormVisitorParticipant { private static final Logger logger = LoggerFactory . getLogger ( FormComponent . class ) ; @ Deprecated public abstract static class AbstractVisitor < R > implements IVisitor < FormComponent < ? > , R > { public void component ( final FormComponent < ? > component , final IVisit < R > visit ) { } protected abstract void onFormComponent ( FormComponent < ? > formComponent , IVisit < R > visit ) { } } private class MessageSource implements IErrorMessageSource { private final Set < String > triedKeys = new LinkedHashSet < String > ( ) ; public String getMessage ( String key ) { } private String prefix ( String prefix , String key ) { } private String getString ( Localizer localizer , String key , Component component ) { } public String substitute ( String string , Map < String , Object > vars ) throws IllegalStateException { } private Map < String , Object > addDefaultVars ( Map < String , Object > params ) { } private String getLabel ( ) { } } private class ValidatableAdapter implements IValidatable < T > { public void error ( IValidationError error ) { } public T getValue ( ) { } public boolean isValid ( ) { } } public static String VALUE_SEPARATOR = ";" ; private static final String [ ] EMPTY_STRING_ARRAY = new String [ ] { "" } ; private static final short FLAG_REQUIRED = FLAG_RESERVED3 ; private static final String NO_RAW_INPUT = "[-NO-RAW-INPUT-]" ; private static final long serialVersionUID = 1L ; protected static final short FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL = FLAG_RESERVED1 ; public static final < R > R visitFormComponentsPostOrder ( Component component , final IVisitor < ? extends FormComponent , R > visitor ) { } public static final < R > R visitComponentsPostOrder ( Component component , final IVisitor < Component , R > visitor ) { } private transient T convertedInput ; private String rawInput = FormComponent . NO_RAW_INPUT ; private String typeName ; private Object validators = null ; public FormComponent ( final String id ) { } public FormComponent ( final String id , IModel < T > model ) { } public final FormComponent < T > add ( final IValidator < T > validator ) { } public final FormComponent < T > add ( final IValidator < T > ... validators ) { } public boolean checkRequired ( ) { } public final void clearInput ( ) { } public void error ( IValidationError error ) { } public final T getConvertedInput ( ) { } public final void setConvertedInput ( T convertedInput ) { } public Form < ? > getForm ( ) { } public String getInput ( ) { } public String [ ] getInputAsArray ( ) { } public String getInputName ( ) { } public final String getRawInput ( ) { } @ SuppressWarnings ( "unchecked" ) public final Class < T > getType ( ) { } public String getValidatorKeyPrefix ( ) { } public final List < IValidator < T > > getValidators ( ) { } public final String getValue ( ) { } public final boolean hasRawInput ( ) { } public final void inputChanged ( ) { <START_BUG> if ( ( FormComponent . isVisibleInHierarchy ( ) ) && ( FormComponent . isEnabled ( ) ) ) { <END_BUG> final String [ ] input = getInputAsArray ( ) ; if ( ( ( input != null ) && ( ( input . length ) > 0 ) ) && ( ( input [ 0 ] ) != null ) ) { rawInput = StringList . valueOf ( input ) . join ( FormComponent . VALUE_SEPARATOR ) ; } else if ( isInputNullable ( ) ) { rawInput = null ; } else { rawInput = FormComponent . NO_RAW_INPUT ; } } } public final void invalid ( ) { } public boolean isInputNullable ( ) { } public boolean isMultiPart ( ) { } public boolean isRequired ( ) { } public final boolean isValid ( ) { } public boolean processChildren ( ) { } public final void processInput ( ) { } public FormComponent < T > setLabel ( IModel < String > labelModel ) { } public void setModelValue ( final String [ ] value ) { } public final FormComponent < T > setRequired ( final boolean required ) { } public final FormComponent < T > setType ( Class < ? > type ) { } public void updateModel ( ) { } public final void valid ( ) { } public void validate ( ) { } @ SuppressWarnings ( "unchecked" ) private void validators_add ( final IValidator < T > validator ) { } @ SuppressWarnings ( "unchecked" ) private IValidator < T > validators_get ( int index ) { } private int validators_size ( ) { } @ SuppressWarnings ( "unchecked" ) protected void convertInput ( ) { } private void reportValidationError ( ConversionException e , ValidationError error ) { } @ SuppressWarnings ( "unchecked" ) protected T convertValue ( String [ ] value ) throws ConversionException { } protected String getModelValue ( ) { } protected final int inputAsInt ( ) { } protected final int inputAsInt ( final int defaultValue ) { } protected final int [ ] inputAsIntArray ( ) { } @ Override protected void internalOnModelChanged ( ) { } @ Override protected void onComponentTag ( final ComponentTag tag ) { } @ Override protected void onDetach ( ) { } protected void onDisabled ( final ComponentTag tag ) { } protected void onInvalid ( ) { } protected void onValid ( ) { } protected boolean shouldTrimInput ( ) { } protected final String trim ( String string ) { } protected final void validateRequired ( ) { } private void reportRequiredError ( ) { }

Fix:
if ( ( FormComponent . isVisibleInHierarchy ( ) ) && ( FormComponent . isEnabledInHierarchy ( ) ) ) {