java/src/main/java/com/konfigthis/dojah/client/model/GetScreeningInfoResponseEntityResult.java
/*
 * DOJAH APIs
 * Use Dojah to verify, onboard and manage user identity across Africa!
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by Konfig (https://konfigthis.com).
 * Do not edit the class manually.
 */


package com.konfigthis.dojah.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.konfigthis.dojah.client.JSON;

/**
 * GetScreeningInfoResponseEntityResult
 */
@javax.annotation.Generated(value = "Generated by https://konfigthis.com")
public class GetScreeningInfoResponseEntityResult {
  public static final String SERIALIZED_NAME_ADDRESSES = "addresses";
  @SerializedName(SERIALIZED_NAME_ADDRESSES)
  private List<String> addresses = null;

  public static final String SERIALIZED_NAME_AKA = "aka";
  @SerializedName(SERIALIZED_NAME_AKA)
  private String aka;

  public static final String SERIALIZED_NAME_ALIASES = "aliases";
  @SerializedName(SERIALIZED_NAME_ALIASES)
  private List<String> aliases = null;

  public static final String SERIALIZED_NAME_COUNTRY_NAME = "countryName";
  @SerializedName(SERIALIZED_NAME_COUNTRY_NAME)
  private String countryName;

  public static final String SERIALIZED_NAME_DOB = "dob";
  @SerializedName(SERIALIZED_NAME_DOB)
  private String dob;

  public static final String SERIALIZED_NAME_DOB2 = "dob2";
  @SerializedName(SERIALIZED_NAME_DOB2)
  private String dob2;

  public static final String SERIALIZED_NAME_EFFECTIVE_DATE = "effectiveDate";
  @SerializedName(SERIALIZED_NAME_EFFECTIVE_DATE)
  private String effectiveDate;

  public static final String SERIALIZED_NAME_ENTRY_CATEGORY = "entryCategory";
  @SerializedName(SERIALIZED_NAME_ENTRY_CATEGORY)
  private String entryCategory;

  public static final String SERIALIZED_NAME_ENTRY_DESC = "entryDesc";
  @SerializedName(SERIALIZED_NAME_ENTRY_DESC)
  private String entryDesc;

  public static final String SERIALIZED_NAME_FIRST_NAME = "firstName";
  @SerializedName(SERIALIZED_NAME_FIRST_NAME)
  private String firstName;

  public static final String SERIALIZED_NAME_GOV_DESIGNATION = "govDesignation";
  @SerializedName(SERIALIZED_NAME_GOV_DESIGNATION)
  private String govDesignation;

  public static final String SERIALIZED_NAME_LAST_NAME = "lastName";
  @SerializedName(SERIALIZED_NAME_LAST_NAME)
  private String lastName;

  public static final String SERIALIZED_NAME_LEVEL_DESC = "levelDesc";
  @SerializedName(SERIALIZED_NAME_LEVEL_DESC)
  private String levelDesc;

  public static final String SERIALIZED_NAME_MASTER_ID = "masterId";
  @SerializedName(SERIALIZED_NAME_MASTER_ID)
  private Double masterId;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private String name;

  public static final String SERIALIZED_NAME_NATIONAL_ID = "nationalId";
  @SerializedName(SERIALIZED_NAME_NATIONAL_ID)
  private String nationalId;

  public static final String SERIALIZED_NAME_OTHER_ID = "otherId";
  @SerializedName(SERIALIZED_NAME_OTHER_ID)
  private String otherId;

  public static final String SERIALIZED_NAME_PASSPORT_ID = "passportId";
  @SerializedName(SERIALIZED_NAME_PASSPORT_ID)
  private String passportId;

  public static final String SERIALIZED_NAME_POB = "pob";
  @SerializedName(SERIALIZED_NAME_POB)
  private String pob;

  public static final String SERIALIZED_NAME_POSITIONS = "positions";
  @SerializedName(SERIALIZED_NAME_POSITIONS)
  private String positions;

  public static final String SERIALIZED_NAME_PREFIX = "prefix";
  @SerializedName(SERIALIZED_NAME_PREFIX)
  private String prefix;

  public static final String SERIALIZED_NAME_PRIMARY_NAME = "primaryName";
  @SerializedName(SERIALIZED_NAME_PRIMARY_NAME)
  private String primaryName;

  public static final String SERIALIZED_NAME_RELATED_ID = "relatedId";
  @SerializedName(SERIALIZED_NAME_RELATED_ID)
  private Double relatedId;

  public static final String SERIALIZED_NAME_RELATIONSHIPS = "relationships";
  @SerializedName(SERIALIZED_NAME_RELATIONSHIPS)
  private List<String> relationships = null;

  public static final String SERIALIZED_NAME_REMARKS = "remarks";
  @SerializedName(SERIALIZED_NAME_REMARKS)
  private String remarks;

