                          mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
                          name=replace_methodname(route.name, methodname),
                          initkwargs=initkwargs,
                      ))
              elif route.key == 'collection':
                  # Dynamic list routes (@list_link or @list_action decorator)
                  for httpmethods, methodname in list_routes:
                      initkwargs = route.initkwargs.copy()
                      initkwargs.update(getattr(viewset, methodname).kwargs)
                      ret.append(Route(
 
</s> remove                         key=route.key,
 </s> add  </s> remove                         key=route.key,
 </s> add  </s> remove             if route.key == 'dynamic':
 </s> add             if isinstance(route, DynamicDetailRoute): </s> remove         known_actions = flatten([route.mapping.values() for route in self.routes])
 </s> add         known_actions = flatten([route.mapping.values() for route in self.routes if isinstance(route, Route)]) </s> remove         Route(
            key='collection',
 </s> add         DynamicListRoute(
            elif isinstance(route, DynamicListRoute):
                          mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
                          name=replace_methodname(route.name, methodname),
                          initkwargs=initkwargs,
                      ))
            elif isinstance(route, DynamicListRoute):
                  # Dynamic list routes (@list_link or @list_action decorator)
                  for httpmethods, methodname in list_routes:
                      initkwargs = route.initkwargs.copy()
                      initkwargs.update(getattr(viewset, methodname).kwargs)
                      ret.append(Route(
keep keep keep keep replace keep keep keep keep keep
 Introduce DynamicDetailRoute and DynamicListRoute to distinguish between different route types 
rest_framework/routers.py