code: def _create_route(self, env, item):
          
          if item.name in env:
              if isinstance(env[item.name], ApiRoutesByVersion):
                  if item.version in env[item.name].at_version:
                      existing_dt = env[item.name].at_version[item.version]
                      raise InvalidSpec(
                          'Route %s at version %d already defined (%s:%d).' % (
                              quote(item.name), item.version, existing_dt._ast_node.path,
                              existing_dt._ast_node.lineno),
                          item.lineno, item.path)
              else:
                  existing_dt = env[item.name]
                  raise InvalidSpec(
                      'Symbol %s already defined (%s:%d).' % (
                          quote(item.name), existing_dt._ast_node.path,
                          existing_dt._ast_node.lineno),
                      item.lineno, item.path)
          else:
              env[item.name] = ApiRoutesByVersion()
  
          route = ApiRoute(
              name=item.name,
              version=item.version,
              ast_node=item,
          )
          env[route.name].at_version[route.version] = route
          return route
docs: Constructs a route and adds it to the environment.
  
          Args:
              env (dict): The environment of defined symbols. A new key is added
                  corresponding to the name of this new route.
              item (AstRouteDef): Raw route definition from the parser.
  
          Returns:
              stone.api.ApiRoutesByVersion: A group of fully-defined routes indexed by versions.