export function intersection<K, V>(x: Map<K, V>, y: Entries<K, V>, fc: CombineFunction<V> | null=null): Map<K, V> {
  var fc = fc || IDENTITY;
  var a  = new Map();
  for (var [k, v] of y)
    if (x.has(k)) a.set(k, fc(x.get(k), v));