Program: 53291
Project: 53291
Buggy source:
@Override public Object getValue(int index,int selector,Object parameters){
  if (index == 1) {
    return getLogicalName();
  }
 else   if (index == 2) {
    int cnt=m_ObjectList.size();
    try {
      ByteArrayOutputStream data=new ByteArrayOutputStream();
      data.write((byte)DataType.ARRAY.getValue());
      GXCommon.setObjectCount(cnt,data);
      if (cnt != 0) {
        for (        GXDLMSObject it : m_ObjectList) {
          data.write((byte)DataType.STRUCTURE.getValue());
          data.write((byte)4);
          GXCommon.setData(data,DataType.UINT16,it.getShortName());
          GXCommon.setData(data,DataType.UINT16,it.getObjectType().getValue());
          GXCommon.setData(data,DataType.UINT8,0);
          GXCommon.setData(data,DataType.OCTET_STRING,it.getLogicalName());
        }
        if (m_ObjectList.findBySN(this.getShortName()) == null) {
          data.write((byte)DataType.STRUCTURE.getValue());
          data.write((byte)4);
          GXCommon.setData(data,DataType.UINT16,this.getShortName());
          GXCommon.setData(data,DataType.UINT16,this.getObjectType().getValue());
          GXCommon.setData(data,DataType.UINT8,0);
          GXCommon.setData(data,DataType.OCTET_STRING,this.getLogicalName());
        }
      }
      return data.toByteArray();
    }
 catch (    Exception ex) {
      Logger.getLogger(GXDLMSAssociationShortName.class.getName()).log(Level.SEVERE,null,ex);
      throw new RuntimeException(ex.getMessage());
    }
  }
 else   if (index == 3) {
    boolean lnExists=m_ObjectList.findBySN(this.getShortName()) != null;
    int cnt=m_ObjectList.size();
    if (!lnExists) {
      ++cnt;
    }
    ByteArrayOutputStream data=new ByteArrayOutputStream();
    data.write((byte)DataType.ARRAY.getValue());
    GXCommon.setObjectCount(cnt,data);
    try {
      for (      GXDLMSObject it : m_ObjectList) {
        getAccessRights(it,data);
      }
      if (!lnExists) {
        getAccessRights(this,data);
      }
    }
 catch (    Exception ex) {
      Logger.getLogger(GXDLMSAssociationShortName.class.getName()).log(Level.SEVERE,null,ex);
      throw new RuntimeException(ex.getMessage());
    }
    return data.toByteArray();
  }
 else   if (index == 4) {
  }
  throw new IllegalArgumentException("String_Node_Str");
}

Fixed version (ground truth):
@Override public Object getValue(int index,int selector,Object parameters){
  if (index == 1) {
    return getLogicalName();
  }
 else   if (index == 2) {
    int cnt=m_ObjectList.size();
    try {
      ByteArrayOutputStream data=new ByteArrayOutputStream();
      data.write((byte)DataType.ARRAY.getValue());
      GXCommon.setObjectCount(cnt,data);
      if (cnt != 0) {
        for (        GXDLMSObject it : m_ObjectList) {
          data.write((byte)DataType.STRUCTURE.getValue());
          data.write((byte)4);
          GXCommon.setData(data,DataType.INT16,it.getShortName());
          GXCommon.setData(data,DataType.UINT16,it.getObjectType().getValue());
          GXCommon.setData(data,DataType.UINT8,0);
          GXCommon.setData(data,DataType.OCTET_STRING,it.getLogicalName());
        }
        if (m_ObjectList.findBySN(this.getShortName()) == null) {
          data.write((byte)DataType.STRUCTURE.getValue());
          data.write((byte)4);
          GXCommon.setData(data,DataType.INT16,this.getShortName());
          GXCommon.setData(data,DataType.UINT16,this.getObjectType().getValue());
          GXCommon.setData(data,DataType.UINT8,0);
          GXCommon.setData(data,DataType.OCTET_STRING,this.getLogicalName());
        }
      }
      return data.toByteArray();
    }
 catch (    Exception ex) {
      Logger.getLogger(GXDLMSAssociationShortName.class.getName()).log(Level.SEVERE,null,ex);
      throw new RuntimeException(ex.getMessage());
    }
  }
 else   if (index == 3) {
    boolean lnExists=m_ObjectList.findBySN(this.getShortName()) != null;
    int cnt=m_ObjectList.size();
    if (!lnExists) {
      ++cnt;
    }
    ByteArrayOutputStream data=new ByteArrayOutputStream();
    data.write((byte)DataType.ARRAY.getValue());
    GXCommon.setObjectCount(cnt,data);
    try {
      for (      GXDLMSObject it : m_ObjectList) {
        getAccessRights(it,data);
      }
      if (!lnExists) {
        getAccessRights(this,data);
      }
    }
 catch (    Exception ex) {
      Logger.getLogger(GXDLMSAssociationShortName.class.getName()).log(Level.SEVERE,null,ex);
      throw new RuntimeException(ex.getMessage());
    }
    return data.toByteArray();
  }
 else   if (index == 4) {
  }
  throw new IllegalArgumentException("String_Node_Str");
}