List<? extends ParseTreeNode> children) {
Constructor<T> ctor = findCloneCtor(clazz);
try {
return ctor.newInstance(pos, value, children);
} catch (InstantiationException e) {
throw new SomethingWidgyHappenedError(
getCtorErrorMessage(ctor, value, children), e);
} catch (IllegalAccessException e) {
throw new SomethingWidgyHappenedError(
getCtorErrorMessage(ctor, value, children), e);
} catch (InvocationTargetException e) {
throw new SomethingWidgyHappenedError(
getCtorErrorMessage(ctor, value, children), e);
} catch (IllegalArgumentException e) {
throw new SomethingWidgyHappenedError(
getCtorErrorMessage(ctor, value, children), e);
}
}