public <R, P> R accept(TypeVisitor<R, P> v, P p) {
   return v.visitDeclared(this, p);
 }