a ChainMap version accepting 2 Tables
ChainMap[K; V] = object
proc `[]`[K, V](self: ChainMap[K, V]; k: K): V
proc contains[K, V](self: ChainMap[K, V]; k: K): bool
proc initChainMap[K, V](a, b: Table[K, V]): ChainMap[K, V]