class AnnotationListItem implements AnnotationListItemView.Presenter, IsWidget {

    public void loadAnnotation( Annotation annotation, AnnotationSource annotationSource ) {
        this.annotation = annotation;
        view.setHeadingTitle( annotation.getClassName( ) );

        if ( annotation.getAnnotationDefinition( ) != null &&
                annotation.getAnnotationDefinition( ).getValuePairs( ) != null ) {
            for ( AnnotationValuePairDefinition valuePairDefinition : annotation.getAnnotationDefinition( ).getValuePairs( ) ) {
                AnnotationValuePairListItem valuePairListItem = createListItem();
                valuePairListItem.loadValuePair( annotation, valuePairDefinition, annotationSource );
                valuePairListItem.setClearValuePairHandler( new AdvancedAnnotationListEditorView.ClearValuePairHandler( ) {
                    @Override
                    public void onClearValuePair( Annotation annotation, String valuePair ) {
                        if ( clearValuePairHandler != null ) {
                            clearValuePairHandler.onClearValuePair( annotation, valuePair );
                        }
                    }
                } );
                valuePairListItem.setEditValuePairHandler( new AdvancedAnnotationListEditorView.EditValuePairHandler( ) {
                    @Override
                    public void onEditValuePair( Annotation annotation, String valuePair ) {
                        if ( editValuePairHandler != null ) {
                            editValuePairHandler.onEditValuePair( annotation, valuePair );
                        }
                    }
                } );
                view.addItem( valuePairListItem );
                items.add( valuePairListItem );
            }
        }
    }

    public  AnnotationListItem( );
    @Inject public  AnnotationListItem( AnnotationListItemView view, Instance<AnnotationValuePairListItem> itemInstance );

}