  public static final String SERIALIZED_NAME_SOURCE_NAME = "sourceName";
  @SerializedName(SERIALIZED_NAME_SOURCE_NAME)
  private String sourceName;

  public static final String SERIALIZED_NAME_SOURCE_WEB_LINKS = "sourceWebLinks";
  @SerializedName(SERIALIZED_NAME_SOURCE_WEB_LINKS)
  private String sourceWebLinks;

  public static final String SERIALIZED_NAME_SUB_CAT_DESC = "subCatDesc";
  @SerializedName(SERIALIZED_NAME_SUB_CAT_DESC)
  private String subCatDesc;

  public static final String SERIALIZED_NAME_SUFFIX = "suffix";
  @SerializedName(SERIALIZED_NAME_SUFFIX)
  private String suffix;

  public static final String SERIALIZED_NAME_TOUCH_DATE = "touchDate";
  @SerializedName(SERIALIZED_NAME_TOUCH_DATE)
  private String touchDate;

  public static final String SERIALIZED_NAME_WATCH = "watch";
  @SerializedName(SERIALIZED_NAME_WATCH)
  private Boolean watch;

  public GetScreeningInfoResponseEntityResult() {
  }

  public GetScreeningInfoResponseEntityResult addresses(List<String> addresses) {

    
    
    
    
    this.addresses = addresses;
    return this;
  }

  public GetScreeningInfoResponseEntityResult addAddressesItem(String addressesItem) {
    if (this.addresses == null) {
      this.addresses = new ArrayList<>();
    }
    this.addresses.add(addressesItem);
    return this;
  }

