code: public static LocationImpl parse(String text) throws IllegalArgumentException {
  		if (text == null || text.length() == 0) {
  			return null;
  		}
  		String description;
  		int uriStart = text.lastIndexOf(" - ");
  		if (uriStart > -1) {
  			description = text.substring(0, uriStart);
  			uriStart += 3;
  		} else {
  			description = null;
  			uriStart = 0;
  		}
  		try {
  			int colSep = text.lastIndexOf(':');
  			if (colSep > -1) {
  				int column = Integer.parseInt(text.substring(colSep + 1));
  				int lineSep = text.lastIndexOf(':', colSep - 1);
  				if (lineSep > -1) {
  					int line = Integer.parseInt(text.substring(lineSep + 1, colSep));
  					return new LocationImpl(description, text.substring(uriStart, lineSep), line, column);
  				}
  			} else {
  				if (text.endsWith(UNKNOWN_STRING)) {
  					return LocationImpl.UNKNOWN;
  				}
  			}
  		} catch (Exception e) {
  		}
  		return LocationImpl.UNKNOWN;
  	}
docs: Parse a location string of the form "
  <code><em>uri</em>:<em>line</em>:<em>column</em></code>" (e.g. "
  <code>path/to/file.xml:3:40</code>") to a Location object. Additionally,
  a description may also optionally be present, separated with an hyphen
  (e.g. "<code>foo - path/to/file.xml:3.40</code>").
  
  @param text
  the text to parse
  @return the location (possibly <code>null</code> if text was null or in
  an incorrect format)