docs: def render(self, bindings):
          """Renders a string from a path template using the provided bindings.
  
          Args:
              bindings (dict): A dictionary of var names to binding strings.
  
          Returns:
              str: The rendered instantiation of this path template.
  
          Raises:
              ValidationError: If a key isn't provided or if a sub-template can't
                  be parsed.
          """
          out = []
          binding = False
          for segment in self.segments:
              if segment.kind == _BINDING:
                  if segment.literal not in bindings:
                      raise ValidationException(
                          ('rendering error: value for key \'{}\' '
                           'not provided').format(segment.literal))
                  out.extend(PathTemplate(bindings[segment.literal]).segments)
                  binding = True
              elif segment.kind == _END_BINDING:
                  binding = False
              else:
                  if binding:
                      continue
                  out.append(segment)
          path = _format(out)
          self.match(path)
          return path