   /**
   * Get addresses
   * @return addresses
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public List<String> getAddresses() {
    return addresses;
  }


  public void setAddresses(List<String> addresses) {

    
    
    
    this.addresses = addresses;
  }


  public GetScreeningInfoResponseEntityResult aka(String aka) {

    
    
    
    
    this.aka = aka;
    return this;
  }

   /**
   * Get aka
   * @return aka
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getAka() {
    return aka;
  }


  public void setAka(String aka) {

    
    
    
    this.aka = aka;
  }


  public GetScreeningInfoResponseEntityResult aliases(List<String> aliases) {

    
    
    
    
    this.aliases = aliases;
    return this;
  }

  public GetScreeningInfoResponseEntityResult addAliasesItem(String aliasesItem) {
    if (this.aliases == null) {
      this.aliases = new ArrayList<>();
    }
    this.aliases.add(aliasesItem);
    return this;
  }

   /**
   * Get aliases
   * @return aliases
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public List<String> getAliases() {
    return aliases;
  }


  public void setAliases(List<String> aliases) {

    
    
    
    this.aliases = aliases;
  }


  public GetScreeningInfoResponseEntityResult countryName(String countryName) {

    
    
    
    
    this.countryName = countryName;
    return this;
  }

   /**
   * Get countryName
   * @return countryName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Nigeria", value = "")

  public String getCountryName() {
    return countryName;
  }


  public void setCountryName(String countryName) {

    
    
    
    this.countryName = countryName;
  }


  public GetScreeningInfoResponseEntityResult dob(String dob) {

    
    
    
    
    this.dob = dob;
    return this;
  }

   /**
   * Get dob
   * @return dob
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getDob() {
    return dob;
  }


  public void setDob(String dob) {

    
    
    
    this.dob = dob;
  }


  public GetScreeningInfoResponseEntityResult dob2(String dob2) {

    
    
    
    
    this.dob2 = dob2;
    return this;
  }

   /**
   * Get dob2
   * @return dob2
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getDob2() {
    return dob2;
  }


  public void setDob2(String dob2) {

    
    
    
    this.dob2 = dob2;
  }


  public GetScreeningInfoResponseEntityResult effectiveDate(String effectiveDate) {

    
    
    
    
    this.effectiveDate = effectiveDate;
    return this;
  }

   /**
   * Get effectiveDate
   * @return effectiveDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getEffectiveDate() {
    return effectiveDate;
  }


  public void setEffectiveDate(String effectiveDate) {

    
    
    
    this.effectiveDate = effectiveDate;
  }


  public GetScreeningInfoResponseEntityResult entryCategory(String entryCategory) {

    
    
    
    
    this.entryCategory = entryCategory;
    return this;
  }

   /**
   * Get entryCategory
   * @return entryCategory
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Enforcement", value = "")

  public String getEntryCategory() {
    return entryCategory;
  }


  public void setEntryCategory(String entryCategory) {

    
    
    
    this.entryCategory = entryCategory;
  }


  public GetScreeningInfoResponseEntityResult entryDesc(String entryDesc) {

    
    
    
    
    this.entryDesc = entryDesc;
    return this;
  }

   /**
   * Get entryDesc
   * @return entryDesc
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Individual", value = "")

  public String getEntryDesc() {
    return entryDesc;
  }


  public void setEntryDesc(String entryDesc) {

    
    
    
    this.entryDesc = entryDesc;
  }


  public GetScreeningInfoResponseEntityResult firstName(String firstName) {

    
    
    
    
    this.firstName = firstName;
    return this;
  }

   /**
   * Get firstName
   * @return firstName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Doe", value = "")

  public String getFirstName() {
    return firstName;
  }


  public void setFirstName(String firstName) {

    
    
    
    this.firstName = firstName;
  }


  public GetScreeningInfoResponseEntityResult govDesignation(String govDesignation) {

    
    
    
    
    this.govDesignation = govDesignation;
    return this;
  }

   /**
   * Get govDesignation
   * @return govDesignation
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getGovDesignation() {
    return govDesignation;
  }


  public void setGovDesignation(String govDesignation) {

    
    
    
    this.govDesignation = govDesignation;
  }


  public GetScreeningInfoResponseEntityResult lastName(String lastName) {

    
    
    
    
    this.lastName = lastName;
    return this;
  }

   /**
   * Get lastName
   * @return lastName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "John", value = "")

  public String getLastName() {
    return lastName;
  }


  public void setLastName(String lastName) {

    
    
    
    this.lastName = lastName;
  }


  public GetScreeningInfoResponseEntityResult levelDesc(String levelDesc) {

    
    
    
    
    this.levelDesc = levelDesc;
    return this;
  }

   /**
   * Get levelDesc
   * @return levelDesc
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "N/A", value = "")

  public String getLevelDesc() {
    return levelDesc;
  }


  public void setLevelDesc(String levelDesc) {

    
    
    
    this.levelDesc = levelDesc;
  }


  public GetScreeningInfoResponseEntityResult masterId(Double masterId) {

    
    
    
    
    this.masterId = masterId;
    return this;
  }

  public GetScreeningInfoResponseEntityResult masterId(Integer masterId) {

    
    
    
    
    this.masterId = masterId.doubleValue();
    return this;
  }

   /**
   * Get masterId
   * @return masterId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "0", value = "")

  public Double getMasterId() {
    return masterId;
  }


  public void setMasterId(Double masterId) {

    
    
    
    this.masterId = masterId;
  }


  public GetScreeningInfoResponseEntityResult name(String name) {

    
    
    
    
    this.name = name;
    return this;
  }

   /**
   * Get name
   * @return name
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Doe, John", value = "")

  public String getName() {
    return name;
  }


  public void setName(String name) {

    
    
    
    this.name = name;
  }


  public GetScreeningInfoResponseEntityResult nationalId(String nationalId) {

    
    
    
    
    this.nationalId = nationalId;
    return this;
  }

   /**
   * Get nationalId
   * @return nationalId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getNationalId() {
    return nationalId;
  }


  public void setNationalId(String nationalId) {

    
    
    
    this.nationalId = nationalId;
  }


  public GetScreeningInfoResponseEntityResult otherId(String otherId) {

    
    
    
    
    this.otherId = otherId;
    return this;
  }

   /**
   * Get otherId
   * @return otherId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getOtherId() {
    return otherId;
  }


  public void setOtherId(String otherId) {

    
    
    
    this.otherId = otherId;
  }


  public GetScreeningInfoResponseEntityResult passportId(String passportId) {

    
    
    
    
    this.passportId = passportId;
    return this;
  }

   /**
   * Get passportId
   * @return passportId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getPassportId() {
    return passportId;
  }


  public void setPassportId(String passportId) {

    
    
    
    this.passportId = passportId;
  }


  public GetScreeningInfoResponseEntityResult pob(String pob) {

    
    
    
    
    this.pob = pob;
    return this;
  }

   /**
   * Get pob
   * @return pob
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getPob() {
    return pob;
  }


  public void setPob(String pob) {

    
    
    
    this.pob = pob;
  }


  public GetScreeningInfoResponseEntityResult positions(String positions) {

    
    
    
    
    this.positions = positions;
    return this;
  }

   /**
   * Get positions
   * @return positions
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Arrested on suspicion of internet fraud - March 12, 2020.", value = "")

  public String getPositions() {
    return positions;
  }


  public void setPositions(String positions) {

    
    
    
    this.positions = positions;
  }


  public GetScreeningInfoResponseEntityResult prefix(String prefix) {

    
    
    
    
    this.prefix = prefix;
    return this;
  }

   /**
   * Get prefix
   * @return prefix
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getPrefix() {
    return prefix;
  }


  public void setPrefix(String prefix) {

    
    
    
    this.prefix = prefix;
  }


  public GetScreeningInfoResponseEntityResult primaryName(String primaryName) {

    
    
    
    
    this.primaryName = primaryName;
    return this;
  }

   /**
   * Get primaryName
   * @return primaryName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getPrimaryName() {
    return primaryName;
  }


  public void setPrimaryName(String primaryName) {

    
    
    
    this.primaryName = primaryName;
  }


  public GetScreeningInfoResponseEntityResult relatedId(Double relatedId) {

    
    
    
    
    this.relatedId = relatedId;
    return this;
  }

  public GetScreeningInfoResponseEntityResult relatedId(Integer relatedId) {

    
    
    
    
    this.relatedId = relatedId.doubleValue();
    return this;
  }

   /**
   * Get relatedId
   * @return relatedId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "0", value = "")

  public Double getRelatedId() {
    return relatedId;
  }


  public void setRelatedId(Double relatedId) {

    
    
    
    this.relatedId = relatedId;
  }


  public GetScreeningInfoResponseEntityResult relationships(List<String> relationships) {

    
    
    
    
    this.relationships = relationships;
    return this;
  }

  public GetScreeningInfoResponseEntityResult addRelationshipsItem(String relationshipsItem) {
    if (this.relationships == null) {
      this.relationships = new ArrayList<>();
    }
    this.relationships.add(relationshipsItem);
    return this;
  }

   /**
   * Get relationships
   * @return relationships
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public List<String> getRelationships() {
    return relationships;
  }


  public void setRelationships(List<String> relationships) {

    
    
    
    this.relationships = relationships;
  }


  public GetScreeningInfoResponseEntityResult remarks(String remarks) {

    
    
    
    
    this.remarks = remarks;
    return this;
  }

   /**
   * Get remarks
   * @return remarks
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "According to NG-Economic and Financial Crimes Commission (EFCC); March 12, 2020: On March 12, 2020,  Doe John and other suspects were arrested for  their alleged involvement in internet-related crimes. Raid also led to recovery of valuable items, including three exotic cars, mobile phones, laptops, and SIM cards, from the suspects.", value = "")

  public String getRemarks() {
    return remarks;
  }


  public void setRemarks(String remarks) {

    
    
    
    this.remarks = remarks;
  }


  public GetScreeningInfoResponseEntityResult sourceName(String sourceName) {

    
    
    
    
    this.sourceName = sourceName;
    return this;
  }

   /**
   * Get sourceName
   * @return sourceName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "NG-Economic and Financial Crimes Commission (EFCC)", value = "")

  public String getSourceName() {
    return sourceName;
  }


  public void setSourceName(String sourceName) {

    
    
    
    this.sourceName = sourceName;
  }


  public GetScreeningInfoResponseEntityResult sourceWebLinks(String sourceWebLinks) {

    
    
    
    
    this.sourceWebLinks = sourceWebLinks;
    return this;
  }

   /**
   * Get sourceWebLinks
   * @return sourceWebLinks
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "https://www.newtelegraphng.com/48-arrested-for-internet-fraud-in-ogun/;https://www.vanguardngr.com/2020/03/efcc-arrests-48-suspected-internet-fraudsters-in-ogun/;https://efccnigeria.org/efcc/news/5611-efcc-arrests-48-internet-fraud-suspects-in-ogun", value = "")

  public String getSourceWebLinks() {
    return sourceWebLinks;
  }


  public void setSourceWebLinks(String sourceWebLinks) {

    
    
    
    this.sourceWebLinks = sourceWebLinks;
  }


  public GetScreeningInfoResponseEntityResult subCatDesc(String subCatDesc) {

    
    
    
    
    this.subCatDesc = subCatDesc;
    return this;
  }

   /**
   * Get subCatDesc
   * @return subCatDesc
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "Cybercrime", value = "")

  public String getSubCatDesc() {
    return subCatDesc;
  }


  public void setSubCatDesc(String subCatDesc) {

    
    
    
    this.subCatDesc = subCatDesc;
  }


  public GetScreeningInfoResponseEntityResult suffix(String suffix) {

    
    
    
    
    this.suffix = suffix;
    return this;
  }

   /**
   * Get suffix
   * @return suffix
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "", value = "")

  public String getSuffix() {
    return suffix;
  }


  public void setSuffix(String suffix) {

    
    
    
    this.suffix = suffix;
  }


  public GetScreeningInfoResponseEntityResult touchDate(String touchDate) {

    
    
    
    
    this.touchDate = touchDate;
    return this;
  }

   /**
   * Get touchDate
   * @return touchDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "2021-08-24T09:02:12.79", value = "")

  public String getTouchDate() {
    return touchDate;
  }


  public void setTouchDate(String touchDate) {

    
    
    
    this.touchDate = touchDate;
  }


  public GetScreeningInfoResponseEntityResult watch(Boolean watch) {

    
    
    
    
    this.watch = watch;
    return this;
  }

   /**
   * Get watch
   * @return watch
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "")

  public Boolean getWatch() {
    return watch;
  }


  public void setWatch(Boolean watch) {

    
    
    
    this.watch = watch;
  }

  /**
   * A container for additional, undeclared properties.
   * This is a holder for any undeclared properties as specified with
   * the 'additionalProperties' keyword in the OAS document.
   */
  private Map<String, Object> additionalProperties;

