code: def cross_boundary(prev_obj, obj):
      
      if prev_obj is None:
          return
  
      if isinstance(obj, _SecuredAttribute):
          # a secure attribute can live in unsecure class so we have to set
          # while we walk the route
          obj.parent = prev_obj
  
      if hasattr(prev_obj, '_pecan'):
          if obj not in prev_obj._pecan.get('unlocked', []):
              handle_security(prev_obj)
docs: Check permissions as we move between object instances.