def with_meta(self, *args, **kwargs):
md = pimms.merge(self.meta_data, *(args + (kwargs,)))<EOL>if md is self.meta_data: return self<EOL>else: return self.copy(meta_data=md)<EOL>
obj.with_meta(...) collapses the given arguments with pimms.merge into the object's current
meta_data map and yields a new object with the new meta-data.