Buggy code:
private static final MetaDataKey BORDER_KEY = new MetaDataKey ( IComponentBorder . class ) { private static final long serialVersionUID = 1L ; } ; private static final MetaDataKey MARKUP_ID_KEY = new MetaDataKey ( String . class ) { private static final long serialVersionUID = 1L ; } ; private static final IModelComparator defaultModelComparator = new IModelComparator ( ) { private static final long serialVersionUID = 1L ; public boolean compare ( Component component , Object b ) { } } ; private static final int FLAG_AUTO = 1 ; private static final int FLAG_ESCAPE_MODEL_STRINGS = 2 ; static final int FLAG_INHERITABLE_MODEL = 4 ; private static final int FLAG_VERSIONED = 8 ; private static final int FLAG_VISIBLE = 16 ; private static final int FLAG_RENDER_BODY_ONLY = 32 ; private static final int FLAG_IGNORE_ATTRIBUTE_MODIFIER = 64 ; private static final int FLAG_ENABLED = 128 ; protected static final int FLAG_RESERVED1 = 256 ; protected static final int FLAG_RESERVED2 = 512 ; protected static final int FLAG_RESERVED3 = 1024 ; protected static final int FLAG_RESERVED4 = 2048 ; private static final int FLAG_HAS_BEEN_RENDERED = 4096 ; private static final int FLAG_IS_RENDER_ALLOWED = 8192 ; private static final int FLAG_OUTPUT_MARKUP_ID = 16384 ; private static final int FLAG_PLACEHOLDER = 32768 ; protected static final int FLAG_RESERVED5 = 65536 ; protected static final int FLAG_RESERVED6 = 131072 ; protected static final int FLAG_RESERVED7 = 262144 ; protected static final int FLAG_RESERVED8 = 524288 ; private static final int FLAG_MODEL_SET = 1048576 ; private static final int FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED = 16777216 ; private static final int FLAG_PREPARED_FOR_RENDER = 67108864 ; private static final int FLAG_RENDERING = 33554432 ; private static final int FLAG_AFTER_RENDERING = 134217728 ; private static final int FLAG_ATTACHED = 536870912 ; private static final int FLAG_DETACHING = - 2147483648 ; private static final Logger log = LoggerFactory . getLogger ( Component . class ) ; private static final String MARKUP_ID_ATTR_NAME = "id" ; private static final long serialVersionUID = 1L ; static final MetaDataKey ADDED_AT_KEY = new MetaDataKey ( String . class ) { private static final long serialVersionUID = 1L ; } ; static final MetaDataKey CONSTRUCTED_AT_KEY = new MetaDataKey ( String . class ) { private static final long serialVersionUID = 1L ; } ; private int flags = ( ( ( ( Component . FLAG_VISIBLE ) | ( Component . FLAG_ESCAPE_MODEL_STRINGS ) ) | ( Component . FLAG_VERSIONED ) ) | ( Component . FLAG_ENABLED ) ) | ( Component . FLAG_IS_RENDER_ALLOWED ) ; private String id ; private MarkupContainer parent ; int markupIndex = - 1 ; int generatedMarkupId = - 1 ; Object data = null ; private final int data_length ( ) { } private final Object data_get ( int index ) { } private final Object data_set ( int index , Object object ) { } private final void data_add ( Object object ) { } private final void data_insert ( int position , Object object ) { } private Object data_remove ( int position ) { } public Component ( final String id ) { } public Component ( final String id , final IModel model ) { } public Component add ( final IBehavior behavior ) { } private void addBehavior ( final IBehavior behavior ) { } private List getBehaviorsImpl ( ) { } public final void afterRender ( ) { } private final void internalBeforeRender ( ) { } private static final MetaDataKey FEEDBACK_LIST = new MetaDataKey ( List . class ) { private static final long serialVersionUID = 1L ; } ; public final void beforeRender ( ) { } public final boolean continueToOriginalDestination ( ) { } public final void debug ( final String message ) { } public final void detach ( ) { } public final void detachBehaviors ( ) { List behaviors = getBehaviorsImpl ( ) ; if ( behaviors != null ) { for ( Iterator i = behaviors . iterator ( ) ; i . hasNext ( ) ; ) { IBehavior behavior = ( ( IBehavior ) ( i . next ( ) ) ) ; behavior . detach ( this ) ; if ( behavior . isTemporary ( ) ) { <START_BUG> i . remove ( ) ; <END_BUG> } } } } public void detachModels ( ) { } public final void error ( final Serializable message ) { } public final void fatal ( final String message ) { } public final MarkupContainer findParent ( final Class c ) { } public final MarkupContainer findParentWithAssociatedMarkup ( ) { } public final Application getApplication ( ) { } public final List getBehaviors ( ) { } public final String getClassRelativePath ( ) { } public final IComponentBorder getComponentBorder ( ) { } public final IConverter getConverter ( ) { } public IConverter getConverter ( Class type ) { } public final boolean getEscapeModelStrings ( ) { } public final FeedbackMessage getFeedbackMessage ( ) { } public String getId ( ) { } public final IModel getInnermostModel ( ) { } public Locale getLocale ( ) { } public final Localizer getLocalizer ( ) { } public final ValueMap getMarkupAttributes ( ) { } final Object getMarkupIdImpl ( ) { } private final int nextAutoIndex ( ) { } public String getMarkupId ( ) { } public final Serializable getMetaData ( final MetaDataKey key ) { } private MetaDataEntry [ ] getMetaData ( ) { } public final IModel getModel ( ) { } public final Object getModelObject ( ) { } public final String getModelObjectAsString ( ) { } public final String getModelObjectAsString ( final Object modelObject ) { } public final boolean getOutputMarkupId ( ) { } public final Page getPage ( ) { } public final IPageFactory getPageFactory ( ) { } public final String getPageRelativePath ( ) { } public final MarkupContainer getParent ( ) { } public final String getPath ( ) { } public final boolean getRenderBodyOnly ( ) { }

Fix:
removeBehavior ( behavior ) ;