neither respondsToSelector: nor isKindOfClass: can be reliably used to determine if members of classes like NS(Mutable)Dictionary or NS(Mutable)Array are mutable or not... So I had to add a hackish isMutableObj method to determine (via try/catch) whether an object is mutable. I do this in the first place to avoid making a mutable copy of EVERYTHING because that could be ineffecient for deep or large dictionaries.