code: def lresolve(self, path):
          
          path = make_string_path(path)
          if path == self.root.name:
              # The root directory will never be a link
              return self.root
  
          # remove trailing separator
          path = self._path_without_trailing_separators(path)
          path = self._original_path(path)
  
          parent_directory, child_name = self.splitpath(path)
          if not parent_directory:
              parent_directory = self.cwd
          try:
              parent_obj = self.resolve(parent_directory)
              assert parent_obj
              if not isinstance(parent_obj, FakeDirectory):
                  if not self.is_windows_fs and isinstance(parent_obj, FakeFile):
                      self.raise_io_error(errno.ENOTDIR, path)
                  self.raise_io_error(errno.ENOENT, path)
              return parent_obj.get_entry(child_name)
          except KeyError:
              self.raise_io_error(errno.ENOENT, path)
docs: Search for the specified object, resolving only parent links.
  
          This is analogous to the stat/lstat difference.  This resolves links
          *to* the object but not of the final object itself.
  
          Args:
              path: Specifies target FakeFile object to retrieve.
  
          Returns:
              The FakeFile object corresponding to path.
  
          Raises:
              IOError: if the object is not found.