@staticmethod
def step_key(step):
    """
        Returns the key we use for hashing (the shooting snapshot).

        Parameters
        ----------
        step : :class:`.MCStep`
            the step to extract a shooting point from

        Returns
        -------
        :class:`.Snapshot` or None
            the shooting snapshot, or None if this step is not a shooting
            move.
        """
    key = None
    try:
        details = step.change.canonical.details
        shooting_snap = details.shooting_snapshot
    except AttributeError:
        pass
    except IndexError:
        pass
    else:
        key = shooting_snap
    return key
