Buggy code:
public final class WicketMessageTagHandler extends AbstractMarkupFilter { private static final String WICKET_MESSAGE_ATTRIBUTE_NAME = "wicket:message" ; public static boolean enable = false ; private final ContainerInfo containerInfo ; private final List < Class > searchStack ; private IResourceSettings settings ; public WicketMessageTagHandler ( final IMarkupFilter parent , final ContainerInfo containerInfo ) { } public final MarkupElement nextTag ( ) throws ParseException { <START_BUG> final ComponentTag tag = ( ( ComponentTag ) ( getParent ( ) . nextTag ( ) ) ) ; <END_BUG> if ( tag == null ) { return tag ; } final String wicketMessageAttribute = tag . getAttributes ( ) . getString ( WicketMessageTagHandler . WICKET_MESSAGE_ATTRIBUTE_NAME ) ; if ( ( wicketMessageAttribute != null ) && ( ( wicketMessageAttribute . trim ( ) . length ( ) ) > 0 ) ) { if ( ( this . containerInfo ) == null ) { throw new ParseException ( ( ( ( "Found<seq2seq4repair_space>" + ( WicketMessageTagHandler . WICKET_MESSAGE_ATTRIBUTE_NAME ) ) + "<seq2seq4repair_space>but<seq2seq4repair_space>the<seq2seq4repair_space>message<seq2seq4repair_space>can<seq2seq4repair_space>not<seq2seq4repair_space>be<seq2seq4repair_space>resolved,<seq2seq4repair_space>because<seq2seq4repair_space>the<seq2seq4repair_space>associated<seq2seq4repair_space>Page<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>known." ) + "<seq2seq4repair_space>This<seq2seq4repair_space>might<seq2seq4repair_space>be<seq2seq4repair_space>caused<seq2seq4repair_space>by<seq2seq4repair_space>using<seq2seq4repair_space>the<seq2seq4repair_space>wrong<seq2seq4repair_space>MarkupParser<seq2seq4repair_space>constructor" ) , tag . getPos ( ) ) ; } StringTokenizer attrTokenizer = new StringTokenizer ( wicketMessageAttribute , "," ) ; while ( attrTokenizer . hasMoreTokens ( ) ) { String text = attrTokenizer . nextToken ( ) . trim ( ) ; if ( text == null ) { text = wicketMessageAttribute ; } StringTokenizer valueTokenizer = new StringTokenizer ( text , "=" ) ; if ( ( valueTokenizer . countTokens ( ) ) != 2 ) { throw new ParseException ( ( ( "Wrong<seq2seq4repair_space>format<seq2seq4repair_space>of<seq2seq4repair_space>wicket:message<seq2seq4repair_space>attribute<seq2seq4repair_space>value.<seq2seq4repair_space>" + text ) + ";<seq2seq4repair_space>Must<seq2seq4repair_space>be:<seq2seq4repair_space>key=value[,<seq2seq4repair_space>key=value]" ) , tag . getPos ( ) ) ; } String attrName = valueTokenizer . nextToken ( ) ; String messageKey = valueTokenizer . nextToken ( ) ; if ( ( ( ( attrName == null ) || ( ( attrName . trim ( ) . length ( ) ) == 0 ) ) || ( messageKey == null ) ) || ( ( messageKey . trim ( ) . length ( ) ) == 0 ) ) { throw new ParseException ( ( ( "Wrong<seq2seq4repair_space>format<seq2seq4repair_space>of<seq2seq4repair_space>wicket:message<seq2seq4repair_space>attribute<seq2seq4repair_space>value.<seq2seq4repair_space>" + text ) + ";<seq2seq4repair_space>Must<seq2seq4repair_space>be:<seq2seq4repair_space>key=value[,<seq2seq4repair_space>key=value]" ) , tag . getPos ( ) ) ; } String value = settings . getLocalizer ( ) . getString ( messageKey , null , searchStack , containerInfo . getLocale ( ) , containerInfo . getStyle ( ) ) ; if ( ( value . length ( ) ) > 0 ) { tag . getAttributes ( ) . put ( attrName , value ) ; tag . setModified ( true ) ; } else if ( ( tag . getAttributes ( ) . get ( attrName ) ) == null ) { tag . getAttributes ( ) . put ( attrName , value ) ; tag . setModified ( true ) ; } else { } } } return tag ; } }

Fix:
final ComponentTag tag = nextComponentTag ( ) ;