Buggy code:
public class Form < T > extends WebMarkupContainer implements IFormSubmitListener { public abstract static class ValidationVisitor implements FormComponent . IVisitor { public Object formComponent ( IFormVisitorParticipant component ) { } public abstract void validate ( FormComponent < ? > formComponent ) { } } private static class FormModelUpdateVisitor implements Component . IVisitor < Component > { private final Form < ? > formFilter ; public FormModelUpdateVisitor ( Form < ? > formFilter ) { } public Object component ( Component component ) { } } class FormDispatchRequest extends Request { private final Map < String , String [ ] > params = new HashMap < String , String [ ] > ( ) ; private final Request realRequest ; private final String url ; public FormDispatchRequest ( final Request realRequest , final String url ) { } @ Override public Locale getLocale ( ) { } @ Override public String getParameter ( String key ) { } @ Override public Map < String , String [ ] > getParameterMap ( ) { } @ Override public String [ ] getParameters ( String key ) { } @ Override public String getPath ( ) { } @ Override public String getRelativePathPrefixToContextRoot ( ) { } @ Override public String getRelativePathPrefixToWicketHandler ( ) { } @ Override public String getURL ( ) { } @ Override public String getQueryString ( ) { } } public static final String METHOD_GET = "get" ; public static final String METHOD_POST = "post" ; private static final short FLAG_SUBMITTED = FLAG_RESERVED1 ; private static final Logger log = LoggerFactory . getLogger ( Form . class ) ; private static final long serialVersionUID = 1L ; private static final String UPLOAD_FAILED_RESOURCE_KEY = "uploadFailed" ; private static final String UPLOAD_TOO_LARGE_RESOURCE_KEY = "uploadTooLarge" ; private IFormSubmittingComponent defaultSubmittingComponent ; private Object formValidators = null ; private Bytes maxSize = null ; private boolean multiPart = false ; public Form ( final String id ) { } public Form ( final String id , IModel < T > model ) { } public void add ( IFormValidator validator ) { } public void remove ( IFormValidator validator ) { } private final int formValidators_indexOf ( IFormValidator validator ) { } private final IFormValidator formValidators_remove ( IFormValidator validator ) { } private final IFormValidator formValidators_remove ( int index ) { } public final void clearInput ( ) { } public final void error ( String error , Map < String , Object > args ) { } public final IFormSubmittingComponent findSubmittingButton ( ) { } public final IFormSubmittingComponent getDefaultButton ( ) { } public final Collection < IFormValidator > getFormValidators ( ) { } public final CharSequence getJsForInterfaceUrl ( CharSequence url ) { } public Bytes getMaxSize ( ) { } public Form < ? > getRootForm ( ) { } public String getValidatorKeyPrefix ( ) { } public final boolean hasError ( ) { } public boolean isRootForm ( ) { } public final boolean isSubmitted ( ) { } @ Override public boolean isVersioned ( ) { } public final void loadPersistentFormComponentValues ( ) { visitFormComponentsPostOrder ( new FormComponent . AbstractVisitor ( ) { @ Override public void onFormComponent ( final FormComponent < ? > formComponent ) { <START_BUG> if ( ( formComponent . isVisibleInHierarchy ( ) ) && ( formComponent . isPersistent ( ) ) ) { <END_BUG> final IValuePersister persister = getValuePersister ( ) ; persister . load ( formComponent ) ; } } } ) ; } public final void onFormSubmitted ( ) { } public void process ( IFormSubmittingComponent submittingComponent ) { } @ Deprecated public boolean process ( ) { } private void callOnError ( ) { } private void markFormsSubmitted ( ) { } public void removePersistentFormComponentValues ( final boolean disablePersistence ) { } public final void setDefaultButton ( IFormSubmittingComponent submittingComponent ) { } public void setMaxSize ( final Bytes maxSize ) { } public void setMultiPart ( boolean multiPart ) { } @ Override public final Component setVersioned ( final boolean isVersioned ) { } public final void visitFormComponents ( final FormComponent . IVisitor visitor ) { } public final void visitFormComponentsPostOrder ( final FormComponent . IVisitor visitor ) { } private void visitChildrenInContainingBorder ( final FormComponent . IVisitor visitor ) { } private boolean anyFormComponentError ( ) { } private void dispatchEvent ( final Page page , final String url ) { } private void formValidators_add ( final IFormValidator validator ) { } private IFormValidator formValidators_get ( int index ) { } private int formValidators_size ( ) { } private void inputChanged ( ) { } private void persistFormComponentData ( ) { } protected void appendDefaultButtonField ( final MarkupStream markupStream , final ComponentTag openTag ) { } protected void beforeUpdateFormComponentModels ( ) { } protected void delegateSubmit ( IFormSubmittingComponent submittingComponent ) { } protected final String getHiddenFieldId ( ) { } @ Deprecated protected final String getJavascriptId ( ) { } protected String getMethod ( ) { } @ Override protected boolean getStatelessHint ( ) { } protected IValuePersister getValuePersister ( ) { } private boolean isMultiPart ( ) { } protected boolean handleMultiPart ( ) { } protected void onFileUploadException ( final FileUploadException e , final Map < String , Object > model ) { } @ Override protected void internalOnModelChanged ( ) { } protected final void markFormComponentsInvalid ( ) { } protected final void markFormComponentsValid ( ) { } private void markNestedFormComponentsValid ( ) { } private void internalMarkFormComponentsValid ( ) { } @ Override protected void onComponentTag ( final ComponentTag tag ) { } @ Override protected void renderPlaceholderTag ( ComponentTag tag , Response response ) { } protected boolean encodeUrlInHiddenFields ( ) { } @ Override protected void onComponentTagBody ( final MarkupStream markupStream , final ComponentTag openTag ) { } protected void writeParamsAsHiddenFields ( String [ ] params , AppendingStringBuffer buffer ) { } private String recode ( String s ) { } @ Override protected void onDetach ( ) { }

Fix:
if ( ( formComponent . isPersistent ( ) ) && ( formComponent . isVisibleInHierarchy ( ) ) ) {