public static TagCycleException create(Class<? extends TagCycleException> clazz, String path, Optional<Integer> lineNumber, Optional<Integer> startPosition) {
final Integer line = lineNumber.orElse(-1);
final Integer position = startPosition.orElse(-1);
if (clazz != null) {
if (clazz.equals(ExtendsTagCycleException.class)) {
return new ExtendsTagCycleException(path, line, position);
} else if (clazz.equals(ImportTagCycleException.class)) {
return new ImportTagCycleException(path, line, position);
} else if (clazz.equals(IncludeTagCycleException.class)) {
return new IncludeTagCycleException(path, line, position);
} else if (clazz.equals(MacroTagCycleException.class)) {
return new MacroTagCycleException(path, line, position);
} else if (clazz.equals(FromTagCycleException.class)) {
return new FromTagCycleException(path, line, position);
}
}
return new TagCycleException("", path, line, position);
}