+It is possible for a Python subclass of an Objective-C class to implement
+the ``NSCopying`` protocol. Some care must be taken when the superclass
+already implements the protocol.
+Some ``NSCopying`` compliant Objective-C classes copy the template object
+manually. In those cases the Python subclass must also copy the additional
+Other ``NSCopying`` compliant Objective-C classes use a convenience function
+that creates a shallow copy of the object and all of its ivars. In those
+cases the Python subclass will not have to explicitly copy all of the ivars.
+However, the ivars in the copy will refer to the same objects as the original,
+and will thus share some state. As with shallow copies in Python, if any of
+the ivars refer to mutable objects (``list``, ``dict``, etc.) it may be
+desirable to explicitly make shallow or deep copies of the mutable ivars.
+ PyObjC might introduce a helper class when you inherit from a class
+ that implements ``NSCopying`` as an internal implementation detail.
+ External code should not rely on the existance of this class.
+ ``SomeClass.copyWithZone_`` should not be implemented unless a
+ superclass already implements ``copyWithZone:``, or else the behavior
+ will be undefined (memory corruption, crashes, etc.).