modify, remove, and replace functions return a copy ({ ...self }) of the input when there's no match for the key? The module is designed for immutable, closed records, so why not just return self? Seems like it's unnecessary extra work, and causes re-renders in things like React