public String substVars(String inString) {
		StringBuffer sb = new StringBuffer();
		// System.out.printf("VariableMap.substVars(%s)%n", inString);
		Matcher m = varsPatt.matcher(inString);
		
		while (m.find()) {
			String varName = m.group(1);
			String replText = get(varName);
			// System.err.printf("VariableMap.substVars: %s->%s%n", varName, replText);
			if (replText != null) {
				try {
				m.appendReplacement(sb, replText);
				} catch (IllegalArgumentException e) {
					System.err.printf("VariableMap.SubstVars: BLOWN BY %s%nInputString %s", replText, inString);
					sb.append("???");
				}
			}
		}
		m.appendTail(sb);
		return sb.toString();
	}