public final static Entry<String,Integer> getStringFollowedByNumber(final String str, final boolean romanOK)
	{
		final String codeStr;
		final Integer number;
		if((str==null)||(str.length()<1))
		{
			codeStr=str;
			number=null;
		}
		else
		{
			int dex=str.length()-1;
			if(!Character.isDigit(str.charAt(dex)))
			{
				if((!romanOK)||(!isRomanDigit(str.charAt(dex))))
				{
					codeStr=str;
					number=null;
				}
				else
				{
					dex--;
					while((dex>0)&&(isRomanDigit(str.charAt(dex))))
						dex--;
					codeStr=str.substring(0,dex+1);
					number=Integer.valueOf(convertFromRoman(str.substring(dex+1)));
				}
			}
			else
			{
				dex--;
				while((dex>0)&&(Character.isDigit(str.charAt(dex))))
					dex--;
				codeStr=str.substring(0,dex+1);
				number=Integer.valueOf(s_int(str.substring(dex+1)));
			}
		}
		return new Entry<String,Integer>()
		{
			@Override public String getKey() { return codeStr;}
			@Override public Integer getValue() { return number;}
			@Override public Integer setValue(Integer value) { return value;}
		};
	}