Buggy code:
public abstract class Component implements Serializable { private static Log log = LogFactory . getLog ( Component . class ) ; List attributeModifiers = null ; private IModel model ; private String name ; private Container parent ; private int rendering = 0 ; private boolean shouldEscapeModelStrings = true ; private boolean visible = true ; public static interface IVisitor { public static Object CONTINUE_TRAVERSAL = null ; public static Object STOP_TRAVERSAL = new Object ( ) ; public Object component ( Component component ) { } } public Component ( final String name ) { } public Component ( String name , Serializable object ) { } public Component ( String name , Serializable object , String expression ) { } public final Component add ( final AttributeModifier modifier ) { } public final void debug ( final String message ) { } public final void error ( final String message ) { } public final void fatal ( final String message ) { } public final Container findParent ( final Class c ) { } public final Application getApplication ( ) { } public final ApplicationPages getApplicationPages ( ) { } public final ApplicationSettings getApplicationSettings ( ) { } public IConverter getConverter ( ) { } public final FeedbackMessage getFeedbackMessage ( ) { } public final Locale getLocale ( ) { } public final Localizer getLocalizer ( ) { } public final IModel getModel ( ) { } public final Object getModelLock ( ) { } public final Object getModelObject ( ) { } public final String getModelObjectAsString ( ) { } public String getName ( ) { } public final Page getPage ( ) { } public final IPageFactory getPageFactory ( ) { } public final String getPageRelativePath ( ) { } public final Container getParent ( ) { } public final String getPath ( ) { } public final int getRendering ( ) { } public final Request getRequest ( ) { } public final Boolean getRequestBoolean ( ) { } public final RequestCycle getRequestCycle ( ) { } public final int getRequestInt ( ) { } public final int getRequestInt ( final int defaultValue ) { } public final int [ ] getRequestInts ( ) { } public final String getRequestString ( ) { } public final String [ ] getRequestStrings ( ) { } public final Response getResponse ( ) { } public Session getSession ( ) { } public final boolean getShouldEscapeModelStrings ( ) { } public final String getStyle ( ) { } public final boolean hasErrorMessage ( ) { } public final boolean hasFeedbackMessage ( ) { } public final void info ( final String message ) { } public final boolean isVisible ( ) { } public void render ( ) { } public final Component setModel ( final IModel model ) { final IModel currentModel = getModel ( ) ; if ( ( currentModel != null ) && ( currentModel instanceof IDetachableModel ) ) { ( ( IDetachableModel ) ( currentModel ) ) . detach ( ) ; } if ( model instanceof IConvertible ) { <START_BUG> ( ( IConvertible ) ( model ) ) . setConverter ( getConverter ( ) ) ; <END_BUG> } this . model = ( ( IModel ) ( model ) ) ; return this ; } public final void setModelObject ( final Object value ) { } public final Component setShouldEscapeModelStrings ( final boolean escapeMarkup ) { } public final Component setVisible ( final boolean visible ) { } public String toString ( ) { } public final void warn ( final String message ) { } protected final void checkComponentTag ( final ComponentTag tag , final String name ) { } protected final void checkComponentTagAttribute ( final ComponentTag tag , final String key , final String value ) { } protected void detachModel ( ) { } protected final String exceptionMessage ( final String message ) { } protected MarkupStream findMarkupStream ( ) { } protected void handleComponentTag ( final ComponentTag tag ) { } protected void handleComponentTagBody ( final MarkupStream markupStream , final ComponentTag openTag ) { } protected abstract void handleRender ( ) { } protected void invalidateModel ( ) { } protected final void renderComponent ( final MarkupStream markupStream ) { } protected final void renderComponentTag ( ComponentTag tag ) { } protected final void renderComponentTag ( final MarkupStream markupStream ) { } protected final void replaceComponentTagBody ( final MarkupStream markupStream , final ComponentTag tag , final String body ) { } protected final Object visitParents ( final Class c , final Component . IVisitor visitor ) { } final void checkRendering ( final Page page ) { } Component get ( final String path ) { } final void renderClosingComponentTag ( final MarkupStream markupStream , final ComponentTag openTag ) { } final void setParent ( final Container parent ) { } private final Page findPage ( ) { } private final void setName ( final String name ) { } }

Fix:
( ( IConvertible ) ( model ) ) . setConverterProvider ( this ) ;