code: private UnificationXref findPreferredUnificationXref(XReferrable bpe)
  	{
  		UnificationXref toReturn = null;
  
  		Collection<UnificationXref> orderedUrefs = getUnificationXrefsSorted(bpe);
  
  		//use preferred db prefix for different type of ER
  		if(bpe instanceof ProteinReference) {
  			// prefer xref having db starts with "uniprot" (preferred) or "refseq";
  			toReturn = findSingleUnificationXref(orderedUrefs, "uniprot");
  			// if null, next try refseq.
  			if(toReturn==null)
  				toReturn = findSingleUnificationXref(orderedUrefs, "refseq");
  		} else if(bpe instanceof SmallMoleculeReference) {
  			// - "chebi", then  "pubchem";
  			toReturn = findSingleUnificationXref(orderedUrefs, "chebi");
  			if(toReturn==null)
  				toReturn = findSingleUnificationXref(orderedUrefs, "pubchem");
  		} else if(bpe instanceof NucleicAcidReference) {
  			//that includes NucleicAcidRegionReference, etc. sub-classes;
  			toReturn = findSingleUnificationXref(orderedUrefs, "ncbi gene");
  			if(toReturn==null)
  				toReturn = findSingleUnificationXref(orderedUrefs, "entrez");
  		} else {
  			//for other XReferrable types (BioSource or ControlledVocabulary)
  			//use if there's only one xref (return null if many)
  			if(orderedUrefs.size()==1)
  				toReturn = orderedUrefs.iterator().next();
  		}
  		
  		return toReturn;
  	}
docs: Finds one preferred unification xref, if possible.
  Preferred db values are:
  "ncbi gene" - for NucleicAcidReference and the sub-classes;
  "uniprot" or "refseq" for ProteinReference;
  "chebi" - for SmallMoleculeReference;
  
  @param bpe BioPAX object that can have xrefs
  @return the "best" first unification xref