Program: 160424
Project: 160424
Buggy source:
private void processExtends(VirtualObject geometryInfo,double[] transformationMatrix,float[] vertices,int index,GenerateGeometryResult generateGeometryResult) throws BimserverDatabaseException {
  double x=vertices[index];
  double y=vertices[index + 1];
  double z=vertices[index + 2];
  double[] result=new double[4];
  Matrix.multiplyMV(result,0,transformationMatrix,0,new double[]{x,y,z,1},0);
  x=result[0];
  y=result[1];
  z=result[2];
  HashMapWrappedVirtualObject minBounds=(HashMapWrappedVirtualObject)geometryInfo.eGet(GeometryPackage.eINSTANCE.getGeometryInfo_MinBounds());
  HashMapWrappedVirtualObject maxBounds=(HashMapWrappedVirtualObject)geometryInfo.eGet(GeometryPackage.eINSTANCE.getGeometryInfo_MaxBounds());
  minBounds.set("String_Node_Str",Math.min(x,(float)minBounds.eGet("String_Node_Str")));
  minBounds.set("String_Node_Str",Math.min(y,(float)minBounds.eGet("String_Node_Str")));
  minBounds.set("String_Node_Str",Math.min(z,(float)minBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(x,(float)maxBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(y,(float)maxBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(z,(float)maxBounds.eGet("String_Node_Str")));
  generateGeometryResult.getMinBounds().setX(Math.min(x,generateGeometryResult.getMinBounds().getX()));
  generateGeometryResult.getMinBounds().setY(Math.min(y,generateGeometryResult.getMinBounds().getY()));
  generateGeometryResult.getMinBounds().setZ(Math.min(z,generateGeometryResult.getMinBounds().getZ()));
  generateGeometryResult.getMaxBounds().setX(Math.max(x,generateGeometryResult.getMaxBounds().getX()));
  generateGeometryResult.getMaxBounds().setY(Math.max(y,generateGeometryResult.getMaxBounds().getY()));
  generateGeometryResult.getMaxBounds().setZ(Math.max(z,generateGeometryResult.getMaxBounds().getZ()));
}

Fixed version (ground truth):
private void processExtends(VirtualObject geometryInfo,double[] transformationMatrix,float[] vertices,int index,GenerateGeometryResult generateGeometryResult) throws BimserverDatabaseException {
  double x=vertices[index];
  double y=vertices[index + 1];
  double z=vertices[index + 2];
  double[] result=new double[4];
  Matrix.multiplyMV(result,0,transformationMatrix,0,new double[]{x,y,z,1},0);
  x=result[0];
  y=result[1];
  z=result[2];
  HashMapWrappedVirtualObject minBounds=(HashMapWrappedVirtualObject)geometryInfo.eGet(GeometryPackage.eINSTANCE.getGeometryInfo_MinBounds());
  HashMapWrappedVirtualObject maxBounds=(HashMapWrappedVirtualObject)geometryInfo.eGet(GeometryPackage.eINSTANCE.getGeometryInfo_MaxBounds());
  minBounds.set("String_Node_Str",Math.min(x,(double)minBounds.eGet("String_Node_Str")));
  minBounds.set("String_Node_Str",Math.min(y,(double)minBounds.eGet("String_Node_Str")));
  minBounds.set("String_Node_Str",Math.min(z,(double)minBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(x,(double)maxBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(y,(double)maxBounds.eGet("String_Node_Str")));
  maxBounds.set("String_Node_Str",Math.max(z,(double)maxBounds.eGet("String_Node_Str")));
  generateGeometryResult.getMinBounds().setX(Math.min(x,generateGeometryResult.getMinBounds().getX()));
  generateGeometryResult.getMinBounds().setY(Math.min(y,generateGeometryResult.getMinBounds().getY()));
  generateGeometryResult.getMinBounds().setZ(Math.min(z,generateGeometryResult.getMinBounds().getZ()));
  generateGeometryResult.getMaxBounds().setX(Math.max(x,generateGeometryResult.getMaxBounds().getX()));
  generateGeometryResult.getMaxBounds().setY(Math.max(y,generateGeometryResult.getMaxBounds().getY()));
  generateGeometryResult.getMaxBounds().setZ(Math.max(z,generateGeometryResult.getMaxBounds().getZ()));
}