Coverage Summary for Class: TweetSerializer (com.ghost.serialization.integration.model)

Class Class, % Method, % Branch, % Line, % Instruction, %
TweetSerializer 100% (1/1) 76.9% (10/13) 35.6% (115/323) 57.7% (315/546) 50% (1412/2823)


 @file:OptIn(InternalGhostApi::class)
 
 package com.ghost.serialization.integration.model
 
 import com.ghost.serialization.InternalGhostApi
 import com.ghost.serialization.contract.GhostSerializer
 import com.ghost.serialization.parser.GhostJsonFlatReader
 import com.ghost.serialization.parser.GhostJsonReader
 import com.ghost.serialization.parser.GhostJsonStringReader
 import com.ghost.serialization.parser.JsonReaderOptions
 import com.ghost.serialization.parser.beginObject
 import com.ghost.serialization.parser.consumeNull
 import com.ghost.serialization.parser.endObject
 import com.ghost.serialization.parser.isNextNullValue
 import com.ghost.serialization.parser.nextBoolean
 import com.ghost.serialization.parser.nextInt
 import com.ghost.serialization.parser.nextLong
 import com.ghost.serialization.parser.nextString
 import com.ghost.serialization.parser.selectNameAndConsume
 import com.ghost.serialization.parser.skipValue
 import com.ghost.serialization.writer.GhostJsonFlatWriter
 import com.ghost.serialization.writer.GhostJsonStringWriter
 import com.ghost.serialization.writer.GhostJsonWriter
 import okio.ByteString
 import okio.ByteString.Companion.encodeUtf8
 
 /**
  * High-performance serializer for [Tweet].
  * Generated by GhostSerialization. Do not modify manually.
  */
 public object TweetSerializer : GhostSerializer<Tweet> {
   override val typeName: String = "Tweet"
 
   private val OPTIONS: JsonReaderOptions =
       JsonReaderOptions.of(8, 31, 128, true, "metadata", "created_at", "id", "id_str", "text", "source", "truncated", "in_reply_to_status_id", "in_reply_to_status_id_str", "in_reply_to_user_id", "in_reply_to_user_id_str", "in_reply_to_screen_name", "user", "geo", "coordinates", "place", "contributors", "retweet_count", "favorite_count", "entities", "favorited", "retweeted", "possibly_sensitive", "lang", "retweeted_status")
 
   private val H_CONTRIBUTORS: ByteString = "\"contributors\":".encodeUtf8()
 
   private val HS_CONTRIBUTORS: String = "\"contributors\":"
 
   private val H_COORDINATES: ByteString = "\"coordinates\":".encodeUtf8()
 
   private val HS_COORDINATES: String = "\"coordinates\":"
 
   private val H_CREATED_AT: ByteString = "\"created_at\":".encodeUtf8()
 
   private val HS_CREATED_AT: String = "\"created_at\":"
 
   private val H_ENTITIES: ByteString = "\"entities\":".encodeUtf8()
 
   private val HS_ENTITIES: String = "\"entities\":"
 
   private val H_FAVORITE_COUNT: ByteString = "\"favorite_count\":".encodeUtf8()
 
   private val HS_FAVORITE_COUNT: String = "\"favorite_count\":"
 
   private val H_FAVORITED: ByteString = "\"favorited\":".encodeUtf8()
 
   private val HS_FAVORITED: String = "\"favorited\":"
 
   private val H_GEO: ByteString = "\"geo\":".encodeUtf8()
 
   private val HS_GEO: String = "\"geo\":"
 
   private val H_ID: ByteString = "\"id\":".encodeUtf8()
 
   private val HS_ID: String = "\"id\":"
 
   private val H_ID_STR: ByteString = "\"id_str\":".encodeUtf8()
 
   private val HS_ID_STR: String = "\"id_str\":"
 
   private val H_IN_REPLY_TO_SCREEN_NAME: ByteString = "\"in_reply_to_screen_name\":".encodeUtf8()
 
   private val HS_IN_REPLY_TO_SCREEN_NAME: String = "\"in_reply_to_screen_name\":"
 
   private val H_IN_REPLY_TO_STATUS_ID: ByteString = "\"in_reply_to_status_id\":".encodeUtf8()
 
   private val HS_IN_REPLY_TO_STATUS_ID: String = "\"in_reply_to_status_id\":"
 
   private val H_IN_REPLY_TO_STATUS_ID_STR: ByteString =
       "\"in_reply_to_status_id_str\":".encodeUtf8()
 
   private val HS_IN_REPLY_TO_STATUS_ID_STR: String = "\"in_reply_to_status_id_str\":"
 
   private val H_IN_REPLY_TO_USER_ID: ByteString = "\"in_reply_to_user_id\":".encodeUtf8()
 
   private val HS_IN_REPLY_TO_USER_ID: String = "\"in_reply_to_user_id\":"
 
   private val H_IN_REPLY_TO_USER_ID_STR: ByteString = "\"in_reply_to_user_id_str\":".encodeUtf8()
 
   private val HS_IN_REPLY_TO_USER_ID_STR: String = "\"in_reply_to_user_id_str\":"
 
   private val H_LANG: ByteString = "\"lang\":".encodeUtf8()
 
   private val HS_LANG: String = "\"lang\":"
 
   private val H_METADATA: ByteString = "\"metadata\":".encodeUtf8()
 
   private val HS_METADATA: String = "\"metadata\":"
 
   private val H_PLACE: ByteString = "\"place\":".encodeUtf8()
 
   private val HS_PLACE: String = "\"place\":"
 
   private val H_POSSIBLY_SENSITIVE: ByteString = "\"possibly_sensitive\":".encodeUtf8()
 
   private val HS_POSSIBLY_SENSITIVE: String = "\"possibly_sensitive\":"
 
   private val H_RETWEET_COUNT: ByteString = "\"retweet_count\":".encodeUtf8()
 
   private val HS_RETWEET_COUNT: String = "\"retweet_count\":"
 
   private val H_RETWEETED: ByteString = "\"retweeted\":".encodeUtf8()
 
   private val HS_RETWEETED: String = "\"retweeted\":"
 
   private val H_RETWEETED_STATUS: ByteString = "\"retweeted_status\":".encodeUtf8()
 
   private val HS_RETWEETED_STATUS: String = "\"retweeted_status\":"
 
   private val H_SOURCE: ByteString = "\"source\":".encodeUtf8()
 
   private val HS_SOURCE: String = "\"source\":"
 
   private val H_TEXT: ByteString = "\"text\":".encodeUtf8()
 
   private val HS_TEXT: String = "\"text\":"
 
   private val H_TRUNCATED: ByteString = "\"truncated\":".encodeUtf8()
 
   private val HS_TRUNCATED: String = "\"truncated\":"
 
   private val H_USER: ByteString = "\"user\":".encodeUtf8()
 
   private val HS_USER: String = "\"user\":"
 
   private const val MASK_METADATA: Long = 1L
 
   private const val MASK_CREATEDAT: Long = 2L
 
   private const val MASK_ID: Long = 4L
 
   private const val MASK_IDSTR: Long = 8L
 
   private const val MASK_TEXT: Long = 16L
 
   private const val MASK_SOURCE: Long = 32L
 
   private const val MASK_TRUNCATED: Long = 64L
 
   private const val MASK_INREPLYTOSTATUSID: Long = 128L
 
   private const val MASK_INREPLYTOSTATUSIDSTR: Long = 256L
 
   private const val MASK_INREPLYTOUSERID: Long = 512L
 
   private const val MASK_INREPLYTOUSERIDSTR: Long = 1024L
 
   private const val MASK_INREPLYTOSCREENNAME: Long = 2048L
 
   private const val MASK_USER: Long = 4096L
 
   private const val MASK_GEO: Long = 8192L
 
   private const val MASK_COORDINATES: Long = 16384L
 
   private const val MASK_PLACE: Long = 32768L
 
   private const val MASK_CONTRIBUTORS: Long = 65536L
 
   private const val MASK_RETWEETCOUNT: Long = 131072L
 
   private const val MASK_FAVORITECOUNT: Long = 262144L
 
   private const val MASK_ENTITIES: Long = 524288L
 
   private const val MASK_FAVORITED: Long = 1048576L
 
   private const val MASK_RETWEETED: Long = 2097152L
 
   private const val MASK_POSSIBLYSENSITIVE: Long = 4194304L
 
   private const val MASK_LANG: Long = 8388608L
 
   private const val MASK_RETWEETEDSTATUS: Long = 16777216L
 
   private const val MASK_REQUIRED_0: Long = 4067455L
 
   private const val MASK_DEFAULTS_0: Long = 29486976L
 
   private fun createInstance(
     mask0: Long,
     metadataValue: TweetMetadata?,
     createdAtValue: String?,
     idValue: Long,
     idStrValue: String?,
     textValue: String?,
     sourceValue: String?,
     truncatedValue: Boolean,
     inReplyToStatusIdValue: Long?,
     inReplyToStatusIdStrValue: String?,
     inReplyToUserIdValue: Long?,
     inReplyToUserIdStrValue: String?,
     inReplyToScreenNameValue: String?,
     userValue: User?,
     geoValue: String?,
     coordinatesValue: String?,
     placeValue: String?,
     contributorsValue: String?,
     retweetCountValue: Int,
     favoriteCountValue: Int,
     entitiesValue: TweetEntities?,
     favoritedValue: Boolean,
     retweetedValue: Boolean,
     possiblySensitiveValue: Boolean,
     langValue: String?,
     retweetedStatusValue: Tweet?,
   ): Tweet {
     val result = Tweet(
       metadata = metadataValue!!,
       createdAt = createdAtValue!!,
       id = idValue,
       idStr = idStrValue!!,
       text = textValue!!,
       source = sourceValue!!,
       truncated = truncatedValue,
       user = userValue!!,
       retweetCount = retweetCountValue,
       favoriteCount = favoriteCountValue,
       entities = entitiesValue!!,
       favorited = favoritedValue,
       retweeted = retweetedValue,
     )
     if ((mask0 and MASK_DEFAULTS_0) != 0L) {
       return result.copy(
         inReplyToStatusId = if ((mask0 and MASK_INREPLYTOSTATUSID) != 0L) inReplyToStatusIdValue else result.inReplyToStatusId,
         inReplyToStatusIdStr = if ((mask0 and MASK_INREPLYTOSTATUSIDSTR) != 0L) inReplyToStatusIdStrValue else result.inReplyToStatusIdStr,
         inReplyToUserId = if ((mask0 and MASK_INREPLYTOUSERID) != 0L) inReplyToUserIdValue else result.inReplyToUserId,
         inReplyToUserIdStr = if ((mask0 and MASK_INREPLYTOUSERIDSTR) != 0L) inReplyToUserIdStrValue else result.inReplyToUserIdStr,
         inReplyToScreenName = if ((mask0 and MASK_INREPLYTOSCREENNAME) != 0L) inReplyToScreenNameValue else result.inReplyToScreenName,
         geo = if ((mask0 and MASK_GEO) != 0L) geoValue else result.geo,
         coordinates = if ((mask0 and MASK_COORDINATES) != 0L) coordinatesValue else result.coordinates,
         place = if ((mask0 and MASK_PLACE) != 0L) placeValue else result.place,
         contributors = if ((mask0 and MASK_CONTRIBUTORS) != 0L) contributorsValue else result.contributors,
         possiblySensitive = if ((mask0 and MASK_POSSIBLYSENSITIVE) != 0L) possiblySensitiveValue else result.possiblySensitive,
         lang = if ((mask0 and MASK_LANG) != 0L) langValue else result.lang,
         retweetedStatus = if ((mask0 and MASK_RETWEETEDSTATUS) != 0L) retweetedStatusValue else result.retweetedStatus,
       )
     } else {
       return result
     }
   }
 
   private fun validateRequiredFields(mask0: Long, reader: GhostJsonReader) {
     if ((mask0 and MASK_REQUIRED_0) != MASK_REQUIRED_0) {
       if ((mask0 and MASK_METADATA) == 0L) {
         reader.throwError("Required field 'metadata' missing in JSON")
       } else if ((mask0 and MASK_CREATEDAT) == 0L) {
         reader.throwError("Required field 'created_at' missing in JSON")
       } else if ((mask0 and MASK_ID) == 0L) {
         reader.throwError("Required field 'id' missing in JSON")
       } else if ((mask0 and MASK_IDSTR) == 0L) {
         reader.throwError("Required field 'id_str' missing in JSON")
       } else if ((mask0 and MASK_TEXT) == 0L) {
         reader.throwError("Required field 'text' missing in JSON")
       } else if ((mask0 and MASK_SOURCE) == 0L) {
         reader.throwError("Required field 'source' missing in JSON")
       } else if ((mask0 and MASK_TRUNCATED) == 0L) {
         reader.throwError("Required field 'truncated' missing in JSON")
       } else if ((mask0 and MASK_USER) == 0L) {
         reader.throwError("Required field 'user' missing in JSON")
       } else if ((mask0 and MASK_RETWEETCOUNT) == 0L) {
         reader.throwError("Required field 'retweet_count' missing in JSON")
       } else if ((mask0 and MASK_FAVORITECOUNT) == 0L) {
         reader.throwError("Required field 'favorite_count' missing in JSON")
       } else if ((mask0 and MASK_ENTITIES) == 0L) {
         reader.throwError("Required field 'entities' missing in JSON")
       } else if ((mask0 and MASK_FAVORITED) == 0L) {
         reader.throwError("Required field 'favorited' missing in JSON")
       } else if ((mask0 and MASK_RETWEETED) == 0L) {
         reader.throwError("Required field 'retweeted' missing in JSON")
       }
     }
   }
 
   /**
    * Robust deserialization for [Tweet].
    */
   override fun deserialize(reader: GhostJsonReader): Tweet {
     var metadataValue: TweetMetadata? = null
     var createdAtValue: String? = null
     var idValue: Long = 0L
     var idStrValue: String? = null
     var textValue: String? = null
     var sourceValue: String? = null
     var truncatedValue: Boolean = false
     var inReplyToStatusIdValue: Long? = null
     var inReplyToStatusIdStrValue: String? = null
     var inReplyToUserIdValue: Long? = null
     var inReplyToUserIdStrValue: String? = null
     var inReplyToScreenNameValue: String? = null
     var userValue: User? = null
     var geoValue: String? = null
     var coordinatesValue: String? = null
     var placeValue: String? = null
     var contributorsValue: String? = null
     var retweetCountValue: Int = 0
     var favoriteCountValue: Int = 0
     var entitiesValue: TweetEntities? = null
     var favoritedValue: Boolean = false
     var retweetedValue: Boolean = false
     var possiblySensitiveValue: Boolean = false
     var langValue: String? = null
     var retweetedStatusValue: Tweet? = null
     var mask0 = 0L
     reader.beginObject()
     while (true) {
       val index = reader.selectNameAndConsume(OPTIONS)
       when (index) {
         0 -> {
           metadataValue = TweetMetadataSerializer.deserialize(reader)
           mask0 = mask0 or MASK_METADATA
         }
         1 -> {
           createdAtValue = reader.nextString()
           mask0 = mask0 or MASK_CREATEDAT
         }
         2 -> {
           idValue = reader.nextLong()
           mask0 = mask0 or MASK_ID
         }
         3 -> {
           idStrValue = reader.nextString()
           mask0 = mask0 or MASK_IDSTR
         }
         4 -> {
           textValue = reader.nextString()
           mask0 = mask0 or MASK_TEXT
         }
         5 -> {
           sourceValue = reader.nextString()
           mask0 = mask0 or MASK_SOURCE
         }
         6 -> {
           truncatedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_TRUNCATED
         }
         7 -> {
           inReplyToStatusIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOSTATUSID
         }
         8 -> {
           inReplyToStatusIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSTATUSIDSTR
         }
         9 -> {
           inReplyToUserIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOUSERID
         }
         10 -> {
           inReplyToUserIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOUSERIDSTR
         }
         11 -> {
           inReplyToScreenNameValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSCREENNAME
         }
         12 -> {
           userValue = UserSerializer.deserialize(reader)
           mask0 = mask0 or MASK_USER
         }
         13 -> {
           geoValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_GEO
         }
         14 -> {
           coordinatesValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_COORDINATES
         }
         15 -> {
           placeValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_PLACE
         }
         16 -> {
           contributorsValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_CONTRIBUTORS
         }
         17 -> {
           retweetCountValue = reader.nextInt()
           mask0 = mask0 or MASK_RETWEETCOUNT
         }
         18 -> {
           favoriteCountValue = reader.nextInt()
           mask0 = mask0 or MASK_FAVORITECOUNT
         }
         19 -> {
           entitiesValue = TweetEntitiesSerializer.deserialize(reader)
           mask0 = mask0 or MASK_ENTITIES
         }
         20 -> {
           favoritedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_FAVORITED
         }
         21 -> {
           retweetedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_RETWEETED
         }
         22 -> {
           possiblySensitiveValue = reader.nextBoolean()
           mask0 = mask0 or MASK_POSSIBLYSENSITIVE
         }
         23 -> {
           langValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_LANG
         }
         24 -> {
           retweetedStatusValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else TweetSerializer.deserialize(reader)
           mask0 = mask0 or MASK_RETWEETEDSTATUS
         }
         -1 -> break
         -2 -> {
           reader.skipValue()
         }
       }
     }
     reader.endObject()
     validateRequiredFields(mask0, reader)
     return createInstance(mask0, metadataValue, createdAtValue, idValue, idStrValue, textValue, sourceValue, truncatedValue, inReplyToStatusIdValue, inReplyToStatusIdStrValue, inReplyToUserIdValue, inReplyToUserIdStrValue, inReplyToScreenNameValue, userValue, geoValue, coordinatesValue, placeValue, contributorsValue, retweetCountValue, favoriteCountValue, entitiesValue, favoritedValue, retweetedValue, possiblySensitiveValue, langValue, retweetedStatusValue)
   }
 
   private fun validateRequiredFields(mask0: Long, reader: GhostJsonFlatReader) {
     if ((mask0 and MASK_REQUIRED_0) != MASK_REQUIRED_0) {
       if ((mask0 and MASK_METADATA) == 0L) {
         reader.throwError("Required field 'metadata' missing in JSON")
       } else if ((mask0 and MASK_CREATEDAT) == 0L) {
         reader.throwError("Required field 'created_at' missing in JSON")
       } else if ((mask0 and MASK_ID) == 0L) {
         reader.throwError("Required field 'id' missing in JSON")
       } else if ((mask0 and MASK_IDSTR) == 0L) {
         reader.throwError("Required field 'id_str' missing in JSON")
       } else if ((mask0 and MASK_TEXT) == 0L) {
         reader.throwError("Required field 'text' missing in JSON")
       } else if ((mask0 and MASK_SOURCE) == 0L) {
         reader.throwError("Required field 'source' missing in JSON")
       } else if ((mask0 and MASK_TRUNCATED) == 0L) {
         reader.throwError("Required field 'truncated' missing in JSON")
       } else if ((mask0 and MASK_USER) == 0L) {
         reader.throwError("Required field 'user' missing in JSON")
       } else if ((mask0 and MASK_RETWEETCOUNT) == 0L) {
         reader.throwError("Required field 'retweet_count' missing in JSON")
       } else if ((mask0 and MASK_FAVORITECOUNT) == 0L) {
         reader.throwError("Required field 'favorite_count' missing in JSON")
       } else if ((mask0 and MASK_ENTITIES) == 0L) {
         reader.throwError("Required field 'entities' missing in JSON")
       } else if ((mask0 and MASK_FAVORITED) == 0L) {
         reader.throwError("Required field 'favorited' missing in JSON")
       } else if ((mask0 and MASK_RETWEETED) == 0L) {
         reader.throwError("Required field 'retweeted' missing in JSON")
       }
     }
   }
 
   /**
    * Robust deserialization for [Tweet].
    */
   override fun deserialize(reader: GhostJsonFlatReader): Tweet {
     var metadataValue: TweetMetadata? = null
     var createdAtValue: String? = null
     var idValue: Long = 0L
     var idStrValue: String? = null
     var textValue: String? = null
     var sourceValue: String? = null
     var truncatedValue: Boolean = false
     var inReplyToStatusIdValue: Long? = null
     var inReplyToStatusIdStrValue: String? = null
     var inReplyToUserIdValue: Long? = null
     var inReplyToUserIdStrValue: String? = null
     var inReplyToScreenNameValue: String? = null
     var userValue: User? = null
     var geoValue: String? = null
     var coordinatesValue: String? = null
     var placeValue: String? = null
     var contributorsValue: String? = null
     var retweetCountValue: Int = 0
     var favoriteCountValue: Int = 0
     var entitiesValue: TweetEntities? = null
     var favoritedValue: Boolean = false
     var retweetedValue: Boolean = false
     var possiblySensitiveValue: Boolean = false
     var langValue: String? = null
     var retweetedStatusValue: Tweet? = null
     var mask0 = 0L
     reader.beginObject()
     while (true) {
       val index = reader.selectNameAndConsume(OPTIONS)
       when (index) {
         0 -> {
           metadataValue = TweetMetadataSerializer.deserialize(reader)
           mask0 = mask0 or MASK_METADATA
         }
         1 -> {
           createdAtValue = reader.nextString()
           mask0 = mask0 or MASK_CREATEDAT
         }
         2 -> {
           idValue = reader.nextLong()
           mask0 = mask0 or MASK_ID
         }
         3 -> {
           idStrValue = reader.nextString()
           mask0 = mask0 or MASK_IDSTR
         }
         4 -> {
           textValue = reader.nextString()
           mask0 = mask0 or MASK_TEXT
         }
         5 -> {
           sourceValue = reader.nextString()
           mask0 = mask0 or MASK_SOURCE
         }
         6 -> {
           truncatedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_TRUNCATED
         }
         7 -> {
           inReplyToStatusIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOSTATUSID
         }
         8 -> {
           inReplyToStatusIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSTATUSIDSTR
         }
         9 -> {
           inReplyToUserIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOUSERID
         }
         10 -> {
           inReplyToUserIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOUSERIDSTR
         }
         11 -> {
           inReplyToScreenNameValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSCREENNAME
         }
         12 -> {
           userValue = UserSerializer.deserialize(reader)
           mask0 = mask0 or MASK_USER
         }
         13 -> {
           geoValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_GEO
         }
         14 -> {
           coordinatesValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_COORDINATES
         }
         15 -> {
           placeValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_PLACE
         }
         16 -> {
           contributorsValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_CONTRIBUTORS
         }
         17 -> {
           retweetCountValue = reader.nextInt()
           mask0 = mask0 or MASK_RETWEETCOUNT
         }
         18 -> {
           favoriteCountValue = reader.nextInt()
           mask0 = mask0 or MASK_FAVORITECOUNT
         }
         19 -> {
           entitiesValue = TweetEntitiesSerializer.deserialize(reader)
           mask0 = mask0 or MASK_ENTITIES
         }
         20 -> {
           favoritedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_FAVORITED
         }
         21 -> {
           retweetedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_RETWEETED
         }
         22 -> {
           possiblySensitiveValue = reader.nextBoolean()
           mask0 = mask0 or MASK_POSSIBLYSENSITIVE
         }
         23 -> {
           langValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_LANG
         }
         24 -> {
           retweetedStatusValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else TweetSerializer.deserialize(reader)
           mask0 = mask0 or MASK_RETWEETEDSTATUS
         }
         -1 -> break
         -2 -> {
           reader.skipValue()
         }
       }
     }
     reader.endObject()
     validateRequiredFields(mask0, reader)
     return createInstance(mask0, metadataValue, createdAtValue, idValue, idStrValue, textValue, sourceValue, truncatedValue, inReplyToStatusIdValue, inReplyToStatusIdStrValue, inReplyToUserIdValue, inReplyToUserIdStrValue, inReplyToScreenNameValue, userValue, geoValue, coordinatesValue, placeValue, contributorsValue, retweetCountValue, favoriteCountValue, entitiesValue, favoritedValue, retweetedValue, possiblySensitiveValue, langValue, retweetedStatusValue)
   }
 
   private fun validateRequiredFields(mask0: Long, reader: GhostJsonStringReader) {
     if ((mask0 and MASK_REQUIRED_0) != MASK_REQUIRED_0) {
       if ((mask0 and MASK_METADATA) == 0L) {
         reader.throwError("Required field 'metadata' missing in JSON")
       } else if ((mask0 and MASK_CREATEDAT) == 0L) {
         reader.throwError("Required field 'created_at' missing in JSON")
       } else if ((mask0 and MASK_ID) == 0L) {
         reader.throwError("Required field 'id' missing in JSON")
       } else if ((mask0 and MASK_IDSTR) == 0L) {
         reader.throwError("Required field 'id_str' missing in JSON")
       } else if ((mask0 and MASK_TEXT) == 0L) {
         reader.throwError("Required field 'text' missing in JSON")
       } else if ((mask0 and MASK_SOURCE) == 0L) {
         reader.throwError("Required field 'source' missing in JSON")
       } else if ((mask0 and MASK_TRUNCATED) == 0L) {
         reader.throwError("Required field 'truncated' missing in JSON")
       } else if ((mask0 and MASK_USER) == 0L) {
         reader.throwError("Required field 'user' missing in JSON")
       } else if ((mask0 and MASK_RETWEETCOUNT) == 0L) {
         reader.throwError("Required field 'retweet_count' missing in JSON")
       } else if ((mask0 and MASK_FAVORITECOUNT) == 0L) {
         reader.throwError("Required field 'favorite_count' missing in JSON")
       } else if ((mask0 and MASK_ENTITIES) == 0L) {
         reader.throwError("Required field 'entities' missing in JSON")
       } else if ((mask0 and MASK_FAVORITED) == 0L) {
         reader.throwError("Required field 'favorited' missing in JSON")
       } else if ((mask0 and MASK_RETWEETED) == 0L) {
         reader.throwError("Required field 'retweeted' missing in JSON")
       }
     }
   }
 
   /**
    * Robust deserialization for [Tweet].
    */
   override fun deserialize(reader: GhostJsonStringReader): Tweet {
     var metadataValue: TweetMetadata? = null
     var createdAtValue: String? = null
     var idValue: Long = 0L
     var idStrValue: String? = null
     var textValue: String? = null
     var sourceValue: String? = null
     var truncatedValue: Boolean = false
     var inReplyToStatusIdValue: Long? = null
     var inReplyToStatusIdStrValue: String? = null
     var inReplyToUserIdValue: Long? = null
     var inReplyToUserIdStrValue: String? = null
     var inReplyToScreenNameValue: String? = null
     var userValue: User? = null
     var geoValue: String? = null
     var coordinatesValue: String? = null
     var placeValue: String? = null
     var contributorsValue: String? = null
     var retweetCountValue: Int = 0
     var favoriteCountValue: Int = 0
     var entitiesValue: TweetEntities? = null
     var favoritedValue: Boolean = false
     var retweetedValue: Boolean = false
     var possiblySensitiveValue: Boolean = false
     var langValue: String? = null
     var retweetedStatusValue: Tweet? = null
     var mask0 = 0L
     reader.beginObject()
     while (true) {
       val index = reader.selectNameAndConsume(OPTIONS)
       when (index) {
         0 -> {
           metadataValue = TweetMetadataSerializer.deserialize(reader)
           mask0 = mask0 or MASK_METADATA
         }
         1 -> {
           createdAtValue = reader.nextString()
           mask0 = mask0 or MASK_CREATEDAT
         }
         2 -> {
           idValue = reader.nextLong()
           mask0 = mask0 or MASK_ID
         }
         3 -> {
           idStrValue = reader.nextString()
           mask0 = mask0 or MASK_IDSTR
         }
         4 -> {
           textValue = reader.nextString()
           mask0 = mask0 or MASK_TEXT
         }
         5 -> {
           sourceValue = reader.nextString()
           mask0 = mask0 or MASK_SOURCE
         }
         6 -> {
           truncatedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_TRUNCATED
         }
         7 -> {
           inReplyToStatusIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOSTATUSID
         }
         8 -> {
           inReplyToStatusIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSTATUSIDSTR
         }
         9 -> {
           inReplyToUserIdValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextLong()
           mask0 = mask0 or MASK_INREPLYTOUSERID
         }
         10 -> {
           inReplyToUserIdStrValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOUSERIDSTR
         }
         11 -> {
           inReplyToScreenNameValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_INREPLYTOSCREENNAME
         }
         12 -> {
           userValue = UserSerializer.deserialize(reader)
           mask0 = mask0 or MASK_USER
         }
         13 -> {
           geoValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_GEO
         }
         14 -> {
           coordinatesValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_COORDINATES
         }
         15 -> {
           placeValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_PLACE
         }
         16 -> {
           contributorsValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_CONTRIBUTORS
         }
         17 -> {
           retweetCountValue = reader.nextInt()
           mask0 = mask0 or MASK_RETWEETCOUNT
         }
         18 -> {
           favoriteCountValue = reader.nextInt()
           mask0 = mask0 or MASK_FAVORITECOUNT
         }
         19 -> {
           entitiesValue = TweetEntitiesSerializer.deserialize(reader)
           mask0 = mask0 or MASK_ENTITIES
         }
         20 -> {
           favoritedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_FAVORITED
         }
         21 -> {
           retweetedValue = reader.nextBoolean()
           mask0 = mask0 or MASK_RETWEETED
         }
         22 -> {
           possiblySensitiveValue = reader.nextBoolean()
           mask0 = mask0 or MASK_POSSIBLYSENSITIVE
         }
         23 -> {
           langValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.nextString()
           mask0 = mask0 or MASK_LANG
         }
         24 -> {
           retweetedStatusValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else TweetSerializer.deserialize(reader)
           mask0 = mask0 or MASK_RETWEETEDSTATUS
         }
         -1 -> break
         -2 -> {
           reader.skipValue()
         }
       }
     }
     reader.endObject()
     validateRequiredFields(mask0, reader)
     return createInstance(mask0, metadataValue, createdAtValue, idValue, idStrValue, textValue, sourceValue, truncatedValue, inReplyToStatusIdValue, inReplyToStatusIdStrValue, inReplyToUserIdValue, inReplyToUserIdStrValue, inReplyToScreenNameValue, userValue, geoValue, coordinatesValue, placeValue, contributorsValue, retweetCountValue, favoriteCountValue, entitiesValue, favoritedValue, retweetedValue, possiblySensitiveValue, langValue, retweetedStatusValue)
   }
 
   override fun serialize(writer: GhostJsonWriter, `value`: Tweet) {
     writer.beginObject()
     writer.writeNameRaw(H_METADATA)
     TweetMetadataSerializer.serialize(writer, value.metadata)
     writer.writeField(H_CREATED_AT, value.createdAt)
     writer.writeField(H_ID, value.id)
     writer.writeField(H_ID_STR, value.idStr)
     writer.writeField(H_TEXT, value.text)
     writer.writeField(H_SOURCE, value.source)
     writer.writeField(H_TRUNCATED, value.truncated)
     if (value.inReplyToStatusId != null) {
       writer.writeField(H_IN_REPLY_TO_STATUS_ID, value.inReplyToStatusId)
     }
     if (value.inReplyToStatusIdStr != null) {
       writer.writeField(H_IN_REPLY_TO_STATUS_ID_STR, value.inReplyToStatusIdStr)
     }
     if (value.inReplyToUserId != null) {
       writer.writeField(H_IN_REPLY_TO_USER_ID, value.inReplyToUserId)
     }
     if (value.inReplyToUserIdStr != null) {
       writer.writeField(H_IN_REPLY_TO_USER_ID_STR, value.inReplyToUserIdStr)
     }
     if (value.inReplyToScreenName != null) {
       writer.writeField(H_IN_REPLY_TO_SCREEN_NAME, value.inReplyToScreenName)
     }
     writer.writeNameRaw(H_USER)
     UserSerializer.serialize(writer, value.user)
     if (value.geo != null) {
       writer.writeField(H_GEO, value.geo)
     }
     if (value.coordinates != null) {
       writer.writeField(H_COORDINATES, value.coordinates)
     }
     if (value.place != null) {
       writer.writeField(H_PLACE, value.place)
     }
     if (value.contributors != null) {
       writer.writeField(H_CONTRIBUTORS, value.contributors)
     }
     writer.writeField(H_RETWEET_COUNT, value.retweetCount)
     writer.writeField(H_FAVORITE_COUNT, value.favoriteCount)
     writer.writeNameRaw(H_ENTITIES)
     TweetEntitiesSerializer.serialize(writer, value.entities)
     writer.writeField(H_FAVORITED, value.favorited)
     writer.writeField(H_RETWEETED, value.retweeted)
     writer.writeField(H_POSSIBLY_SENSITIVE, value.possiblySensitive)
     if (value.lang != null) {
       writer.writeField(H_LANG, value.lang)
     }
     if (value.retweetedStatus != null) {
       writer.writeNameRaw(H_RETWEETED_STATUS)
       TweetSerializer.serialize(writer, value.retweetedStatus)
     }
     writer.endObject()
   }
 
   override fun serialize(writer: GhostJsonFlatWriter, `value`: Tweet) {
     writer.beginObject()
     writer.writeNameRaw(H_METADATA)
     TweetMetadataSerializer.serialize(writer, value.metadata)
     writer.writeField(H_CREATED_AT, value.createdAt)
     writer.writeField(H_ID, value.id)
     writer.writeField(H_ID_STR, value.idStr)
     writer.writeField(H_TEXT, value.text)
     writer.writeField(H_SOURCE, value.source)
     writer.writeField(H_TRUNCATED, value.truncated)
     if (value.inReplyToStatusId != null) {
       writer.writeField(H_IN_REPLY_TO_STATUS_ID, value.inReplyToStatusId)
     }
     if (value.inReplyToStatusIdStr != null) {
       writer.writeField(H_IN_REPLY_TO_STATUS_ID_STR, value.inReplyToStatusIdStr)
     }
     if (value.inReplyToUserId != null) {
       writer.writeField(H_IN_REPLY_TO_USER_ID, value.inReplyToUserId)
     }
     if (value.inReplyToUserIdStr != null) {
       writer.writeField(H_IN_REPLY_TO_USER_ID_STR, value.inReplyToUserIdStr)
     }
     if (value.inReplyToScreenName != null) {
       writer.writeField(H_IN_REPLY_TO_SCREEN_NAME, value.inReplyToScreenName)
     }
     writer.writeNameRaw(H_USER)
     UserSerializer.serialize(writer, value.user)
     if (value.geo != null) {
       writer.writeField(H_GEO, value.geo)
     }
     if (value.coordinates != null) {
       writer.writeField(H_COORDINATES, value.coordinates)
     }
     if (value.place != null) {
       writer.writeField(H_PLACE, value.place)
     }
     if (value.contributors != null) {
       writer.writeField(H_CONTRIBUTORS, value.contributors)
     }
     writer.writeField(H_RETWEET_COUNT, value.retweetCount)
     writer.writeField(H_FAVORITE_COUNT, value.favoriteCount)
     writer.writeNameRaw(H_ENTITIES)
     TweetEntitiesSerializer.serialize(writer, value.entities)
     writer.writeField(H_FAVORITED, value.favorited)
     writer.writeField(H_RETWEETED, value.retweeted)
     writer.writeField(H_POSSIBLY_SENSITIVE, value.possiblySensitive)
     if (value.lang != null) {
       writer.writeField(H_LANG, value.lang)
     }
     if (value.retweetedStatus != null) {
       writer.writeNameRaw(H_RETWEETED_STATUS)
       TweetSerializer.serialize(writer, value.retweetedStatus)
     }
     writer.endObject()
   }
 
   override fun serialize(writer: GhostJsonStringWriter, `value`: Tweet) {
     writer.beginObject()
     writer.writeNameRaw(HS_METADATA)
     TweetMetadataSerializer.serialize(writer, value.metadata)
     writer.writeField(HS_CREATED_AT, value.createdAt)
     writer.writeField(HS_ID, value.id)
     writer.writeField(HS_ID_STR, value.idStr)
     writer.writeField(HS_TEXT, value.text)
     writer.writeField(HS_SOURCE, value.source)
     writer.writeField(HS_TRUNCATED, value.truncated)
     if (value.inReplyToStatusId != null) {
       writer.writeField(HS_IN_REPLY_TO_STATUS_ID, value.inReplyToStatusId)
     }
     if (value.inReplyToStatusIdStr != null) {
       writer.writeField(HS_IN_REPLY_TO_STATUS_ID_STR, value.inReplyToStatusIdStr)
     }
     if (value.inReplyToUserId != null) {
       writer.writeField(HS_IN_REPLY_TO_USER_ID, value.inReplyToUserId)
     }
     if (value.inReplyToUserIdStr != null) {
       writer.writeField(HS_IN_REPLY_TO_USER_ID_STR, value.inReplyToUserIdStr)
     }
     if (value.inReplyToScreenName != null) {
       writer.writeField(HS_IN_REPLY_TO_SCREEN_NAME, value.inReplyToScreenName)
     }
     writer.writeNameRaw(HS_USER)
     UserSerializer.serialize(writer, value.user)
     if (value.geo != null) {
       writer.writeField(HS_GEO, value.geo)
     }
     if (value.coordinates != null) {
       writer.writeField(HS_COORDINATES, value.coordinates)
     }
     if (value.place != null) {
       writer.writeField(HS_PLACE, value.place)
     }
     if (value.contributors != null) {
       writer.writeField(HS_CONTRIBUTORS, value.contributors)
     }
     writer.writeField(HS_RETWEET_COUNT, value.retweetCount)
     writer.writeField(HS_FAVORITE_COUNT, value.favoriteCount)
     writer.writeNameRaw(HS_ENTITIES)
     TweetEntitiesSerializer.serialize(writer, value.entities)
     writer.writeField(HS_FAVORITED, value.favorited)
     writer.writeField(HS_RETWEETED, value.retweeted)
     writer.writeField(HS_POSSIBLY_SENSITIVE, value.possiblySensitive)
     if (value.lang != null) {
       writer.writeField(HS_LANG, value.lang)
     }
     if (value.retweetedStatus != null) {
       writer.writeNameRaw(HS_RETWEETED_STATUS)
       TweetSerializer.serialize(writer, value.retweetedStatus)
     }
     writer.endObject()
   }
 
   override fun warmUp() {
     try {
       val reader1 = GhostJsonReader("{\"metadata\":{},\"created_at\":\"\",\"id\":0,\"id_str\":\"\",\"text\":\"\",\"source\":\"\",\"truncated\":false,\"user\":{},\"retweet_count\":0,\"favorite_count\":0,\"entities\":{},\"favorited\":false,\"retweeted\":false}".encodeToByteArray())
       deserialize(reader1)
     } catch (_: Exception) {
     }
     try {
       val reader2 = GhostJsonFlatReader("{\"metadata\":{},\"created_at\":\"\",\"id\":0,\"id_str\":\"\",\"text\":\"\",\"source\":\"\",\"truncated\":false,\"user\":{},\"retweet_count\":0,\"favorite_count\":0,\"entities\":{},\"favorited\":false,\"retweeted\":false}".encodeToByteArray())
       deserialize(reader2)
     } catch (_: Exception) {
     }
     try {
       val reader3 = GhostJsonStringReader("{\"metadata\":{},\"created_at\":\"\",\"id\":0,\"id_str\":\"\",\"text\":\"\",\"source\":\"\",\"truncated\":false,\"user\":{},\"retweet_count\":0,\"favorite_count\":0,\"entities\":{},\"favorited\":false,\"retweeted\":false}")
       deserialize(reader3)
     } catch (_: Exception) {
     }
   }
 }