@@ -0,0 +1,1562 @@
+package jauter;%0A%0Apublic class Router%3CT%3E %7B%0A  protected final NonorderedRouter%3CT%3E first = new NonorderedRouter%3CT%3E();%0A  protected final NonorderedRouter%3CT%3E other = new NonorderedRouter%3CT%3E();%0A  protected final NonorderedRouter%3CT%3E last  = new NonorderedRouter%3CT%3E();%0A%0A  //----------------------------------------------------------------------------%0A%0A  public Router%3CT%3E pattern(String path, T target) %7B%0A    other.pattern(path, target);%0A    return this;%0A  %7D%0A%0A  public Router%3CT%3E patternFirst(String path, T target) %7B%0A    first.pattern(path, target);%0A    return this;%0A  %7D%0A%0A  public Router%3CT%3E patternLast(String path, T target) %7B%0A    last.pattern(path, target);%0A    return this;%0A  %7D%0A%0A  //----------------------------------------------------------------------------%0A%0A  public void removeTarget(T target) %7B%0A    first.removeTarget(target);%0A    other.removeTarget(target);%0A    last .removeTarget(target);%0A  %7D%0A%0A  public void removePath(String path) %7B%0A    first.removePath(path);%0A    other.removePath(path);%0A    last .removePath(path);%0A  %7D%0A%0A  //----------------------------------------------------------------------------%0A%0A  public Routed%3CT%3E route(String path) %7B%0A    Routed%3CT%3E ret = first.route(path);%0A    if (ret != null) return ret;%0A%0A    ret = other.route(path);%0A    if (ret != null) return ret;%0A%0A    return last.route(path);%0A  %7D%0A%0A  public String path(T target, Object... params) %7B%0A    String ret = first.path(target, params);%0A    if (ret != null) return ret;%0A%0A    ret = other.path(target, params);%0A    if (ret != null) return ret;%0A%0A    return last.path(target, params);%0A  %7D%0A%7D%0A

Fix #3 Support route ordering: first, last