Buggy code:
public class Form extends WebMarkupContainer implements IFormSubmitListener { private static final long serialVersionUID = 1L ; private static Log log = LogFactory . getLog ( Form . class ) ; private Bytes maxSize = Bytes . MAX ; private boolean multiPart = false ; private String javascriptId ; public Form ( final String id ) { } public Form ( final String id , IModel model ) { } public Bytes getMaxSize ( ) { } public final void loadPersistentFormComponentValues ( ) { } public final void onFormSubmitted ( ) { } public void removePersistentFormComponentValues ( final boolean disablePersistence ) { } public void setMaxSize ( final Bytes maxSize ) { } public void setMultiPart ( boolean multiPart ) { } public final Component setVersioned ( final boolean isVersioned ) { } public boolean isVersioned ( ) { } public final void visitFormComponents ( final FormComponent . IVisitor visitor ) { } protected void beforeUpdateFormComponentModels ( ) { } protected void delegateSubmit ( Button submittingButton ) { } protected final Button findSubmittingButton ( ) { } protected IValuePersister getValuePersister ( ) { } protected final boolean hasError ( ) { } protected void internalOnModelChanged ( ) { } protected final void markFormComponentsInvalid ( ) { } protected final void markFormComponentsValid ( ) { } protected final String getHiddenFieldId ( ) { } protected final String getJavascriptId ( ) { } protected void onComponentTagBody ( final MarkupStream markupStream , final ComponentTag openTag ) { } protected void onComponentTag ( final ComponentTag tag ) { } protected void onError ( ) { } protected void onRender ( final MarkupStream markupStream ) { } protected void onSubmit ( ) { } public boolean process ( ) { } protected final void updateFormComponentModels ( ) { } protected void clearInput ( ) { } protected void validate ( ) { } private boolean anyFormComponentError ( ) { } private final boolean handleMultiPart ( ) { } private void persistFormComponentData ( ) { } private void dispatchEvent ( final Page page , final String url ) { RequestCycle requestCycle = RequestCycle . get ( ) ; String decodedUrl = requestCycle . getRequest ( ) . decodeURL ( url ) ; int indexOfPath = decodedUrl . indexOf ( "path=" ) ; int indexOfInterface = decodedUrl . indexOf ( "interface=" ) ; if ( ( indexOfPath != ( - 1 ) ) && ( indexOfInterface != ( - 1 ) ) ) { indexOfPath += "path=" . length ( ) ; indexOfInterface += "interface=" . length ( ) ; int indexOfPathEnd = decodedUrl . indexOf ( "&" , indexOfPath ) ; if ( indexOfPathEnd == ( - 1 ) ) { indexOfPathEnd = decodedUrl . length ( ) ; } int indexOfInterfaceEnd = decodedUrl . indexOf ( "&" , indexOfInterface ) ; if ( indexOfInterfaceEnd == ( - 1 ) ) { indexOfInterfaceEnd = decodedUrl . length ( ) ; } String path = decodedUrl . substring ( indexOfPath , indexOfPathEnd ) ; String interfaceName = decodedUrl . substring ( indexOfInterface , indexOfInterfaceEnd ) ; final Component component = page . get ( Strings . afterFirstPathComponent ( path , PATH_SEPARATOR ) ) ; if ( ! ( component . isVisible ( ) ) ) { throw new WicketRuntimeException ( "Calling<seq2seq4repair_space>listener<seq2seq4repair_space>methods<seq2seq4repair_space>on<seq2seq4repair_space>components<seq2seq4repair_space>that<seq2seq4repair_space>are<seq2seq4repair_space>not<seq2seq4repair_space>visible<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>allowed" ) ; } <START_BUG> final RequestListenerInterface listener = RequestCycle . requestListenerInterfaceForName ( interfaceName ) ; <END_BUG> if ( listener != null ) { new wicket . request . target . FormSubmitInterfaceRequestTarget ( page , component , listener ) . processEvents ( requestCycle ) ; } } else { } } private void registerNewUserInput ( ) { } public final String getJsForInterfaceUrl ( String url ) { } }

Fix:
final RequestListenerInterface listener = RequestListenerInterface . forName ( interfaceName ) ;