El objeto de sesión cambia cuando el objeto se actualiza en C #

Tengo este problema realmente extraño y estoy seguro de que me estoy perdiendo algo obvio aquí. Tengo estas dos líneas:

HttpContext.Current.Session[listModelType + "ListModel"] = listModel;
listModel.ProductRows = new Collection<ProductRow>(listModel.ProductRows.Where(r => r.ParentRowId == 0).ToList());

Después de ejecutar la segunda línea, mi objeto de sesión también se actualiza (de acuerdo con "Ver" en Visual Studio)

¿Que me estoy perdiendo aqui?

Yo he tratado

int i = 0;
HttpContext.Current.Session["i"] = i;
i++;

y HttpContext.Current.Session ["i"] permanece en 0.

Respuestas a la pregunta(6)

Su respuesta a la pregunta