public <T, E extends Throwable> T accept(IValueVisitor<T, E> v) throws E {
   return v.visitConstructor(this);
 }
 @Override
 public <T, E extends Throwable> T accept(IValueVisitor<T, E> v) throws E {
   return v.visitExternal(this);
 }