code: def _navigator_or_thunk(self, link):
          '''Crafts a navigator or from a hal-json link dict.
  
          If the link is relative, the returned navigator will have a
          uri that relative to this navigator's uri.
  
          If the link passed in is templated, a PartialNavigator will be
          returned instead.
          '''
          # resolve relative uris against the current uri
          uri = urlparse.urljoin(self.uri, link['href'])
          link_obj = Link(uri=uri, properties=link)
          if link.get('templated'):
              # Can expand into a real HALNavigator
              return PartialNavigator(link_obj, core=self._core)
          else:
              return HALNavigator(link_obj, core=self._coref _navigator_or_thunk(self, link):
          '''Crafts a navigator or from a hal-json link dict.
  
          If the link is relative, the returned navigator will have a
          uri that relative to this navigator's uri.
  
          If the link passed in is templated, a PartialNavigator will be
          returned instead.
          '''
          # resolve relative uris against the current uri
          uri = urlparse.urljoin(self.uri, link['href'])
          link_obj = Link(uri=uri, properties=link)
          if link.get('templated'):
              # Can expand into a real HALNavigator
              return PartialNavigator(link_obj, core=self._core)
          else:
              return HALNavigator(link_obj, core=self._core)
docs: Crafts a navigator or from a hal-json link dict.
  
          If the link is relative, the returned navigator will have a
          uri that relative to this navigator's uri.
  
          If the link passed in is templated, a PartialNavigator will be
          returned instead.