code: def parse(self) -> InstanceRoute:
          
          res = InstanceRoute()
          if self.at_end():
              return res
          if self.peek() == "/":
              self.offset += 1
          if self.at_end():
              return res
          sn = self.schema_node
          while True:
              name, ns = self.prefixed_name()
              cn = sn.get_data_child(name, ns)
              if cn is None:
                  for cn in sn.children:
                      if (isinstance(cn, RpcActionNode) and cn.name == name and
                              (ns is None or cn.ns == ns)):
                          res.append(ActionName(name, ns))
                          return res
                  raise NonexistentSchemaNode(sn.qual_name, name, ns)
              res.append(MemberName(name, ns))
              if self.at_end():
                  return res
              if isinstance(cn, SequenceNode):
                  self.char("=")
                  res.append(self._key_values(cn))
                  if self.at_end():
                      return res
              else:
                  self.char("/")
              sn = cn
docs: Parse resource identifier.