  /**
   * Set the additional (undeclared) property with the specified name and value.
   * If the property does not already exist, create it otherwise replace it.
   *
   * @param key name of the property
   * @param value value of the property
   * @return the GetScreeningInfoResponseEntityResult instance itself
   */
  public GetScreeningInfoResponseEntityResult putAdditionalProperty(String key, Object value) {
    if (this.additionalProperties == null) {
        this.additionalProperties = new HashMap<String, Object>();
    }
    this.additionalProperties.put(key, value);
    return this;
  }

  /**
   * Return the additional (undeclared) property.
   *
   * @return a map of objects
   */
  public Map<String, Object> getAdditionalProperties() {
    return additionalProperties;
  }

  /**
   * Return the additional (undeclared) property with the specified name.
   *
   * @param key name of the property
   * @return an object
   */
  public Object getAdditionalProperty(String key) {
    if (this.additionalProperties == null) {
        return null;
    }
    return this.additionalProperties.get(key);
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    GetScreeningInfoResponseEntityResult getScreeningInfoResponseEntityResult = (GetScreeningInfoResponseEntityResult) o;
    return Objects.equals(this.addresses, getScreeningInfoResponseEntityResult.addresses) &&
        Objects.equals(this.aka, getScreeningInfoResponseEntityResult.aka) &&
        Objects.equals(this.aliases, getScreeningInfoResponseEntityResult.aliases) &&
        Objects.equals(this.countryName, getScreeningInfoResponseEntityResult.countryName) &&
        Objects.equals(this.dob, getScreeningInfoResponseEntityResult.dob) &&
        Objects.equals(this.dob2, getScreeningInfoResponseEntityResult.dob2) &&
        Objects.equals(this.effectiveDate, getScreeningInfoResponseEntityResult.effectiveDate) &&
        Objects.equals(this.entryCategory, getScreeningInfoResponseEntityResult.entryCategory) &&
        Objects.equals(this.entryDesc, getScreeningInfoResponseEntityResult.entryDesc) &&
        Objects.equals(this.firstName, getScreeningInfoResponseEntityResult.firstName) &&
        Objects.equals(this.govDesignation, getScreeningInfoResponseEntityResult.govDesignation) &&
        Objects.equals(this.lastName, getScreeningInfoResponseEntityResult.lastName) &&
        Objects.equals(this.levelDesc, getScreeningInfoResponseEntityResult.levelDesc) &&
        Objects.equals(this.masterId, getScreeningInfoResponseEntityResult.masterId) &&
        Objects.equals(this.name, getScreeningInfoResponseEntityResult.name) &&
        Objects.equals(this.nationalId, getScreeningInfoResponseEntityResult.nationalId) &&
        Objects.equals(this.otherId, getScreeningInfoResponseEntityResult.otherId) &&
        Objects.equals(this.passportId, getScreeningInfoResponseEntityResult.passportId) &&
        Objects.equals(this.pob, getScreeningInfoResponseEntityResult.pob) &&
        Objects.equals(this.positions, getScreeningInfoResponseEntityResult.positions) &&
        Objects.equals(this.prefix, getScreeningInfoResponseEntityResult.prefix) &&
        Objects.equals(this.primaryName, getScreeningInfoResponseEntityResult.primaryName) &&
        Objects.equals(this.relatedId, getScreeningInfoResponseEntityResult.relatedId) &&
        Objects.equals(this.relationships, getScreeningInfoResponseEntityResult.relationships) &&
        Objects.equals(this.remarks, getScreeningInfoResponseEntityResult.remarks) &&
        Objects.equals(this.sourceName, getScreeningInfoResponseEntityResult.sourceName) &&
        Objects.equals(this.sourceWebLinks, getScreeningInfoResponseEntityResult.sourceWebLinks) &&
        Objects.equals(this.subCatDesc, getScreeningInfoResponseEntityResult.subCatDesc) &&
        Objects.equals(this.suffix, getScreeningInfoResponseEntityResult.suffix) &&
        Objects.equals(this.touchDate, getScreeningInfoResponseEntityResult.touchDate) &&
        Objects.equals(this.watch, getScreeningInfoResponseEntityResult.watch)&&
        Objects.equals(this.additionalProperties, getScreeningInfoResponseEntityResult.additionalProperties);
  }

