code: public void fetch(final BioPAXElement element, final Model model)
  	{
      	if(!model.containsID(element.getUri()))
      		model.add(element);
      	
      	Set<BioPAXElement> children = fetch(element);
      	
          for(BioPAXElement e : children) {
  			if (!model.containsID(e.getUri())) {
  				model.add(e);
  			} else if (!model.contains(e)) {
  				throw new AssertionError("fetch(bioPAXElement, model): found different child objects " +
  						"with the same URI: " + e.getUri() +
  						"(replace/merge, or use fetch(bioPAXElement) instead!)");
  			}
  		}
  	}
docs: Adds the element and all its children
  (found via traversing into object properties that
  pass all the filters defined in the Constructor, and
  also taking #isSkipSubPathways into account)
  to the target model.
  
  This method fails if there are different child objects
  with the same ID, because normally a good (self-consistent)
  model does not contain duplicate BioPAX elements. Consider
  using {@link #fetch(BioPAXElement)} method instead if you
  want to get all the child elements anyway.
  
  @param element the BioPAX element to be added into the model
  @param model model into which elements will be added