Maybe it would be good to split this method into ``remove($object)`` (or maybe ``unset($object)``) and ``clear()``? Methods should not act different deppeding on the argument you pass. 
I also believe that remove should check if passed element is an object and throw some kind of exception if is not. What do you think?