* @warning Calling this method results in a compiler error, if this is a mutable iterator.
*
* This is somehow hard to understand, therefore play with the cases:
* 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
* 1. if we are mutable the arguments is a const iterator and therefore calling this method is mistake in the user's 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.