public List<Token> getTokensInRange(int start, int end){
    	
    	int startIndex = 0;
    	int endIndex = 0;
    	Iterator<Token> it = tokens.iterator();
    	while (it.hasNext()){
    		Token token = it.next();
    		if (token.getStartOffset() >= start || token.getEndOffset() >= start){
    			endIndex = startIndex = tokens.indexOf(token);
    			break; 
    		}
    	}
    	while (it.hasNext()){
    		Token token = it.next();
    		if (token.getStartOffset() <= end){
    			++endIndex;
    		} else {
    			if (token.getEndOffset() > end){
    				++endIndex;
    			}
    			break;
    		}
    	}
    	return tokens.subList(startIndex, endIndex);
    }