Program: 171165
Project: 171165
Buggy source:
public Object get(StructInstance s,String attrName) throws MetadataException {
  AttributeInfo i=fields.get(attrName);
  if (i == null) {
    throw new MetadataException(String.format("String_Node_Str",attrName,s.getTypeName()));
  }
  int pos=fieldPos.get(attrName);
  int nullPos=fieldNullPos.get(attrName);
  if (s.nullFlags[nullPos]) {
    return null;
  }
  if (i.dataType() == DataTypes.BOOLEAN_TYPE) {
    return s.bools[pos];
  }
 else   if (i.dataType() == DataTypes.BYTE_TYPE) {
    return s.bytes[pos];
  }
 else   if (i.dataType() == DataTypes.SHORT_TYPE) {
    return s.shorts[pos];
  }
 else   if (i.dataType() == DataTypes.INT_TYPE) {
    return s.ints[pos];
  }
 else   if (i.dataType() == DataTypes.LONG_TYPE) {
    return s.longs[pos];
  }
 else   if (i.dataType() == DataTypes.FLOAT_TYPE) {
    return s.floats[pos];
  }
 else   if (i.dataType() == DataTypes.DOUBLE_TYPE) {
    return s.doubles[pos];
  }
 else   if (i.dataType() == DataTypes.BIGINTEGER_TYPE) {
    return s.bigIntegers[pos];
  }
 else   if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) {
    return s.bigDecimals[pos];
  }
 else   if (i.dataType() == DataTypes.DATE_TYPE) {
    return s.dates[pos];
  }
 else   if (i.dataType() == DataTypes.STRING_TYPE) {
    return s.strings[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
    return s.arrays[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) {
    return s.maps[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT) {
    return s.structs[pos];
  }
 else {
    throw new MetadataException(String.format("String_Node_Str",i.dataType()));
  }
}

Fixed version (ground truth):
public Object get(StructInstance s,String attrName) throws MetadataException {
  AttributeInfo i=fields.get(attrName);
  if (i == null) {
    throw new MetadataException(String.format("String_Node_Str",attrName,s.getTypeName()));
  }
  int pos=fieldPos.get(attrName);
  int nullPos=fieldNullPos.get(attrName);
  if (s.nullFlags[nullPos]) {
    return null;
  }
  if (i.dataType() == DataTypes.BOOLEAN_TYPE) {
    return s.bools[pos];
  }
 else   if (i.dataType() == DataTypes.BYTE_TYPE) {
    return s.bytes[pos];
  }
 else   if (i.dataType() == DataTypes.SHORT_TYPE) {
    return s.shorts[pos];
  }
 else   if (i.dataType() == DataTypes.INT_TYPE) {
    return s.ints[pos];
  }
 else   if (i.dataType() == DataTypes.LONG_TYPE) {
    return s.longs[pos];
  }
 else   if (i.dataType() == DataTypes.FLOAT_TYPE) {
    return s.floats[pos];
  }
 else   if (i.dataType() == DataTypes.DOUBLE_TYPE) {
    return s.doubles[pos];
  }
 else   if (i.dataType() == DataTypes.BIGINTEGER_TYPE) {
    return s.bigIntegers[pos];
  }
 else   if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) {
    return s.bigDecimals[pos];
  }
 else   if (i.dataType() == DataTypes.DATE_TYPE) {
    return s.dates[pos];
  }
 else   if (i.dataType() == DataTypes.STRING_TYPE) {
    return s.strings[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
    return s.arrays[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) {
    return s.maps[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT || i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
    return s.structs[pos];
  }
 else   if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) {
    if (s.ids[pos] != null) {
      return s.ids[pos];
    }
 else {
      return s.referenceables[pos];
    }
  }
 else {
    throw new MetadataException(String.format("String_Node_Str",i.dataType()));
  }
}