export function searchValue<K, V, W=V>(x: Map<K, V>, v: V, fc: CompareFunction<V|W> | null=null, fm: MapFunction<K, V, V|W> | null=null): K {
  var fc = fc || COMPARE;
  var fm = fm || IDENTITY;
  var w = fm(v, null, null);
  for (var [k, u] of x) {