public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                SafelyIncrementableIntHolder safeInt = value as SafelyIncrementableIntHolder;

                if (safeInt != null)
                {
                    writer.WriteStartObject();
                    writer.WritePropertyName("value");
                    writer.WriteValue(safeInt.Value);
                    writer.WriteEndObject();
                }
            }
            public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
            {
                SafelyIncrementableIntHolder result = null;

                while (reader.Read())
                {
                    if (reader.TokenType == JsonToken.Integer)
                    {
                        result = new SafelyIncrementableIntHolder((int)(long)reader.Value);
                    }
                }

                return(result);
            }
        private TestPageModel GetModel()
        {
            this.Session["count"] = (int)this.Session["count"] + 1;


            SafelyIncrementableIntHolder safeInt = this.Session["safeCount"] as SafelyIncrementableIntHolder;
            int safeResult = safeInt.Increment();

            LockedList sessList = this.Session["listCount"] as LockedList;

            sessList.Add(0);


            TestPageModel mdl = new TestPageModel
            {
                Count     = (int)this.Session["count"],
                SafeCount = safeResult,
                ListCount = sessList.Count
            };

            return(mdl);
        }