private char applyEscape(char currentChar) throws IOException {
    	char result = currentChar;
    	char nextChar = nextChar();
    	switch(nextChar) {
	    	case 't':
	    		result = "\t".charAt(0);
	    		break;
	    	case 'b':
	    		result = "\b".charAt(0);
	    		break;
	    	case 'n':
	    		result = "\n".charAt(0);
	    		break;
	    	case 'r':
	    		result = "\r".charAt(0);
	    		break;
	    	case 'f':
	    		result = "\f".charAt(0);
	    		break;
	    	case '\'':
	    		result = "\'".charAt(0);
	    		break;
	    	case '\"':
	    		result = "\"".charAt(0);
	    		break;
	    	case '\\':
	    		result = "\\".charAt(0);
	    		break;
	    	default:
	    		throw new IllegalArgumentException("Must invoke isEscape first!");
    	}
    	nextChar(); // eat this char

    	return result;
    }