public ArrayList<String> process(ArrayList<String> tokens){
		ArrayList<String> processed_tokens = new ArrayList<String>();
		
		for( String token: tokens ){
			if( stoplist == null ||
				!stoplist.contains(token.toLowerCase()) )
			{
				if( lowercase ){
					token = token.toLowerCase();
				}
			
				if( stem ){
					token = stemmer.stem(token);
				}
				
				if( foldNumbers &&
					token.matches("^[+-]?(\\d+[.,]?)*\\d$") ){
					token = "<NUM>";
				}
				
				processed_tokens.add(token);
			}
		}
		
		return processed_tokens;
	}