* 1. if we are mutable the arguments is a const iterator and therefore calling this method is mistake in the users code and results in a (probably not understandable compiler error
* 2. If we are a const iterator this is the default copy constructor as the argument is a const iterator too.