def __iadd__(self, val):
self.__has = self.__add(val)<EOL>self.__optimize()<EOL>return self<EOL>
``a += b`` operation support. The difference from ``+`` is that no new object is created.

Parameters
----------
val : int or tuple or list or range
    Integer or range to add.

Returns
-------
self : range_t
    No new object is created, the current one is extended by `val` and returned.