May I also ask we agree on a convention for asserts? One convention is: don't use them.
If they are used, they should be used correctly. I see them being used in a few places to check arguments to public methods, which doesn't work out, because these checks don't happen when asserts are off, and they are off by default. asserts are for internal invariants that the class 'knows' to be true when everything is functioning correctly and bug-free. They're turned on in testing since, hey, mistakes are made. But once testing proves they don't fire, they are turned off in production.