ReadAsBoolean() public method

Reads the next JSON token from the stream as a Nullable{T} of Boolean.
public ReadAsBoolean ( ) : bool?
return bool?
        /// <summary>
        /// Reads the next JSON token from the underlying <see cref="JsonReader"/> as a <see cref="Nullable{T}"/> of <see cref="Boolean"/>.
        /// </summary>
        /// <returns>A <see cref="Nullable{T}"/> of <see cref="Boolean"/>.</returns>
        public override bool?ReadAsBoolean()
        {
            bool?b = _reader.ReadAsBoolean();

            ValidateCurrentToken();
            return(b);
        }
        public IdentityInfo ReadIdentityInfo(JsonReader reader)
        {
            IdentityInfo info = new IdentityInfo();
            reader.Read();
            while (reader.TokenType == JsonToken.PropertyName)
            {
                switch ((string)reader.Value)
                {
                    case "toStr": info.ToStr = reader.ReadAsString(); break;
                    case "id": info.Id = reader.ReadAsString(); break;
                    case "isNew": info.IsNew = reader.ReadAsBoolean(); break;
                    case "Type": info.Type = reader.ReadAsString(); break;
                    case "ticks": info.Ticks = long.Parse(reader.ReadAsString()); break;
                    case "modified": info.Modified = bool.Parse(reader.ReadAsString()); break;
                    default: return info;
                }

                reader.Read();
            }

            if (info.Type == null)
                throw new JsonSerializationException($"Expected member 'Type' not found in {reader.Path}");

            return info;
        }
		public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
		{
			if (reader.TokenType == JsonToken.String)
			{
				return new Attachment { Content = (string)reader.Value };
			}

			if (reader.TokenType == JsonToken.StartObject)
			{
				var attachment = new Attachment();
				while (reader.Read())
				{
					if (reader.TokenType == JsonToken.PropertyName)
					{
						var propertyName = (string)reader.Value;
						switch (propertyName.ToLowerInvariant())
						{
							case "_content":
							case "content":
								attachment.Content = reader.ReadAsString();
								break;
							case "_name":
							case "name":
								attachment.Name = reader.ReadAsString();
								break;
							case "author":
								attachment.Author = reader.ReadAsString();
								break;
							case "keywords":
								attachment.Keywords = reader.ReadAsString();
								break;
							case "date":
								reader.Read();
								switch (reader.TokenType)
								{
									case JsonToken.String:
										var value = (string)reader.Value;
										if (!string.IsNullOrEmpty(value))
											attachment.Date = Convert.ToDateTime(value);
										break;
									case JsonToken.Date:
										attachment.Date = (DateTime?)reader.Value;
										break;
								}
								break;
							case "_content_type":
							case "content_type":
							case "contenttype":
							case "contentType":
								attachment.ContentType = reader.ReadAsString();
								break;
							case "_content_length":
							case "content_length":
							case "contentlength":
							case "contentLength":
								reader.Read();
								switch (reader.TokenType)
								{
									case JsonToken.String:
										var value = (string)reader.Value;
										if (!string.IsNullOrEmpty(value))
											attachment.ContentLength = Convert.ToInt64(value);
										break;
									case JsonToken.Integer:
									case JsonToken.Float:
										attachment.ContentLength = (long?)reader.Value;
										break;

								}
								break;
							case "_language":
							case "language":
								attachment.Language = reader.ReadAsString();
								break;
							case "_detect_language":
								attachment.DetectLanguage = reader.ReadAsBoolean();
								break;
							case "_indexed_chars":
							case "indexed_chars":
								reader.Read();
								switch (reader.TokenType)
								{
									case JsonToken.String:
										var value = (string)reader.Value;
										if (!string.IsNullOrEmpty(value))
											attachment.IndexedCharacters = Convert.ToInt64(value);
										break;
									case JsonToken.Integer:
									case JsonToken.Float:
										attachment.IndexedCharacters = (long?)reader.Value;
										break;

								}
								break;
							case "title":
								attachment.Title = reader.ReadAsString();
								break;
						}
					}
					if (reader.TokenType == JsonToken.EndObject)
					{
						break;
					}
				}
				return attachment;
			}
			return null;
		}