@Override
	public String rangeDescription(Faction.FRange FR, String andOr)
	{
		if(FR==null)
			return "";
		final Faction F=FR.getFaction();
		final Vector<FRange> relevantFactions=new Vector<FRange>();
		for(final Enumeration<FRange> e=F.ranges();e.hasMoreElements();)
		{
			final Faction.FRange FR2=e.nextElement();
			if(FR2.codeName().equalsIgnoreCase(FR.codeName()))
				relevantFactions.addElement(FR2);
		}
		if(relevantFactions.size()==0)
			return "";
		if(relevantFactions.size()==1)
			return F.name()+" of "+relevantFactions.firstElement().name();
		final StringBuffer buf=new StringBuffer(F.name()+" of ");
		for(int i=0;i<relevantFactions.size()-1;i++)
			buf.append(relevantFactions.elementAt(i).name()+", ");
		buf.append(andOr+relevantFactions.lastElement().name());
		return buf.toString();
	}