  @Override
  public int hashCode() {
    return Objects.hash(addresses, aka, aliases, countryName, dob, dob2, effectiveDate, entryCategory, entryDesc, firstName, govDesignation, lastName, levelDesc, masterId, name, nationalId, otherId, passportId, pob, positions, prefix, primaryName, relatedId, relationships, remarks, sourceName, sourceWebLinks, subCatDesc, suffix, touchDate, watch, additionalProperties);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class GetScreeningInfoResponseEntityResult {\n");
    sb.append("    addresses: ").append(toIndentedString(addresses)).append("\n");
    sb.append("    aka: ").append(toIndentedString(aka)).append("\n");
    sb.append("    aliases: ").append(toIndentedString(aliases)).append("\n");
    sb.append("    countryName: ").append(toIndentedString(countryName)).append("\n");
    sb.append("    dob: ").append(toIndentedString(dob)).append("\n");
    sb.append("    dob2: ").append(toIndentedString(dob2)).append("\n");
    sb.append("    effectiveDate: ").append(toIndentedString(effectiveDate)).append("\n");
    sb.append("    entryCategory: ").append(toIndentedString(entryCategory)).append("\n");
    sb.append("    entryDesc: ").append(toIndentedString(entryDesc)).append("\n");
    sb.append("    firstName: ").append(toIndentedString(firstName)).append("\n");
    sb.append("    govDesignation: ").append(toIndentedString(govDesignation)).append("\n");
    sb.append("    lastName: ").append(toIndentedString(lastName)).append("\n");
    sb.append("    levelDesc: ").append(toIndentedString(levelDesc)).append("\n");
    sb.append("    masterId: ").append(toIndentedString(masterId)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    nationalId: ").append(toIndentedString(nationalId)).append("\n");
    sb.append("    otherId: ").append(toIndentedString(otherId)).append("\n");
    sb.append("    passportId: ").append(toIndentedString(passportId)).append("\n");
    sb.append("    pob: ").append(toIndentedString(pob)).append("\n");
    sb.append("    positions: ").append(toIndentedString(positions)).append("\n");
    sb.append("    prefix: ").append(toIndentedString(prefix)).append("\n");
    sb.append("    primaryName: ").append(toIndentedString(primaryName)).append("\n");
    sb.append("    relatedId: ").append(toIndentedString(relatedId)).append("\n");
    sb.append("    relationships: ").append(toIndentedString(relationships)).append("\n");
    sb.append("    remarks: ").append(toIndentedString(remarks)).append("\n");
    sb.append("    sourceName: ").append(toIndentedString(sourceName)).append("\n");
    sb.append("    sourceWebLinks: ").append(toIndentedString(sourceWebLinks)).append("\n");
    sb.append("    subCatDesc: ").append(toIndentedString(subCatDesc)).append("\n");
    sb.append("    suffix: ").append(toIndentedString(suffix)).append("\n");
    sb.append("    touchDate: ").append(toIndentedString(touchDate)).append("\n");
    sb.append("    watch: ").append(toIndentedString(watch)).append("\n");
    sb.append("    additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>();
    openapiFields.add("addresses");
    openapiFields.add("aka");
    openapiFields.add("aliases");
    openapiFields.add("countryName");
    openapiFields.add("dob");
    openapiFields.add("dob2");
    openapiFields.add("effectiveDate");
    openapiFields.add("entryCategory");
    openapiFields.add("entryDesc");
    openapiFields.add("firstName");
    openapiFields.add("govDesignation");
    openapiFields.add("lastName");
    openapiFields.add("levelDesc");
    openapiFields.add("masterId");
    openapiFields.add("name");
    openapiFields.add("nationalId");
    openapiFields.add("otherId");
    openapiFields.add("passportId");
    openapiFields.add("pob");
    openapiFields.add("positions");
    openapiFields.add("prefix");
    openapiFields.add("primaryName");
    openapiFields.add("relatedId");
    openapiFields.add("relationships");
    openapiFields.add("remarks");
    openapiFields.add("sourceName");
    openapiFields.add("sourceWebLinks");
    openapiFields.add("subCatDesc");
    openapiFields.add("suffix");
    openapiFields.add("touchDate");
    openapiFields.add("watch");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>();
  }

 /**
  * Validates the JSON Object and throws an exception if issues found
  *
  * @param jsonObj JSON Object
  * @throws IOException if the JSON Object is invalid with respect to GetScreeningInfoResponseEntityResult
  */
  public static void validateJsonObject(JsonObject jsonObj) throws IOException {
      if (jsonObj == null) {
        if (!GetScreeningInfoResponseEntityResult.openapiRequiredFields.isEmpty()) { // has required fields but JSON object is null
          throw new IllegalArgumentException(String.format("The required field(s) %s in GetScreeningInfoResponseEntityResult is not found in the empty JSON string", GetScreeningInfoResponseEntityResult.openapiRequiredFields.toString()));
        }
      }
      // ensure the optional json data is an array if present
      if (jsonObj.get("addresses") != null && !jsonObj.get("addresses").isJsonArray()) {
        throw new IllegalArgumentException(String.format("Expected the field `addresses` to be an array in the JSON string but got `%s`", jsonObj.get("addresses").toString()));
      }
      if ((jsonObj.get("aka") != null && !jsonObj.get("aka").isJsonNull()) && !jsonObj.get("aka").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `aka` to be a primitive type in the JSON string but got `%s`", jsonObj.get("aka").toString()));
      }
      // ensure the optional json data is an array if present
      if (jsonObj.get("aliases") != null && !jsonObj.get("aliases").isJsonArray()) {
        throw new IllegalArgumentException(String.format("Expected the field `aliases` to be an array in the JSON string but got `%s`", jsonObj.get("aliases").toString()));
      }
      if ((jsonObj.get("countryName") != null && !jsonObj.get("countryName").isJsonNull()) && !jsonObj.get("countryName").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `countryName` to be a primitive type in the JSON string but got `%s`", jsonObj.get("countryName").toString()));
      }
      if ((jsonObj.get("dob") != null && !jsonObj.get("dob").isJsonNull()) && !jsonObj.get("dob").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `dob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("dob").toString()));
      }
      if ((jsonObj.get("dob2") != null && !jsonObj.get("dob2").isJsonNull()) && !jsonObj.get("dob2").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `dob2` to be a primitive type in the JSON string but got `%s`", jsonObj.get("dob2").toString()));
      }
      if ((jsonObj.get("effectiveDate") != null && !jsonObj.get("effectiveDate").isJsonNull()) && !jsonObj.get("effectiveDate").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `effectiveDate` to be a primitive type in the JSON string but got `%s`", jsonObj.get("effectiveDate").toString()));
      }
      if ((jsonObj.get("entryCategory") != null && !jsonObj.get("entryCategory").isJsonNull()) && !jsonObj.get("entryCategory").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `entryCategory` to be a primitive type in the JSON string but got `%s`", jsonObj.get("entryCategory").toString()));
      }
      if ((jsonObj.get("entryDesc") != null && !jsonObj.get("entryDesc").isJsonNull()) && !jsonObj.get("entryDesc").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `entryDesc` to be a primitive type in the JSON string but got `%s`", jsonObj.get("entryDesc").toString()));
      }
      if ((jsonObj.get("firstName") != null && !jsonObj.get("firstName").isJsonNull()) && !jsonObj.get("firstName").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `firstName` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firstName").toString()));
      }
      if ((jsonObj.get("govDesignation") != null && !jsonObj.get("govDesignation").isJsonNull()) && !jsonObj.get("govDesignation").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `govDesignation` to be a primitive type in the JSON string but got `%s`", jsonObj.get("govDesignation").toString()));
      }
      if ((jsonObj.get("lastName") != null && !jsonObj.get("lastName").isJsonNull()) && !jsonObj.get("lastName").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `lastName` to be a primitive type in the JSON string but got `%s`", jsonObj.get("lastName").toString()));
      }
      if ((jsonObj.get("levelDesc") != null && !jsonObj.get("levelDesc").isJsonNull()) && !jsonObj.get("levelDesc").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `levelDesc` to be a primitive type in the JSON string but got `%s`", jsonObj.get("levelDesc").toString()));
      }
      if ((jsonObj.get("name") != null && !jsonObj.get("name").isJsonNull()) && !jsonObj.get("name").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("name").toString()));
      }
      if ((jsonObj.get("nationalId") != null && !jsonObj.get("nationalId").isJsonNull()) && !jsonObj.get("nationalId").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `nationalId` to be a primitive type in the JSON string but got `%s`", jsonObj.get("nationalId").toString()));
      }
      if ((jsonObj.get("otherId") != null && !jsonObj.get("otherId").isJsonNull()) && !jsonObj.get("otherId").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `otherId` to be a primitive type in the JSON string but got `%s`", jsonObj.get("otherId").toString()));
      }
      if ((jsonObj.get("passportId") != null && !jsonObj.get("passportId").isJsonNull()) && !jsonObj.get("passportId").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `passportId` to be a primitive type in the JSON string but got `%s`", jsonObj.get("passportId").toString()));
      }
      if ((jsonObj.get("pob") != null && !jsonObj.get("pob").isJsonNull()) && !jsonObj.get("pob").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `pob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pob").toString()));
      }
      if ((jsonObj.get("positions") != null && !jsonObj.get("positions").isJsonNull()) && !jsonObj.get("positions").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `positions` to be a primitive type in the JSON string but got `%s`", jsonObj.get("positions").toString()));
      }
      if ((jsonObj.get("prefix") != null && !jsonObj.get("prefix").isJsonNull()) && !jsonObj.get("prefix").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `prefix` to be a primitive type in the JSON string but got `%s`", jsonObj.get("prefix").toString()));
      }
      if ((jsonObj.get("primaryName") != null && !jsonObj.get("primaryName").isJsonNull()) && !jsonObj.get("primaryName").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `primaryName` to be a primitive type in the JSON string but got `%s`", jsonObj.get("primaryName").toString()));
      }
      // ensure the optional json data is an array if present
      if (jsonObj.get("relationships") != null && !jsonObj.get("relationships").isJsonArray()) {
        throw new IllegalArgumentException(String.format("Expected the field `relationships` to be an array in the JSON string but got `%s`", jsonObj.get("relationships").toString()));
      }
      if ((jsonObj.get("remarks") != null && !jsonObj.get("remarks").isJsonNull()) && !jsonObj.get("remarks").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `remarks` to be a primitive type in the JSON string but got `%s`", jsonObj.get("remarks").toString()));
      }
      if ((jsonObj.get("sourceName") != null && !jsonObj.get("sourceName").isJsonNull()) && !jsonObj.get("sourceName").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `sourceName` to be a primitive type in the JSON string but got `%s`", jsonObj.get("sourceName").toString()));
      }
      if ((jsonObj.get("sourceWebLinks") != null && !jsonObj.get("sourceWebLinks").isJsonNull()) && !jsonObj.get("sourceWebLinks").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `sourceWebLinks` to be a primitive type in the JSON string but got `%s`", jsonObj.get("sourceWebLinks").toString()));
      }
      if ((jsonObj.get("subCatDesc") != null && !jsonObj.get("subCatDesc").isJsonNull()) && !jsonObj.get("subCatDesc").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `subCatDesc` to be a primitive type in the JSON string but got `%s`", jsonObj.get("subCatDesc").toString()));
      }
      if ((jsonObj.get("suffix") != null && !jsonObj.get("suffix").isJsonNull()) && !jsonObj.get("suffix").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `suffix` to be a primitive type in the JSON string but got `%s`", jsonObj.get("suffix").toString()));
      }
      if ((jsonObj.get("touchDate") != null && !jsonObj.get("touchDate").isJsonNull()) && !jsonObj.get("touchDate").isJsonPrimitive()) {
        throw new IllegalArgumentException(String.format("Expected the field `touchDate` to be a primitive type in the JSON string but got `%s`", jsonObj.get("touchDate").toString()));
      }
  }

  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!GetScreeningInfoResponseEntityResult.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'GetScreeningInfoResponseEntityResult' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<GetScreeningInfoResponseEntityResult> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(GetScreeningInfoResponseEntityResult.class));

       return (TypeAdapter<T>) new TypeAdapter<GetScreeningInfoResponseEntityResult>() {
           @Override
           public void write(JsonWriter out, GetScreeningInfoResponseEntityResult value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             obj.remove("additionalProperties");
             // serialize additonal properties
             if (value.getAdditionalProperties() != null) {
               for (Map.Entry<String, Object> entry : value.getAdditionalProperties().entrySet()) {
                 if (entry.getValue() instanceof String)
                   obj.addProperty(entry.getKey(), (String) entry.getValue());
                 else if (entry.getValue() instanceof Number)
                   obj.addProperty(entry.getKey(), (Number) entry.getValue());
                 else if (entry.getValue() instanceof Boolean)
                   obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
                 else if (entry.getValue() instanceof Character)
                   obj.addProperty(entry.getKey(), (Character) entry.getValue());
                 else {
                   obj.add(entry.getKey(), gson.toJsonTree(entry.getValue()).getAsJsonObject());
                 }
               }
             }
             elementAdapter.write(out, obj);
           }

           @Override
           public GetScreeningInfoResponseEntityResult read(JsonReader in) throws IOException {
             JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
             validateJsonObject(jsonObj);
             // store additional fields in the deserialized instance
             GetScreeningInfoResponseEntityResult instance = thisAdapter.fromJsonTree(jsonObj);
             for (Map.Entry<String, JsonElement> entry : jsonObj.entrySet()) {
               if (!openapiFields.contains(entry.getKey())) {
                 if (entry.getValue().isJsonPrimitive()) { // primitive type
                   if (entry.getValue().getAsJsonPrimitive().isString())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
                   else if (entry.getValue().getAsJsonPrimitive().isNumber())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
                   else if (entry.getValue().getAsJsonPrimitive().isBoolean())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
                   else
                     throw new IllegalArgumentException(String.format("The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
                 } else if (entry.getValue().isJsonArray()) {
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
                 } else { // JSON object
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
                 }
               }
             }
             return instance;
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of GetScreeningInfoResponseEntityResult given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of GetScreeningInfoResponseEntityResult
  * @throws IOException if the JSON string is invalid with respect to GetScreeningInfoResponseEntityResult
  */
  public static GetScreeningInfoResponseEntityResult fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, GetScreeningInfoResponseEntityResult.class);
  }

 /**
  * Convert an instance of GetScreeningInfoResponseEntityResult to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

