code: protected AbstractLink newAbstractLink(final String id, final LinkItem model)
  	{
  		AttributeModifier target = null;
  		AbstractLink link = null;
  		if ((model.getTarget() != null) && !model.getTarget().isEmpty())
  		{
  			target = new AttributeModifier("target", Model.of(model.getTarget()));
  		}
  		if (model.getUrl() != null)
  		{
  			link = new ExternalLink(id, Model.of(model.getUrl()));
  		}
  		if (link == null)
  		{
  			link = new BookmarkablePageLink<String>(id, model.getPageClass());
  		}
  		// if target not null then set it...
  		if (target != null)
  		{
  			link.add(target);
  		}
  		link.setOutputMarkupId(true);
  		return link;
  	}
docs: Factory method for creating the new item {@link AbstractLink} in the list. This method is
  invoked in the constructor from the derived classes and can be overridden so users can
  provide their own version of a new item {@link AbstractLink} in the list.
  
  @param id
  the id
  @param model
  the model
  @return the new item {@link AbstractLink} in the list.