private static void parameters(Tree.TypeParameterList tpl, StyledString label) {
   if (tpl != null && !tpl.getTypeParameterDeclarations().isEmpty()) {
     label.append("<");
     int len = tpl.getTypeParameterDeclarations().size(), i = 0;
     for (Tree.TypeParameterDeclaration p : tpl.getTypeParameterDeclarations()) {
       label.append(name(p.getIdentifier()), TYPE_STYLER);
       if (++i < len) label.append(", ");
     }
     label.append(">");
   }
 }
 @Override
 public void visit(Tree.SpecifierStatement that) {
   if (that.getRefinement()) {
     Tree.Term lhs = that.getBaseMemberExpression();
     if (lhs instanceof Tree.ParameterizedExpression) {
       Tree.ParameterizedExpression pe = (Tree.ParameterizedExpression) lhs;
       for (Tree.ParameterList pl : pe.getParameterLists()) {
         if (pl != null) {
           pl.visit(this);
         }
       }
       Tree.TypeParameterList tpl = pe.getTypeParameterList();
       if (tpl != null) {
         tpl.visit(this);
       }
     }
     // the LHS will be treated as a refinement by
     // FindRefinementsVisitor so ignore it here
     super.visit(that.getSpecifierExpression());
   } else {
     super.visit(that);
   }
 }