docs: def _preconditions_snapshots_postconditions(checker: Callable) -> _PrePostSnaps:
      """Collect the preconditions, snapshots and postconditions from a contract checker of a function."""
      preconditions = getattr(checker, "__preconditions__", [])  # type: List[List[icontract._Contract]]
  
      assert all(isinstance(precondition_group, list) for precondition_group in preconditions)
      assert (all(
          isinstance(precondition, icontract._Contract) for precondition_group in preconditions
          for precondition in precondition_group))
  
      # Filter empty precondition groups ("require else" blocks)
      preconditions = [group for group in preconditions if len(group) > 0]
  
      snapshots = getattr(checker, "__postcondition_snapshots__", [])  # type: List[icontract._Snapshot]
      assert all(isinstance(snap, icontract._Snapshot) for snap in snapshots)
  
      postconditions = getattr(checker, "__postconditions__", [])  # type: List[icontract._Contract]
  
      assert all(isinstance(postcondition, icontract._Contract) for postcondition in postconditions)
  
      return _PrePostSnaps(preconditions=preconditions, snapshots=snapshots, postconditions=postconditions)