Program: 59806
Project: 59806
Buggy source:
public static <T>NamedParameterNode<T> createNamedParameterNode(Node parent,Class<? extends Name<T>> clazz,Class<T> argClass) throws ClassHierarchyException {
  final String simpleName=ReflectionUtilities.getSimpleName(clazz);
  final String fullName=ReflectionUtilities.getFullName(clazz);
  final String fullArgName=ReflectionUtilities.getFullName(argClass);
  final String simpleArgName=ReflectionUtilities.getSimpleName(argClass);
  final String defaultInstanceAsString;
  NamedParameter namedParameter=clazz.getAnnotation(NamedParameter.class);
  if (namedParameter == null || namedParameter.default_value().isEmpty()) {
    if (namedParameter.default_class() != Void.class) {
      defaultInstanceAsString=ReflectionUtilities.getFullName(namedParameter.default_class());
      boolean isSubclass=false;
      for (      Class<?> c : ReflectionUtilities.classAndAncestors(namedParameter.default_class())) {
        if (c.equals(argClass)) {
          isSubclass=true;
          break;
        }
      }
      if (!isSubclass) {
        throw new ClassHierarchyException(clazz + "String_Node_Str" + defaultInstanceAsString+ "String_Node_Str"+ argClass);
      }
    }
 else {
      defaultInstanceAsString=null;
    }
  }
 else {
    if (namedParameter.default_class() != Void.class) {
      throw new ClassHierarchyException("String_Node_Str" + fullName + "String_Node_Str");
    }
    defaultInstanceAsString=namedParameter.default_value();
  }
  final String documentation;
  final String shortName;
  if (namedParameter != null) {
    documentation=namedParameter.doc();
    shortName=namedParameter.short_name() == null || namedParameter.short_name().isEmpty() ? null : namedParameter.short_name();
  }
 else {
    documentation="String_Node_Str";
    shortName=null;
  }
  return new NamedParameterNodeImpl<>(parent,simpleName,fullName,fullArgName,simpleArgName,documentation,shortName,defaultInstanceAsString);
}

Fixed version (ground truth):
public static <T>NamedParameterNode<T> createNamedParameterNode(Node parent,Class<? extends Name<T>> clazz,Class<T> argClass) throws ClassHierarchyException {
  final String simpleName=ReflectionUtilities.getSimpleName(clazz);
  final String fullName=ReflectionUtilities.getFullName(clazz);
  final String fullArgName=ReflectionUtilities.getFullName(argClass);
  final String simpleArgName=ReflectionUtilities.getSimpleName(argClass);
  final NamedParameter namedParameter=clazz.getAnnotation(NamedParameter.class);
  if (namedParameter == null) {
    throw new IllegalStateException("String_Node_Str");
  }
  final boolean hasStringDefault=!namedParameter.default_value().isEmpty();
  final boolean hasClassDefault=namedParameter.default_class() != Void.class;
  final String defaultInstanceAsString;
  if (hasStringDefault && hasClassDefault) {
    throw new ClassHierarchyException("String_Node_Str" + fullName + "String_Node_Str");
  }
 else   if (!(hasStringDefault || hasClassDefault)) {
    defaultInstanceAsString=null;
  }
 else   if (namedParameter.default_class() != Void.class) {
    defaultInstanceAsString=ReflectionUtilities.getFullName(namedParameter.default_class());
    boolean isSubclass=false;
    for (    final Class<?> c : ReflectionUtilities.classAndAncestors(namedParameter.default_class())) {
      if (c.equals(argClass)) {
        isSubclass=true;
        break;
      }
    }
    if (!isSubclass) {
      throw new ClassHierarchyException(clazz + "String_Node_Str" + defaultInstanceAsString+ "String_Node_Str"+ argClass);
    }
  }
 else {
    defaultInstanceAsString=namedParameter.default_value();
  }
  final String documentation=namedParameter.doc();
  final String shortName=namedParameter.short_name().isEmpty() ? null : namedParameter.short_name();
  return new NamedParameterNodeImpl<>(parent,simpleName,fullName,fullArgName,simpleArgName,documentation,shortName,defaultInstanceAsString);
}