public String getString(StringBuilder sb) {
		if (sb.length() == 0) return "";
		
		if (sb.length() < 32) {
			int index = getCacheIndex(sb);
			if (index < 0) {
				return sb.toString();
			}
			
			if (stringCache == null) stringCache = new String[CACHE_SIZE];
			if (numberCache == null) numberCache = new BigDecimal[CACHE_SIZE];
			
			String str = stringCache[index];
			if (str == null || str.length() != sb.length()) {
				str = sb.toString();
				stringCache[index] = str;
				numberCache[index] = null;
				return str;
			}
			
			for (int i = 0; i < sb.length(); i++) {
				if (str.charAt(i) != sb.charAt(i)) {
					str = sb.toString();
					stringCache[index] = str;
					numberCache[index] = null;
					return str;
				}
			}
			return str;
		}
		
		return sb.toString();
	}