Program: 117445
Project: 117445
Buggy source:
public EmbeddedCollectionEditPanel(String id,final IModel<ODocument> documentModel,final IModel<OProperty> propertyModel,Class<?> finalType){
  super(id,new DynamicPropertyValueModel<M>(documentModel,propertyModel));
  setOutputMarkupId(true);
  this.finalType=finalType;
  final DefaultVisualizer visualizer=DefaultVisualizer.INSTANCE;
  final OType oType=propertyModel.getObject().getLinkedType();
  ListView<T> listView=new ListView<T>("String_Node_Str",new PropertyModel<List<T>>(this,"String_Node_Str")){
    @Override protected void populateItem(    final ListItem<T> item){
      item.add(visualizer.createComponent("String_Node_Str",DisplayMode.EDIT,documentModel,propertyModel,oType,item.getModel()));
      item.add(new AjaxFormCommand<Object>("String_Node_Str","String_Node_Str"){
        @Override public void onClick(        AjaxRequestTarget target){
          getData().remove(item.getIndex());
          target.add(EmbeddedCollectionEditPanel.this);
        }
      }
.setBootstrapSize(BootstrapSize.EXTRA_SMALL).setBootstrapType(BootstrapType.DANGER).setIcon((String)null));
    }
    @Override protected ListItem<T> newItem(    int index,    IModel<T> itemModel){
      return new ListItem<T>(index,itemModel){
        @Override public IMarkupFragment getMarkup(        Component child){
          if (child == null || !child.getId().equals("String_Node_Str"))           return super.getMarkup(child);
          IMarkupFragment ret=markupProvider.provideMarkup(child);
          return ret != null ? ret : super.getMarkup(child);
        }
      }
;
    }
  }
;
  add(listView);
  add(new AjaxFormCommand("String_Node_Str","String_Node_Str"){
    @Override public void onClick(    AjaxRequestTarget target){
      getData().add(null);
      target.add(EmbeddedCollectionEditPanel.this);
    }
  }
.setBootstrapSize(BootstrapSize.EXTRA_SMALL).setBootstrapType(BootstrapType.PRIMARY).setIcon((String)null));
}

Fixed version (ground truth):
public EmbeddedCollectionEditPanel(String id,final IModel<ODocument> documentModel,final IModel<OProperty> propertyModel,Class<?> finalType){
  super(id,new DynamicPropertyValueModel<M>(documentModel,propertyModel));
  setOutputMarkupId(true);
  this.finalType=finalType;
  final DefaultVisualizer visualizer=DefaultVisualizer.INSTANCE;
  final OType oType=propertyModel.getObject().getLinkedType();
  ListView<T> listView=new ListView<T>("String_Node_Str",new PropertyModel<List<T>>(this,"String_Node_Str")){
    @Override protected void populateItem(    final ListItem<T> item){
      item.add(visualizer.createComponent("String_Node_Str",DisplayMode.EDIT,documentModel,propertyModel,oType,item.getModel()));
      item.add(new AjaxFormCommand<Object>("String_Node_Str","String_Node_Str"){
        @Override public void onClick(        AjaxRequestTarget target){
          getData().remove(item.getIndex());
          target.add(EmbeddedCollectionEditPanel.this);
        }
      }
.setBootstrapSize(BootstrapSize.EXTRA_SMALL).setBootstrapType(BootstrapType.DANGER).setIcon((String)null));
    }
    @Override protected ListItem<T> newItem(    int index,    IModel<T> itemModel){
      return new ListItem<T>(index,itemModel){
        @Override public IMarkupFragment getMarkup(        Component child){
          if (child == null || !child.getId().equals("String_Node_Str"))           return super.getMarkup(child);
          IMarkupFragment ret=markupProvider.provideMarkup(child);
          return ret != null ? ret : super.getMarkup(child);
        }
      }
;
    }
  }
;
  listView.setReuseItems(true);
  add(listView);
  add(new AjaxFormCommand("String_Node_Str","String_Node_Str"){
    @Override public void onClick(    AjaxRequestTarget target){
      getData().add(null);
      target.add(EmbeddedCollectionEditPanel.this);
    }
  }
.setBootstrapSize(BootstrapSize.EXTRA_SMALL).setBootstrapType(BootstrapType.PRIMARY).setIcon((String)null));
}