static boolean putMatchX(Map matches, S key, Lisp val) { if (matches.containsKey(key) && neq(matches.get(key), val)) { print ("key: " + key); fail("multi-matching not implemented"); } matches.put(key, val); ret true; } static boolean putMatchX(Map matches, S key, S val) { ret putMatchX(matches, key, lisp(val)); } static boolean putMatchX(Map mOuter, Map mInner, S key, S val) { // TODO: if it points to a literal ret putMatchX(mOuter, mInner.get(key).raw(), val); }