Graph searches
--------------

The other day I was wondering why pickling a particular object errored out
with an error deep in one of the subobjects.

    >>> class MyUnpicklableObject(object):
    ...     def __getstate__(self):
    ...         raise NotImplementedError
    ...
    >>> my_object = dict(foo=dict(unrelated='things'),
    ...                  bar=[dict(nesting='fun'),
    ...                       dict(boobytrap=MyUnpicklableObject())])
    >>> import objgraph
    >>> objgraph.show_chain(
    ...     objgraph.find_ref_chain(
    ...         my_object,
    ...         lambda x: isinstance(x, MyUnpicklableObject)),
    ...     backrefs=False,
    ...     filename='forward-chain.png')
    Graph written to ...dot (4 nodes)
    Image generated as forward-chain.png

.. figure:: chain.png
   :alt: [chain of references from my_object to a MyUnpicklableObject instance]

