docs: private Map<String, Entry> readEntries(String mapping, boolean ignoreCase) {
  		Map<String, Entry> entries = new HashMap<>();
  
  		try {
  			// ms, 2010-10-05: try to load the file from the CLASSPATH first
  			InputStream is = getClass().getClassLoader().getResourceAsStream(mapping);
  			// if not found in the CLASSPATH, load from the file system
  			if (is == null) is = new FileInputStream(mapping);
  			BufferedReader rd = new BufferedReader(new InputStreamReader(is));
  
  			int lineCount = 0;
  			for (String line; (line = rd.readLine()) != null; ) {
  				lineCount ++;
  				String[] split = line.split("\t");
  				if (split.length < 2 || split.length > 4)
  					throw new RuntimeException("Provided mapping file is in wrong format");
  				if (split[1].trim().equalsIgnoreCase("AS")) System.err.println("ERRRR " + mapping + "|" + line + " at " + lineCount);
  				String stringLine = split[1].trim();
  				if (ignoreCase) stringLine = stringLine.toLowerCase();
  				String[] words = stringLine.split("\\s+");
  				String type = split[0].trim();
  				Set<String> overwritableTypes = new HashSet<String>();
  				overwritableTypes.add(flags.backgroundSymbol);
  				overwritableTypes.add(null);
  				double priority = 0;
  				List<String> tokens = new ArrayList<String>();
  
  				try {
  					if (split.length >= 3)
  						overwritableTypes.addAll(Arrays.asList(split[2].trim().split(",")));
  					if (split.length == 4)
  						priority = Double.parseDouble(split[3].trim());
  
  					for (String str : words) {
  						tokens.add(str);
  					}
  				} catch(NumberFormatException e) {
  					System.err.println("ERROR: Invalid line " + lineCount + " in regexner file " + mapping + ": \"" + line + "\"!");
  					throw e;
  				}
  				addEntry(words, type, priority, overwritableTypes);
  			}
  			rd.close();
  			is.close();
  		} catch (IOException e) {
  			e.printStackTrace();
  		}
  		return entries;
  	}