content: /*
   * 支付宝开放平台API
   * 支付宝开放平台v3协议文档
   *
   * The version of the OpenAPI document: 2025-08-26
   * 
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  
  package com.alipay.v3.model;
  
  import java.util.Objects;
  import java.util.Arrays;
  import com.alipay.v3.model.AlipayUserDeliverAddress;
  import com.alipay.v3.model.AlipayUserPicture;
  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 java.lang.reflect.Type;
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.Map;
  import java.util.Map.Entry;
  import java.util.Set;
  
  import com.alipay.v3.JSON;
  
  /**
   * AlipayUserInfoShareResponseModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AlipayUserInfoShareResponseModel {
    public static final String SERIALIZED_NAME_ADDRESS = "address";
    @SerializedName(SERIALIZED_NAME_ADDRESS)
    private String address;
  
    public static final String SERIALIZED_NAME_AGE = "age";
    @SerializedName(SERIALIZED_NAME_AGE)
    private String age;
  
    public static final String SERIALIZED_NAME_AREA = "area";
    @SerializedName(SERIALIZED_NAME_AREA)
    private String area;
  
    public static final String SERIALIZED_NAME_AVATAR = "avatar";
    @SerializedName(SERIALIZED_NAME_AVATAR)
    private String avatar;
  
    public static final String SERIALIZED_NAME_BUSINESS_SCOPE = "business_scope";
    @SerializedName(SERIALIZED_NAME_BUSINESS_SCOPE)
    private String businessScope;
  
    public static final String SERIALIZED_NAME_CERT_NO = "cert_no";
    @SerializedName(SERIALIZED_NAME_CERT_NO)
    private String certNo;
  
    public static final String SERIALIZED_NAME_CERT_TYPE = "cert_type";
    @SerializedName(SERIALIZED_NAME_CERT_TYPE)
    private String certType;
  
    public static final String SERIALIZED_NAME_CITY = "city";
    @SerializedName(SERIALIZED_NAME_CITY)
    private String city;
  
    public static final String SERIALIZED_NAME_COLLEGE_NAME = "college_name";
    @SerializedName(SERIALIZED_NAME_COLLEGE_NAME)
    private String collegeName;
  
    public static final String SERIALIZED_NAME_COUNTRY_CODE = "country_code";
    @SerializedName(SERIALIZED_NAME_COUNTRY_CODE)
    private String countryCode;
  
    public static final String SERIALIZED_NAME_DEGREE = "degree";
    @SerializedName(SERIALIZED_NAME_DEGREE)
    private String degree;
  
    public static final String SERIALIZED_NAME_DELIVER_ADDRESSES = "deliver_addresses";
    @SerializedName(SERIALIZED_NAME_DELIVER_ADDRESSES)
    private List<AlipayUserDeliverAddress> deliverAddresses = null;
  
    public static final String SERIALIZED_NAME_DISPLAY_NAME = "display_name";
    @SerializedName(SERIALIZED_NAME_DISPLAY_NAME)
    private String displayName;
  
    public static final String SERIALIZED_NAME_EMAIL = "email";
    @SerializedName(SERIALIZED_NAME_EMAIL)
    private String email;
  
    public static final String SERIALIZED_NAME_ENROLLMENT_TIME = "enrollment_time";
    @SerializedName(SERIALIZED_NAME_ENROLLMENT_TIME)
    private String enrollmentTime;
  
    public static final String SERIALIZED_NAME_ENT_LICENSE_ADDRESS = "ent_license_address";
    @SerializedName(SERIALIZED_NAME_ENT_LICENSE_ADDRESS)
    private String entLicenseAddress;
  
    public static final String SERIALIZED_NAME_ENT_LICENSE_AREA = "ent_license_area";
    @SerializedName(SERIALIZED_NAME_ENT_LICENSE_AREA)
    private String entLicenseArea;
  
    public static final String SERIALIZED_NAME_ENT_LICENSE_CITY = "ent_license_city";
    @SerializedName(SERIALIZED_NAME_ENT_LICENSE_CITY)
    private String entLicenseCity;
  
    public static final String SERIALIZED_NAME_ENT_LICENSE_PROVINCE = "ent_license_province";
    @SerializedName(SERIALIZED_NAME_ENT_LICENSE_PROVINCE)
    private String entLicenseProvince;
  
    public static final String SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_EXPIRY_DATE = "firm_agent_person_cert_expiry_date";
    @SerializedName(SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_EXPIRY_DATE)
    private String firmAgentPersonCertExpiryDate;
  
    public static final String SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_NO = "firm_agent_person_cert_no";
    @SerializedName(SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_NO)
    private String firmAgentPersonCertNo;
  
    public static final String SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_TYPE = "firm_agent_person_cert_type";
    @SerializedName(SERIALIZED_NAME_FIRM_AGENT_PERSON_CERT_TYPE)
    private String firmAgentPersonCertType;
  
    public static final String SERIALIZED_NAME_FIRM_AGENT_PERSON_NAME = "firm_agent_person_name";
    @SerializedName(SERIALIZED_NAME_FIRM_AGENT_PERSON_NAME)
    private String firmAgentPersonName;
  
    public static final String SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_EXPIRY_DATE = "firm_legal_person_cert_expiry_date";
    @SerializedName(SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_EXPIRY_DATE)
    private String firmLegalPersonCertExpiryDate;
  
    public static final String SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_NO = "firm_legal_person_cert_no";
    @SerializedName(SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_NO)
    private String firmLegalPersonCertNo;
  
    public static final String SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_TYPE = "firm_legal_person_cert_type";
    @SerializedName(SERIALIZED_NAME_FIRM_LEGAL_PERSON_CERT_TYPE)
    private String firmLegalPersonCertType;
  
    public static final String SERIALIZED_NAME_FIRM_LEGAL_PERSON_NAME = "firm_legal_person_name";
    @SerializedName(SERIALIZED_NAME_FIRM_LEGAL_PERSON_NAME)
    private String firmLegalPersonName;
  
    public static final String SERIALIZED_NAME_FIRM_LEGAL_PERSON_PICTURES = "firm_legal_person_pictures";
    @SerializedName(SERIALIZED_NAME_FIRM_LEGAL_PERSON_PICTURES)
    private List<AlipayUserPicture> firmLegalPersonPictures = null;
  
    public static final String SERIALIZED_NAME_FIRM_PICTURES = "firm_pictures";
    @SerializedName(SERIALIZED_NAME_FIRM_PICTURES)
    private List<AlipayUserPicture> firmPictures = null;
  
    public static final String SERIALIZED_NAME_FIRM_TYPE = "firm_type";
    @SerializedName(SERIALIZED_NAME_FIRM_TYPE)
    private String firmType;
  
    public static final String SERIALIZED_NAME_GENDER = "gender";
    @SerializedName(SERIALIZED_NAME_GENDER)
    private String gender;
  
    public static final String SERIALIZED_NAME_GRADUATION_TIME = "graduation_time";
    @SerializedName(SERIALIZED_NAME_GRADUATION_TIME)
    private String graduationTime;
  
    public static final String SERIALIZED_NAME_IDENTITY_CARD_ADDRESS = "identity_card_address";
    @SerializedName(SERIALIZED_NAME_IDENTITY_CARD_ADDRESS)
    private String identityCardAddress;
  
    public static final String SERIALIZED_NAME_IDENTITY_CARD_AREA = "identity_card_area";
    @SerializedName(SERIALIZED_NAME_IDENTITY_CARD_AREA)
    private String identityCardArea;
  
    public static final String SERIALIZED_NAME_IDENTITY_CARD_CITY = "identity_card_city";
    @SerializedName(SERIALIZED_NAME_IDENTITY_CARD_CITY)
    private String identityCardCity;
  
    public static final String SERIALIZED_NAME_IDENTITY_CARD_PROVINCE = "identity_card_province";
    @SerializedName(SERIALIZED_NAME_IDENTITY_CARD_PROVINCE)
    private String identityCardProvince;
  
    public static final String SERIALIZED_NAME_INST_OR_CORP = "inst_or_corp";
    @SerializedName(SERIALIZED_NAME_INST_OR_CORP)
    private String instOrCorp;
  
    public static final String SERIALIZED_NAME_IS_ADULT = "is_adult";
    @SerializedName(SERIALIZED_NAME_IS_ADULT)
    private String isAdult;
  
    public static final String SERIALIZED_NAME_IS_BALANCE_FROZEN = "is_balance_frozen";
    @SerializedName(SERIALIZED_NAME_IS_BALANCE_FROZEN)
    private String isBalanceFrozen;
  
    public static final String SERIALIZED_NAME_IS_BLOCKED = "is_blocked";
    @SerializedName(SERIALIZED_NAME_IS_BLOCKED)
    private String isBlocked;
  
    public static final String SERIALIZED_NAME_IS_CERTIFIED = "is_certified";
    @SerializedName(SERIALIZED_NAME_IS_CERTIFIED)
    private String isCertified;
  
    public static final String SERIALIZED_NAME_IS_STUDENT_CERTIFIED = "is_student_certified";
    @SerializedName(SERIALIZED_NAME_IS_STUDENT_CERTIFIED)
    private String isStudentCertified;
  
    public static final String SERIALIZED_NAME_LICENSE_EXPIRY_DATE = "license_expiry_date";
    @SerializedName(SERIALIZED_NAME_LICENSE_EXPIRY_DATE)
    private String licenseExpiryDate;
  
    public static final String SERIALIZED_NAME_LICENSE_NO = "license_no";
    @SerializedName(SERIALIZED_NAME_LICENSE_NO)
    private String licenseNo;
  
    public static final String SERIALIZED_NAME_MEMBER_GRADE = "member_grade";
    @SerializedName(SERIALIZED_NAME_MEMBER_GRADE)
    private String memberGrade;
  
    public static final String SERIALIZED_NAME_MOBILE = "mobile";
    @SerializedName(SERIALIZED_NAME_MOBILE)
    private String mobile;
  
    public static final String SERIALIZED_NAME_NICK_NAME = "nick_name";
    @SerializedName(SERIALIZED_NAME_NICK_NAME)
    private String nickName;
  
    public static final String SERIALIZED_NAME_OPEN_ID = "open_id";
    @SerializedName(SERIALIZED_NAME_OPEN_ID)
    private String openId;
  
    public static final String SERIALIZED_NAME_ORGANIZATION_CODE = "organization_code";
    @SerializedName(SERIALIZED_NAME_ORGANIZATION_CODE)
    private String organizationCode;
  
    public static final String SERIALIZED_NAME_PERSON_BIRTHDAY = "person_birthday";
    @SerializedName(SERIALIZED_NAME_PERSON_BIRTHDAY)
    private String personBirthday;
  
    public static final String SERIALIZED_NAME_PERSON_BIRTHDAY_WITHOUT_YEAR = "person_birthday_without_year";
    @SerializedName(SERIALIZED_NAME_PERSON_BIRTHDAY_WITHOUT_YEAR)
    private String personBirthdayWithoutYear;
  
    public static final String SERIALIZED_NAME_PERSON_CERT_EXPIRY_DATE = "person_cert_expiry_date";
    @SerializedName(SERIALIZED_NAME_PERSON_CERT_EXPIRY_DATE)
    private String personCertExpiryDate;
  
    public static final String SERIALIZED_NAME_PERSON_CERT_ISSUE_DATE = "person_cert_issue_date";
    @SerializedName(SERIALIZED_NAME_PERSON_CERT_ISSUE_DATE)
    private String personCertIssueDate;
  
    public static final String SERIALIZED_NAME_PERSON_PICTURES = "person_pictures";
    @SerializedName(SERIALIZED_NAME_PERSON_PICTURES)
    private List<AlipayUserPicture> personPictures = null;
  
    public static final String SERIALIZED_NAME_PHONE = "phone";
    @SerializedName(SERIALIZED_NAME_PHONE)
    private String phone;
  
    public static final String SERIALIZED_NAME_PROFESSION = "profession";
    @SerializedName(SERIALIZED_NAME_PROFESSION)
    private String profession;
  
    public static final String SERIALIZED_NAME_PROVINCE = "province";
    @SerializedName(SERIALIZED_NAME_PROVINCE)
    private String province;
  
    public static final String SERIALIZED_NAME_TAOBAO_ID = "taobao_id";
    @SerializedName(SERIALIZED_NAME_TAOBAO_ID)
    private String taobaoId;
  
    public static final String SERIALIZED_NAME_USER_ID = "user_id";
    @SerializedName(SERIALIZED_NAME_USER_ID)
    private String userId;
  
    public static final String SERIALIZED_NAME_USER_NAME = "user_name";
    @SerializedName(SERIALIZED_NAME_USER_NAME)
    private String userName;
  
    public static final String SERIALIZED_NAME_USER_NATION = "user_nation";
    @SerializedName(SERIALIZED_NAME_USER_NATION)
    private String userNation;
  
    public static final String SERIALIZED_NAME_USER_STATUS = "user_status";
    @SerializedName(SERIALIZED_NAME_USER_STATUS)
    private String userStatus;
  
    public static final String SERIALIZED_NAME_USER_TYPE = "user_type";
    @SerializedName(SERIALIZED_NAME_USER_TYPE)
    private String userType;
  
    public static final String SERIALIZED_NAME_ZIP = "zip";
    @SerializedName(SERIALIZED_NAME_ZIP)
    private String zip;
  
    public AlipayUserInfoShareResponseModel() { 
    }
  
    public AlipayUserInfoShareResponseModel address(String address) {
      
      this.address = address;
      return this;
    }
  
     /**
     * 详细地址。
     * @return address
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "西湖区文三路国际大厦", value = "详细地址。")
  
    public String getAddress() {
      return address;
    }
  
  
    public void setAddress(String address) {
      this.address = address;
    }
  
  
    public AlipayUserInfoShareResponseModel age(String age) {
      
      this.age = age;
      return this;
    }
  
     /**
     * 用户年龄，实名认证为T，且证件类型为身份证，则输出年龄字段，否则不输出
     * @return age
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "45", value = "用户年龄，实名认证为T，且证件类型为身份证，则输出年龄字段，否则不输出")
  
    public String getAge() {
      return age;
    }
  
  
    public void setAge(String age) {
      this.age = age;
    }
  
  
    public AlipayUserInfoShareResponseModel area(String area) {
      
      this.area = area;
      return this;
    }
  
     /**
     * 区县名称。
     * @return area
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "西湖区", value = "区县名称。")
  
    public String getArea() {
      return area;
    }
  
  
    public void setArea(String area) {
      this.area = area;
    }
  
  
    public AlipayUserInfoShareResponseModel avatar(String avatar) {
      
      this.avatar = avatar;
      return this;
    }
  
     /**
     * 用户头像地址。 注意：如果没有数据（用户未设置）时不会返回该信息，请做好容错。
     * @return avatar
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "http://tfsimg.alipay.com/images/partner/T1uIxXXbpXXXXXXXX", value = "用户头像地址。 注意：如果没有数据（用户未设置）时不会返回该信息，请做好容错。")
  
    public String getAvatar() {
      return avatar;
    }
  
  
    public void setAvatar(String avatar) {
      this.avatar = avatar;
    }
  
  
    public AlipayUserInfoShareResponseModel businessScope(String businessScope) {
      
      this.businessScope = businessScope;
      return this;
    }
  
     /**
     * 经营/业务范围（用户类型是公司类型时才有此字段）。
     * @return businessScope
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "餐饮", value = "经营/业务范围（用户类型是公司类型时才有此字段）。")
  
    public String getBusinessScope() {
      return businessScope;
    }
  
  
    public void setBusinessScope(String businessScope) {
      this.businessScope = businessScope;
    }
  
  
    public AlipayUserInfoShareResponseModel certNo(String certNo) {
      
      this.certNo = certNo;
      return this;
    }
  
     /**
     * 【证件号码】结合证件类型使用.【注意】只is_certified为T的时候才有意义，否则不保证准确性.
     * @return certNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "340928109890871722", value = "【证件号码】结合证件类型使用.【注意】只is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getCertNo() {
      return certNo;
    }
  
  
    public void setCertNo(String certNo) {
      this.certNo = certNo;
    }
  
  
    public AlipayUserInfoShareResponseModel certType(String certType) {
      
      this.certType = certType;
      return this;
    }
  
     /**
     * 【证件类型】0:身份证 1:护照 2:军官证 3:士兵证 4:回乡证 5:临时身份证 6:户口簿 7:警官证 8:台胞证 9:营业执照10:其它证件 11:港澳居民来往内地通行证 12:台湾居民来往大陆通行证 13:台湾居民居住证 14:港澳居民居住证  15:港澳身份证 16:外国人永久居住证【注意】只有is_certified为T的时候才有意义，否则不保证准确性.
     * @return certType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "7", value = "【证件类型】0:身份证 1:护照 2:军官证 3:士兵证 4:回乡证 5:临时身份证 6:户口簿 7:警官证 8:台胞证 9:营业执照10:其它证件 11:港澳居民来往内地通行证 12:台湾居民来往大陆通行证 13:台湾居民居住证 14:港澳居民居住证  15:港澳身份证 16:外国人永久居住证【注意】只有is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getCertType() {
      return certType;
    }
  
  
    public void setCertType(String certType) {
      this.certType = certType;
    }
  
  
    public AlipayUserInfoShareResponseModel city(String city) {
      
      this.city = city;
      return this;
    }
  
     /**
     * 市名称。
     * @return city
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "安庆", value = "市名称。")
  
    public String getCity() {
      return city;
    }
  
  
    public void setCity(String city) {
      this.city = city;
    }
  
  
    public AlipayUserInfoShareResponseModel collegeName(String collegeName) {
      
      this.collegeName = collegeName;
      return this;
    }
  
     /**
     * 学信网返回的学校名称，有可能为空。
     * @return collegeName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "南京大学", value = "学信网返回的学校名称，有可能为空。")
  
    public String getCollegeName() {
      return collegeName;
    }
  
  
    public void setCollegeName(String collegeName) {
      this.collegeName = collegeName;
    }
  
  
    public AlipayUserInfoShareResponseModel countryCode(String countryCode) {
      
      this.countryCode = countryCode;
      return this;
    }
  
     /**
     * 国家码
     * @return countryCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "CN", value = "国家码")
  
    public String getCountryCode() {
      return countryCode;
    }
  
  
    public void setCountryCode(String countryCode) {
      this.countryCode = countryCode;
    }
  
  
    public AlipayUserInfoShareResponseModel degree(String degree) {
      
      this.degree = degree;
      return this;
    }
  
     /**
     * 学信网返回的学历/学位信息，数据质量一般，请谨慎使用，取值包括：博士研究生、硕士研究生、高升本、专科、博士、硕士、本科、夜大电大函大普通班、专科(高职)、第二学士学位。
     * @return degree
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "硕士研究生", value = "学信网返回的学历/学位信息，数据质量一般，请谨慎使用，取值包括：博士研究生、硕士研究生、高升本、专科、博士、硕士、本科、夜大电大函大普通班、专科(高职)、第二学士学位。")
  
    public String getDegree() {
      return degree;
    }
  
  
    public void setDegree(String degree) {
      this.degree = degree;
    }
  
  
    public AlipayUserInfoShareResponseModel deliverAddresses(List<AlipayUserDeliverAddress> deliverAddresses) {
      
      this.deliverAddresses = deliverAddresses;
      return this;
    }
  
    public AlipayUserInfoShareResponseModel addDeliverAddressesItem(AlipayUserDeliverAddress deliverAddressesItem) {
      if (this.deliverAddresses == null) {
        this.deliverAddresses = new ArrayList<>();
      }
      this.deliverAddresses.add(deliverAddressesItem);
      return this;
    }
  
     /**
     * 收货地址列表
     * @return deliverAddresses
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "收货地址列表")
  
    public List<AlipayUserDeliverAddress> getDeliverAddresses() {
      return deliverAddresses;
    }
  
  
    public void setDeliverAddresses(List<AlipayUserDeliverAddress> deliverAddresses) {
      this.deliverAddresses = deliverAddresses;
    }
  
  
    public AlipayUserInfoShareResponseModel displayName(String displayName) {
      
      this.displayName = displayName;
      return this;
    }
  
     /**
     * 展示名称，用于展示和识别用户。返回的值是支付宝账户的可用外标之一，根据展示名称产品规则可能返回手机号/邮箱/支付宝号其中的一个。同一个账户在不同的时期返回的展示名称可能随规则变化而变化。
     * @return displayName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "miracle001", value = "展示名称，用于展示和识别用户。返回的值是支付宝账户的可用外标之一，根据展示名称产品规则可能返回手机号/邮箱/支付宝号其中的一个。同一个账户在不同的时期返回的展示名称可能随规则变化而变化。")
  
    public String getDisplayName() {
      return displayName;
    }
  
  
    public void setDisplayName(String displayName) {
      this.displayName = displayName;
    }
  
  
    public AlipayUserInfoShareResponseModel email(String email) {
      
      this.email = email;
      return this;
    }
  
     /**
     * 优先获取email登录名，如果不存在，则返回mobile登录名
     * @return email
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "sss@163.com", value = "优先获取email登录名，如果不存在，则返回mobile登录名")
  
    public String getEmail() {
      return email;
    }
  
  
    public void setEmail(String email) {
      this.email = email;
    }
  
  
    public AlipayUserInfoShareResponseModel enrollmentTime(String enrollmentTime) {
      
      this.enrollmentTime = enrollmentTime;
      return this;
    }
  
     /**
     * 入学时间，yyyy-mm-dd格式
     * @return enrollmentTime
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2016-01-11", value = "入学时间，yyyy-mm-dd格式")
  
    public String getEnrollmentTime() {
      return enrollmentTime;
    }
  
  
    public void setEnrollmentTime(String enrollmentTime) {
      this.enrollmentTime = enrollmentTime;
    }
  
  
    public AlipayUserInfoShareResponseModel entLicenseAddress(String entLicenseAddress) {
      
      this.entLicenseAddress = entLicenseAddress;
      return this;
    }
  
     /**
     * 企业证照地址的详细地址（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.
     * @return entLicenseAddress
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "沙河街道庐山北路888号", value = "企业证照地址的详细地址（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getEntLicenseAddress() {
      return entLicenseAddress;
    }
  
  
    public void setEntLicenseAddress(String entLicenseAddress) {
      this.entLicenseAddress = entLicenseAddress;
    }
  
  
    public AlipayUserInfoShareResponseModel entLicenseArea(String entLicenseArea) {
      
      this.entLicenseArea = entLicenseArea;
      return this;
    }
  
     /**
     * 企业证照地址所在地区或县（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性，目前企业营业执照地址不含县(区)，area为空。
     * @return entLicenseArea
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "庐山区", value = "企业证照地址所在地区或县（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性，目前企业营业执照地址不含县(区)，area为空。")
  
    public String getEntLicenseArea() {
      return entLicenseArea;
    }
  
  
    public void setEntLicenseArea(String entLicenseArea) {
      this.entLicenseArea = entLicenseArea;
    }
  
  
    public AlipayUserInfoShareResponseModel entLicenseCity(String entLicenseCity) {
      
      this.entLicenseCity = entLicenseCity;
      return this;
    }
  
     /**
     * 企业证照地址所在市（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.
     * @return entLicenseCity
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "九江市", value = "企业证照地址所在市（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getEntLicenseCity() {
      return entLicenseCity;
    }
  
  
    public void setEntLicenseCity(String entLicenseCity) {
      this.entLicenseCity = entLicenseCity;
    }
  
  
    public AlipayUserInfoShareResponseModel entLicenseProvince(String entLicenseProvince) {
      
      this.entLicenseProvince = entLicenseProvince;
      return this;
    }
  
     /**
     * 企业证照地址所在省份（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.
     * @return entLicenseProvince
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "江西省", value = "企业证照地址所在省份（用户类型是公司用户才有该字段）【注意】只有is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getEntLicenseProvince() {
      return entLicenseProvince;
    }
  
  
    public void setEntLicenseProvince(String entLicenseProvince) {
      this.entLicenseProvince = entLicenseProvince;
    }
  
  
    public AlipayUserInfoShareResponseModel firmAgentPersonCertExpiryDate(String firmAgentPersonCertExpiryDate) {
      
      this.firmAgentPersonCertExpiryDate = firmAgentPersonCertExpiryDate;
      return this;
    }
  
     /**
     * 企业代理人证件有效期（用户类型是公司类型时才有此字段）。
     * @return firmAgentPersonCertExpiryDate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20201212", value = "企业代理人证件有效期（用户类型是公司类型时才有此字段）。")
  
    public String getFirmAgentPersonCertExpiryDate() {
      return firmAgentPersonCertExpiryDate;
    }
  
  
    public void setFirmAgentPersonCertExpiryDate(String firmAgentPersonCertExpiryDate) {
      this.firmAgentPersonCertExpiryDate = firmAgentPersonCertExpiryDate;
    }
  
  
    public AlipayUserInfoShareResponseModel firmAgentPersonCertNo(String firmAgentPersonCertNo) {
      
      this.firmAgentPersonCertNo = firmAgentPersonCertNo;
      return this;
    }
  
     /**
     * 企业代理人证件号码（用户类型是公司类型时才有此字段）。
     * @return firmAgentPersonCertNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "320322197712211890", value = "企业代理人证件号码（用户类型是公司类型时才有此字段）。")
  
    public String getFirmAgentPersonCertNo() {
      return firmAgentPersonCertNo;
    }
  
  
    public void setFirmAgentPersonCertNo(String firmAgentPersonCertNo) {
      this.firmAgentPersonCertNo = firmAgentPersonCertNo;
    }
  
  
    public AlipayUserInfoShareResponseModel firmAgentPersonCertType(String firmAgentPersonCertType) {
      
      this.firmAgentPersonCertType = firmAgentPersonCertType;
      return this;
    }
  
     /**
     * 企业代理人证件类型, 返回值参考cert_type字段（用户类型是公司类型时才有此字段）。
     * @return firmAgentPersonCertType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0", value = "企业代理人证件类型, 返回值参考cert_type字段（用户类型是公司类型时才有此字段）。")
  
    public String getFirmAgentPersonCertType() {
      return firmAgentPersonCertType;
    }
  
  
    public void setFirmAgentPersonCertType(String firmAgentPersonCertType) {
      this.firmAgentPersonCertType = firmAgentPersonCertType;
    }
  
  
    public AlipayUserInfoShareResponseModel firmAgentPersonName(String firmAgentPersonName) {
      
      this.firmAgentPersonName = firmAgentPersonName;
      return this;
    }
  
     /**
     * 企业代理人姓名（用户类型是公司类型时才有此字段）。
     * @return firmAgentPersonName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "王五", value = "企业代理人姓名（用户类型是公司类型时才有此字段）。")
  
    public String getFirmAgentPersonName() {
      return firmAgentPersonName;
    }
  
  
    public void setFirmAgentPersonName(String firmAgentPersonName) {
      this.firmAgentPersonName = firmAgentPersonName;
    }
  
  
    public AlipayUserInfoShareResponseModel firmLegalPersonCertExpiryDate(String firmLegalPersonCertExpiryDate) {
      
      this.firmLegalPersonCertExpiryDate = firmLegalPersonCertExpiryDate;
      return this;
    }
  
     /**
     * 企业法人证件有效期（用户类型是公司类型时才有此字段）。
     * @return firmLegalPersonCertExpiryDate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20200909", value = "企业法人证件有效期（用户类型是公司类型时才有此字段）。")
  
    public String getFirmLegalPersonCertExpiryDate() {
      return firmLegalPersonCertExpiryDate;
    }
  
  
    public void setFirmLegalPersonCertExpiryDate(String firmLegalPersonCertExpiryDate) {
      this.firmLegalPersonCertExpiryDate = firmLegalPersonCertExpiryDate;
    }
  
  
    public AlipayUserInfoShareResponseModel firmLegalPersonCertNo(String firmLegalPersonCertNo) {
      
      this.firmLegalPersonCertNo = firmLegalPersonCertNo;
      return this;
    }
  
     /**
     * 法人证件号码（用户类型是公司类型时才有此字段）。
     * @return firmLegalPersonCertNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "320231196408110099", value = "法人证件号码（用户类型是公司类型时才有此字段）。")
  
    public String getFirmLegalPersonCertNo() {
      return firmLegalPersonCertNo;
    }
  
  
    public void setFirmLegalPersonCertNo(String firmLegalPersonCertNo) {
      this.firmLegalPersonCertNo = firmLegalPersonCertNo;
    }
  
  
    public AlipayUserInfoShareResponseModel firmLegalPersonCertType(String firmLegalPersonCertType) {
      
      this.firmLegalPersonCertType = firmLegalPersonCertType;
      return this;
    }
  
     /**
     * 企业法人证件类型, 返回值参考cert_type字段（用户类型是公司类型时才有此字段）。
     * @return firmLegalPersonCertType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "1", value = "企业法人证件类型, 返回值参考cert_type字段（用户类型是公司类型时才有此字段）。")
  
    public String getFirmLegalPersonCertType() {
      return firmLegalPersonCertType;
    }
  
  
    public void setFirmLegalPersonCertType(String firmLegalPersonCertType) {
      this.firmLegalPersonCertType = firmLegalPersonCertType;
    }
  
  
    public AlipayUserInfoShareResponseModel firmLegalPersonName(String firmLegalPersonName) {
      
      this.firmLegalPersonName = firmLegalPersonName;
      return this;
    }
  
     /**
     * 企业法人名称（用户类型是公司类型时才有此字段）。
     * @return firmLegalPersonName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "李四", value = "企业法人名称（用户类型是公司类型时才有此字段）。")
  
    public String getFirmLegalPersonName() {
      return firmLegalPersonName;
    }
  
  
    public void setFirmLegalPersonName(String firmLegalPersonName) {
      this.firmLegalPersonName = firmLegalPersonName;
    }
  
  
    public AlipayUserInfoShareResponseModel firmLegalPersonPictures(List<AlipayUserPicture> firmLegalPersonPictures) {
      
      this.firmLegalPersonPictures = firmLegalPersonPictures;
      return this;
    }
  
    public AlipayUserInfoShareResponseModel addFirmLegalPersonPicturesItem(AlipayUserPicture firmLegalPersonPicturesItem) {
      if (this.firmLegalPersonPictures == null) {
        this.firmLegalPersonPictures = new ArrayList<>();
      }
      this.firmLegalPersonPictures.add(firmLegalPersonPicturesItem);
      return this;
    }
  
     /**
     * 企业法人证件图片（用户类型是公司类型时才有此字段）。
     * @return firmLegalPersonPictures
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "企业法人证件图片（用户类型是公司类型时才有此字段）。")
  
    public List<AlipayUserPicture> getFirmLegalPersonPictures() {
      return firmLegalPersonPictures;
    }
  
  
    public void setFirmLegalPersonPictures(List<AlipayUserPicture> firmLegalPersonPictures) {
      this.firmLegalPersonPictures = firmLegalPersonPictures;
    }
  
  
    public AlipayUserInfoShareResponseModel firmPictures(List<AlipayUserPicture> firmPictures) {
      
      this.firmPictures = firmPictures;
      return this;
    }
  
    public AlipayUserInfoShareResponseModel addFirmPicturesItem(AlipayUserPicture firmPicturesItem) {
      if (this.firmPictures == null) {
        this.firmPictures = new ArrayList<>();
      }
      this.firmPictures.add(firmPicturesItem);
      return this;
    }
  
     /**
     * 企业相关证件图片，包含图片地址（目前需要调用alipay.user.certify.image.fetch转换一下）及类型（用户类型是公司类型时才有此字段）。
     * @return firmPictures
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "企业相关证件图片，包含图片地址（目前需要调用alipay.user.certify.image.fetch转换一下）及类型（用户类型是公司类型时才有此字段）。")
  
    public List<AlipayUserPicture> getFirmPictures() {
      return firmPictures;
    }
  
  
    public void setFirmPictures(List<AlipayUserPicture> firmPictures) {
      this.firmPictures = firmPictures;
    }
  
  
    public AlipayUserInfoShareResponseModel firmType(String firmType) {
      
      this.firmType = firmType;
      return this;
    }
  
     /**
     * 公司类型，包括（用户类型是公司类型时才有此字段）：  CO(公司)  INST(事业单位),  COMM(社会团体),  NGO(民办非企业组织),  STATEORGAN(党政国家机关)
     * @return firmType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "CO", value = "公司类型，包括（用户类型是公司类型时才有此字段）：  CO(公司)  INST(事业单位),  COMM(社会团体),  NGO(民办非企业组织),  STATEORGAN(党政国家机关)")
  
    public String getFirmType() {
      return firmType;
    }
  
  
    public void setFirmType(String firmType) {
      this.firmType = firmType;
    }
  
  
    public AlipayUserInfoShareResponseModel gender(String gender) {
      
      this.gender = gender;
      return this;
    }
  
     /**
     * 性别。枚举值如下： F：女性； M：男性。
     * @return gender
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "F", value = "性别。枚举值如下： F：女性； M：男性。")
  
    public String getGender() {
      return gender;
    }
  
  
    public void setGender(String gender) {
      this.gender = gender;
    }
  
  
    public AlipayUserInfoShareResponseModel graduationTime(String graduationTime) {
      
      this.graduationTime = graduationTime;
      return this;
    }
  
     /**
     * 预期毕业时间，不保证准确性，yyyy-mm-dd格式。
     * @return graduationTime
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2021-01-01", value = "预期毕业时间，不保证准确性，yyyy-mm-dd格式。")
  
    public String getGraduationTime() {
      return graduationTime;
    }
  
  
    public void setGraduationTime(String graduationTime) {
      this.graduationTime = graduationTime;
    }
  
  
    public AlipayUserInfoShareResponseModel identityCardAddress(String identityCardAddress) {
      
      this.identityCardAddress = identityCardAddress;
      return this;
    }
  
     /**
     * 身份证地址信息
     * @return identityCardAddress
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "江西省上饶市xxx村34号", value = "身份证地址信息")
  
    public String getIdentityCardAddress() {
      return identityCardAddress;
    }
  
  
    public void setIdentityCardAddress(String identityCardAddress) {
      this.identityCardAddress = identityCardAddress;
    }
  
  
    public AlipayUserInfoShareResponseModel identityCardArea(String identityCardArea) {
      
      this.identityCardArea = identityCardArea;
      return this;
    }
  
     /**
     * 身份证地区信息
     * @return identityCardArea
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "xxx村23号", value = "身份证地区信息")
  
    public String getIdentityCardArea() {
      return identityCardArea;
    }
  
  
    public void setIdentityCardArea(String identityCardArea) {
      this.identityCardArea = identityCardArea;
    }
  
  
    public AlipayUserInfoShareResponseModel identityCardCity(String identityCardCity) {
      
      this.identityCardCity = identityCardCity;
      return this;
    }
  
     /**
     * 身份证市信息
     * @return identityCardCity
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "上饶市", value = "身份证市信息")
  
    public String getIdentityCardCity() {
      return identityCardCity;
    }
  
  
    public void setIdentityCardCity(String identityCardCity) {
      this.identityCardCity = identityCardCity;
    }
  
  
    public AlipayUserInfoShareResponseModel identityCardProvince(String identityCardProvince) {
      
      this.identityCardProvince = identityCardProvince;
      return this;
    }
  
     /**
     * 身份证省信息
     * @return identityCardProvince
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "江西省", value = "身份证省信息")
  
    public String getIdentityCardProvince() {
      return identityCardProvince;
    }
  
  
    public void setIdentityCardProvince(String identityCardProvince) {
      this.identityCardProvince = identityCardProvince;
    }
  
  
    public AlipayUserInfoShareResponseModel instOrCorp(String instOrCorp) {
      
      this.instOrCorp = instOrCorp;
      return this;
    }
  
     /**
     * 是否是金融机构或特殊单位，\&quot;I\&quot;表示金融机构, \&quot;C\&quot;表示无余额账户的单位账户,  \&quot;V\&quot;, 表示虚拟主体(类似机构仅内部户无余额户),  \&quot;N\&quot;表示非金融机构且非无余额账户的单位账户,\&quot;?\&quot;表示匿名用户
     * @return instOrCorp
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "N", value = "是否是金融机构或特殊单位，\"I\"表示金融机构, \"C\"表示无余额账户的单位账户,  \"V\", 表示虚拟主体(类似机构仅内部户无余额户),  \"N\"表示非金融机构且非无余额账户的单位账户,\"?\"表示匿名用户")
  
    public String getInstOrCorp() {
      return instOrCorp;
    }
  
  
    public void setInstOrCorp(String instOrCorp) {
      this.instOrCorp = instOrCorp;
    }
  
  
    public AlipayUserInfoShareResponseModel isAdult(String isAdult) {
      
      this.isAdult = isAdult;
      return this;
    }
  
     /**
     * T/F, 实名认证为T，且证件类型为身份证，则输出是否成年字段，否则不输出
     * @return isAdult
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "F", value = "T/F, 实名认证为T，且证件类型为身份证，则输出是否成年字段，否则不输出")
  
    public String getIsAdult() {
      return isAdult;
    }
  
  
    public void setIsAdult(String isAdult) {
      this.isAdult = isAdult;
    }
  
  
    public AlipayUserInfoShareResponseModel isBalanceFrozen(String isBalanceFrozen) {
      
      this.isBalanceFrozen = isBalanceFrozen;
      return this;
    }
  
     /**
     * 余额账户是否被冻结。  T--被冻结；F--未冻结
     * @return isBalanceFrozen
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "余额账户是否被冻结。  T--被冻结；F--未冻结")
  
    public String getIsBalanceFrozen() {
      return isBalanceFrozen;
    }
  
  
    public void setIsBalanceFrozen(String isBalanceFrozen) {
      this.isBalanceFrozen = isBalanceFrozen;
    }
  
  
    public AlipayUserInfoShareResponseModel isBlocked(String isBlocked) {
      
      this.isBlocked = isBlocked;
      return this;
    }
  
     /**
     * 账户是否被冻结，T/F，T冻结，F未冻结
     * @return isBlocked
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "账户是否被冻结，T/F，T冻结，F未冻结")
  
    public String getIsBlocked() {
      return isBlocked;
    }
  
  
    public void setIsBlocked(String isBlocked) {
      this.isBlocked = isBlocked;
    }
  
  
    public AlipayUserInfoShareResponseModel isCertified(String isCertified) {
      
      this.isCertified = isCertified;
      return this;
    }
  
     /**
     * 是否通过实名认证。T是通过 F是没有实名认证。
     * @return isCertified
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "是否通过实名认证。T是通过 F是没有实名认证。")
  
    public String getIsCertified() {
      return isCertified;
    }
  
  
    public void setIsCertified(String isCertified) {
      this.isCertified = isCertified;
    }
  
  
    public AlipayUserInfoShareResponseModel isStudentCertified(String isStudentCertified) {
      
      this.isStudentCertified = isStudentCertified;
      return this;
    }
  
     /**
     * 是否是学生
     * @return isStudentCertified
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "是否是学生")
  
    public String getIsStudentCertified() {
      return isStudentCertified;
    }
  
  
    public void setIsStudentCertified(String isStudentCertified) {
      this.isStudentCertified = isStudentCertified;
    }
  
  
    public AlipayUserInfoShareResponseModel licenseExpiryDate(String licenseExpiryDate) {
      
      this.licenseExpiryDate = licenseExpiryDate;
      return this;
    }
  
     /**
     * 营业执照有效期，yyyyMMdd或长期，（用户类型是公司类型时才有此字段）。
     * @return licenseExpiryDate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20200101", value = "营业执照有效期，yyyyMMdd或长期，（用户类型是公司类型时才有此字段）。")
  
    public String getLicenseExpiryDate() {
      return licenseExpiryDate;
    }
  
  
    public void setLicenseExpiryDate(String licenseExpiryDate) {
      this.licenseExpiryDate = licenseExpiryDate;
    }
  
  
    public AlipayUserInfoShareResponseModel licenseNo(String licenseNo) {
      
      this.licenseNo = licenseNo;
      return this;
    }
  
     /**
     * 企业执照号码（用户类型是公司类型时才有此字段）。
     * @return licenseNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "371702118008810", value = "企业执照号码（用户类型是公司类型时才有此字段）。")
  
    public String getLicenseNo() {
      return licenseNo;
    }
  
  
    public void setLicenseNo(String licenseNo) {
      this.licenseNo = licenseNo;
    }
  
  
    public AlipayUserInfoShareResponseModel memberGrade(String memberGrade) {
      
      this.memberGrade = memberGrade;
      return this;
    }
  
     /**
     * 支付宝会员等级
     * @return memberGrade
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "primary,普通; golden,黄金; platinum,铂金; diamond,钻石unknown,未知。", value = "支付宝会员等级")
  
    public String getMemberGrade() {
      return memberGrade;
    }
  
  
    public void setMemberGrade(String memberGrade) {
      this.memberGrade = memberGrade;
    }
  
  
    public AlipayUserInfoShareResponseModel mobile(String mobile) {
      
      this.mobile = mobile;
      return this;
    }
  
     /**
     * 手机号码。
     * @return mobile
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "13429199999", value = "手机号码。")
  
    public String getMobile() {
      return mobile;
    }
  
  
    public void setMobile(String mobile) {
      this.mobile = mobile;
    }
  
  
    public AlipayUserInfoShareResponseModel nickName(String nickName) {
      
      this.nickName = nickName;
      return this;
    }
  
     /**
     * 用户昵称。 注意：如果没有数据（用户未设置）时不会返回该信息，请做好容错。
     * @return nickName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "支付宝小二", value = "用户昵称。 注意：如果没有数据（用户未设置）时不会返回该信息，请做好容错。")
  
    public String getNickName() {
      return nickName;
    }
  
  
    public void setNickName(String nickName) {
      this.nickName = nickName;
    }
  
  
    public AlipayUserInfoShareResponseModel openId(String openId) {
      
      this.openId = openId;
      return this;
    }
  
     /**
     * 支付宝用户的openId。
     * @return openId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5", value = "支付宝用户的openId。")
  
    public String getOpenId() {
      return openId;
    }
  
  
    public void setOpenId(String openId) {
      this.openId = openId;
    }
  
  
    public AlipayUserInfoShareResponseModel organizationCode(String organizationCode) {
      
      this.organizationCode = organizationCode;
      return this;
    }
  
     /**
     * 组织机构代码（用户类型是公司类型时才有此字段）。
     * @return organizationCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "暂无", value = "组织机构代码（用户类型是公司类型时才有此字段）。")
  
    public String getOrganizationCode() {
      return organizationCode;
    }
  
  
    public void setOrganizationCode(String organizationCode) {
      this.organizationCode = organizationCode;
    }
  
  
    public AlipayUserInfoShareResponseModel personBirthday(String personBirthday) {
      
      this.personBirthday = personBirthday;
      return this;
    }
  
     /**
     * 个人用户生日。
     * @return personBirthday
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "19900101", value = "个人用户生日。")
  
    public String getPersonBirthday() {
      return personBirthday;
    }
  
  
    public void setPersonBirthday(String personBirthday) {
      this.personBirthday = personBirthday;
    }
  
  
    public AlipayUserInfoShareResponseModel personBirthdayWithoutYear(String personBirthdayWithoutYear) {
      
      this.personBirthdayWithoutYear = personBirthdayWithoutYear;
      return this;
    }
  
     /**
     * 生日。不包含具体年份，格式MMdd
     * @return personBirthdayWithoutYear
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0828", value = "生日。不包含具体年份，格式MMdd")
  
    public String getPersonBirthdayWithoutYear() {
      return personBirthdayWithoutYear;
    }
  
  
    public void setPersonBirthdayWithoutYear(String personBirthdayWithoutYear) {
      this.personBirthdayWithoutYear = personBirthdayWithoutYear;
    }
  
  
    public AlipayUserInfoShareResponseModel personCertExpiryDate(String personCertExpiryDate) {
      
      this.personCertExpiryDate = personCertExpiryDate;
      return this;
    }
  
     /**
     * 证件有效期（用户类型是个人的时候才有此字段）。
     * @return personCertExpiryDate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20400101", value = "证件有效期（用户类型是个人的时候才有此字段）。")
  
    public String getPersonCertExpiryDate() {
      return personCertExpiryDate;
    }
  
  
    public void setPersonCertExpiryDate(String personCertExpiryDate) {
      this.personCertExpiryDate = personCertExpiryDate;
    }
  
  
    public AlipayUserInfoShareResponseModel personCertIssueDate(String personCertIssueDate) {
      
      this.personCertIssueDate = personCertIssueDate;
      return this;
    }
  
     /**
     * 证件起始日期（用户类型是个人的时候才可能有此字段，不保证准确，同时有可能为空）。
     * @return personCertIssueDate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20220701", value = "证件起始日期（用户类型是个人的时候才可能有此字段，不保证准确，同时有可能为空）。")
  
    public String getPersonCertIssueDate() {
      return personCertIssueDate;
    }
  
  
    public void setPersonCertIssueDate(String personCertIssueDate) {
      this.personCertIssueDate = personCertIssueDate;
    }
  
  
    public AlipayUserInfoShareResponseModel personPictures(List<AlipayUserPicture> personPictures) {
      
      this.personPictures = personPictures;
      return this;
    }
  
    public AlipayUserInfoShareResponseModel addPersonPicturesItem(AlipayUserPicture personPicturesItem) {
      if (this.personPictures == null) {
        this.personPictures = new ArrayList<>();
      }
      this.personPictures.add(personPicturesItem);
      return this;
    }
  
     /**
     * 个人证件图片（用户类型是个人的时候才有此字段）。
     * @return personPictures
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "个人证件图片（用户类型是个人的时候才有此字段）。")
  
    public List<AlipayUserPicture> getPersonPictures() {
      return personPictures;
    }
  
  
    public void setPersonPictures(List<AlipayUserPicture> personPictures) {
      this.personPictures = personPictures;
    }
  
  
    public AlipayUserInfoShareResponseModel phone(String phone) {
      
      this.phone = phone;
      return this;
    }
  
     /**
     * 电话号码。
     * @return phone
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0511-26888888", value = "电话号码。")
  
    public String getPhone() {
      return phone;
    }
  
  
    public void setPhone(String phone) {
      this.phone = phone;
    }
  
  
    public AlipayUserInfoShareResponseModel profession(String profession) {
      
      this.profession = profession;
      return this;
    }
  
     /**
     * 职业
     * @return profession
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "教师", value = "职业")
  
    public String getProfession() {
      return profession;
    }
  
  
    public void setProfession(String profession) {
      this.profession = profession;
    }
  
  
    public AlipayUserInfoShareResponseModel province(String province) {
      
      this.province = province;
      return this;
    }
  
     /**
     * 省份名称。
     * @return province
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "安徽省", value = "省份名称。")
  
    public String getProvince() {
      return province;
    }
  
  
    public void setProvince(String province) {
      this.province = province;
    }
  
  
    public AlipayUserInfoShareResponseModel taobaoId(String taobaoId) {
      
      this.taobaoId = taobaoId;
      return this;
    }
  
     /**
     * 淘宝id
     * @return taobaoId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "42143928", value = "淘宝id")
  
    public String getTaobaoId() {
      return taobaoId;
    }
  
  
    public void setTaobaoId(String taobaoId) {
      this.taobaoId = taobaoId;
    }
  
  
    public AlipayUserInfoShareResponseModel userId(String userId) {
      
      this.userId = userId;
      return this;
    }
  
     /**
     * 支付宝用户的userId。
     * @return userId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088102104794936", value = "支付宝用户的userId。")
  
    public String getUserId() {
      return userId;
    }
  
  
    public void setUserId(String userId) {
      this.userId = userId;
    }
  
  
    public AlipayUserInfoShareResponseModel userName(String userName) {
      
      this.userName = userName;
      return this;
    }
  
     /**
     * 若用户是个人用户，则是用户的真实姓名；若是企业用户，则是企业名称。【注意】只有is_certified为T的时候才有意义，否则不保证准确性.
     * @return userName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "张三", value = "若用户是个人用户，则是用户的真实姓名；若是企业用户，则是企业名称。【注意】只有is_certified为T的时候才有意义，否则不保证准确性.")
  
    public String getUserName() {
      return userName;
    }
  
  
    public void setUserName(String userName) {
      this.userName = userName;
    }
  
  
    public AlipayUserInfoShareResponseModel userNation(String userNation) {
      
      this.userNation = userNation;
      return this;
    }
  
     /**
     * 身份证民族信息
     * @return userNation
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "汉", value = "身份证民族信息")
  
    public String getUserNation() {
      return userNation;
    }
  
  
    public void setUserNation(String userNation) {
      this.userNation = userNation;
    }
  
  
    public AlipayUserInfoShareResponseModel userStatus(String userStatus) {
      
      this.userStatus = userStatus;
      return this;
    }
  
     /**
     * 用户状态（Q/T/B/W）。 Q代表快速注册用户 T代表正常用户 B代表被冻结账户 W代表已注册，未激活的账户
     * @return userStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "用户状态（Q/T/B/W）。 Q代表快速注册用户 T代表正常用户 B代表被冻结账户 W代表已注册，未激活的账户")
  
    public String getUserStatus() {
      return userStatus;
    }
  
  
    public void setUserStatus(String userStatus) {
      this.userStatus = userStatus;
    }
  
  
    public AlipayUserInfoShareResponseModel userType(String userType) {
      
      this.userType = userType;
      return this;
    }
  
     /**
     * 用户类型（1/2）  1代表公司账户2代表个人账户
     * @return userType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "1", value = "用户类型（1/2）  1代表公司账户2代表个人账户")
  
    public String getUserType() {
      return userType;
    }
  
  
    public void setUserType(String userType) {
      this.userType = userType;
    }
  
  
    public AlipayUserInfoShareResponseModel zip(String zip) {
      
      this.zip = zip;
      return this;
    }
  
     /**
     * 邮政编码。
     * @return zip
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "3600", value = "邮政编码。")
  
    public String getZip() {
      return zip;
    }
  
  
    public void setZip(String zip) {
      this.zip = zip;
    }
  
    /**
     * 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 AlipayUserInfoShareResponseModel instance itself
     */
    public AlipayUserInfoShareResponseModel 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;
      }
      AlipayUserInfoShareResponseModel alipayUserInfoShareResponseModel = (AlipayUserInfoShareResponseModel) o;
      return Objects.equals(this.address, alipayUserInfoShareResponseModel.address) &&
          Objects.equals(this.age, alipayUserInfoShareResponseModel.age) &&
          Objects.equals(this.area, alipayUserInfoShareResponseModel.area) &&
          Objects.equals(this.avatar, alipayUserInfoShareResponseModel.avatar) &&
          Objects.equals(this.businessScope, alipayUserInfoShareResponseModel.businessScope) &&
          Objects.equals(this.certNo, alipayUserInfoShareResponseModel.certNo) &&
          Objects.equals(this.certType, alipayUserInfoShareResponseModel.certType) &&
          Objects.equals(this.city, alipayUserInfoShareResponseModel.city) &&
          Objects.equals(this.collegeName, alipayUserInfoShareResponseModel.collegeName) &&
          Objects.equals(this.countryCode, alipayUserInfoShareResponseModel.countryCode) &&
          Objects.equals(this.degree, alipayUserInfoShareResponseModel.degree) &&
          Objects.equals(this.deliverAddresses, alipayUserInfoShareResponseModel.deliverAddresses) &&
          Objects.equals(this.displayName, alipayUserInfoShareResponseModel.displayName) &&
          Objects.equals(this.email, alipayUserInfoShareResponseModel.email) &&
          Objects.equals(this.enrollmentTime, alipayUserInfoShareResponseModel.enrollmentTime) &&
          Objects.equals(this.entLicenseAddress, alipayUserInfoShareResponseModel.entLicenseAddress) &&
          Objects.equals(this.entLicenseArea, alipayUserInfoShareResponseModel.entLicenseArea) &&
          Objects.equals(this.entLicenseCity, alipayUserInfoShareResponseModel.entLicenseCity) &&
          Objects.equals(this.entLicenseProvince, alipayUserInfoShareResponseModel.entLicenseProvince) &&
          Objects.equals(this.firmAgentPersonCertExpiryDate, alipayUserInfoShareResponseModel.firmAgentPersonCertExpiryDate) &&
          Objects.equals(this.firmAgentPersonCertNo, alipayUserInfoShareResponseModel.firmAgentPersonCertNo) &&
          Objects.equals(this.firmAgentPersonCertType, alipayUserInfoShareResponseModel.firmAgentPersonCertType) &&
          Objects.equals(this.firmAgentPersonName, alipayUserInfoShareResponseModel.firmAgentPersonName) &&
          Objects.equals(this.firmLegalPersonCertExpiryDate, alipayUserInfoShareResponseModel.firmLegalPersonCertExpiryDate) &&
          Objects.equals(this.firmLegalPersonCertNo, alipayUserInfoShareResponseModel.firmLegalPersonCertNo) &&
          Objects.equals(this.firmLegalPersonCertType, alipayUserInfoShareResponseModel.firmLegalPersonCertType) &&
          Objects.equals(this.firmLegalPersonName, alipayUserInfoShareResponseModel.firmLegalPersonName) &&
          Objects.equals(this.firmLegalPersonPictures, alipayUserInfoShareResponseModel.firmLegalPersonPictures) &&
          Objects.equals(this.firmPictures, alipayUserInfoShareResponseModel.firmPictures) &&
          Objects.equals(this.firmType, alipayUserInfoShareResponseModel.firmType) &&
          Objects.equals(this.gender, alipayUserInfoShareResponseModel.gender) &&
          Objects.equals(this.graduationTime, alipayUserInfoShareResponseModel.graduationTime) &&
          Objects.equals(this.identityCardAddress, alipayUserInfoShareResponseModel.identityCardAddress) &&
          Objects.equals(this.identityCardArea, alipayUserInfoShareResponseModel.identityCardArea) &&
          Objects.equals(this.identityCardCity, alipayUserInfoShareResponseModel.identityCardCity) &&
          Objects.equals(this.identityCardProvince, alipayUserInfoShareResponseModel.identityCardProvince) &&
          Objects.equals(this.instOrCorp, alipayUserInfoShareResponseModel.instOrCorp) &&
          Objects.equals(this.isAdult, alipayUserInfoShareResponseModel.isAdult) &&
          Objects.equals(this.isBalanceFrozen, alipayUserInfoShareResponseModel.isBalanceFrozen) &&
          Objects.equals(this.isBlocked, alipayUserInfoShareResponseModel.isBlocked) &&
          Objects.equals(this.isCertified, alipayUserInfoShareResponseModel.isCertified) &&
          Objects.equals(this.isStudentCertified, alipayUserInfoShareResponseModel.isStudentCertified) &&
          Objects.equals(this.licenseExpiryDate, alipayUserInfoShareResponseModel.licenseExpiryDate) &&
          Objects.equals(this.licenseNo, alipayUserInfoShareResponseModel.licenseNo) &&
          Objects.equals(this.memberGrade, alipayUserInfoShareResponseModel.memberGrade) &&
          Objects.equals(this.mobile, alipayUserInfoShareResponseModel.mobile) &&
          Objects.equals(this.nickName, alipayUserInfoShareResponseModel.nickName) &&
          Objects.equals(this.openId, alipayUserInfoShareResponseModel.openId) &&
          Objects.equals(this.organizationCode, alipayUserInfoShareResponseModel.organizationCode) &&
          Objects.equals(this.personBirthday, alipayUserInfoShareResponseModel.personBirthday) &&
          Objects.equals(this.personBirthdayWithoutYear, alipayUserInfoShareResponseModel.personBirthdayWithoutYear) &&
          Objects.equals(this.personCertExpiryDate, alipayUserInfoShareResponseModel.personCertExpiryDate) &&
          Objects.equals(this.personCertIssueDate, alipayUserInfoShareResponseModel.personCertIssueDate) &&
          Objects.equals(this.personPictures, alipayUserInfoShareResponseModel.personPictures) &&
          Objects.equals(this.phone, alipayUserInfoShareResponseModel.phone) &&
          Objects.equals(this.profession, alipayUserInfoShareResponseModel.profession) &&
          Objects.equals(this.province, alipayUserInfoShareResponseModel.province) &&
          Objects.equals(this.taobaoId, alipayUserInfoShareResponseModel.taobaoId) &&
          Objects.equals(this.userId, alipayUserInfoShareResponseModel.userId) &&
          Objects.equals(this.userName, alipayUserInfoShareResponseModel.userName) &&
          Objects.equals(this.userNation, alipayUserInfoShareResponseModel.userNation) &&
          Objects.equals(this.userStatus, alipayUserInfoShareResponseModel.userStatus) &&
          Objects.equals(this.userType, alipayUserInfoShareResponseModel.userType) &&
          Objects.equals(this.zip, alipayUserInfoShareResponseModel.zip)&&
          Objects.equals(this.additionalProperties, alipayUserInfoShareResponseModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(address, age, area, avatar, businessScope, certNo, certType, city, collegeName, countryCode, degree, deliverAddresses, displayName, email, enrollmentTime, entLicenseAddress, entLicenseArea, entLicenseCity, entLicenseProvince, firmAgentPersonCertExpiryDate, firmAgentPersonCertNo, firmAgentPersonCertType, firmAgentPersonName, firmLegalPersonCertExpiryDate, firmLegalPersonCertNo, firmLegalPersonCertType, firmLegalPersonName, firmLegalPersonPictures, firmPictures, firmType, gender, graduationTime, identityCardAddress, identityCardArea, identityCardCity, identityCardProvince, instOrCorp, isAdult, isBalanceFrozen, isBlocked, isCertified, isStudentCertified, licenseExpiryDate, licenseNo, memberGrade, mobile, nickName, openId, organizationCode, personBirthday, personBirthdayWithoutYear, personCertExpiryDate, personCertIssueDate, personPictures, phone, profession, province, taobaoId, userId, userName, userNation, userStatus, userType, zip, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AlipayUserInfoShareResponseModel {\n");
      sb.append("    address: ").append(toIndentedString(address)).append("\n");
      sb.append("    age: ").append(toIndentedString(age)).append("\n");
      sb.append("    area: ").append(toIndentedString(area)).append("\n");
      sb.append("    avatar: ").append(toIndentedString(avatar)).append("\n");
      sb.append("    businessScope: ").append(toIndentedString(businessScope)).append("\n");
      sb.append("    certNo: ").append(toIndentedString(certNo)).append("\n");
      sb.append("    certType: ").append(toIndentedString(certType)).append("\n");
      sb.append("    city: ").append(toIndentedString(city)).append("\n");
      sb.append("    collegeName: ").append(toIndentedString(collegeName)).append("\n");
      sb.append("    countryCode: ").append(toIndentedString(countryCode)).append("\n");
      sb.append("    degree: ").append(toIndentedString(degree)).append("\n");
      sb.append("    deliverAddresses: ").append(toIndentedString(deliverAddresses)).append("\n");
      sb.append("    displayName: ").append(toIndentedString(displayName)).append("\n");
      sb.append("    email: ").append(toIndentedString(email)).append("\n");
      sb.append("    enrollmentTime: ").append(toIndentedString(enrollmentTime)).append("\n");
      sb.append("    entLicenseAddress: ").append(toIndentedString(entLicenseAddress)).append("\n");
      sb.append("    entLicenseArea: ").append(toIndentedString(entLicenseArea)).append("\n");
      sb.append("    entLicenseCity: ").append(toIndentedString(entLicenseCity)).append("\n");
      sb.append("    entLicenseProvince: ").append(toIndentedString(entLicenseProvince)).append("\n");
      sb.append("    firmAgentPersonCertExpiryDate: ").append(toIndentedString(firmAgentPersonCertExpiryDate)).append("\n");
      sb.append("    firmAgentPersonCertNo: ").append(toIndentedString(firmAgentPersonCertNo)).append("\n");
      sb.append("    firmAgentPersonCertType: ").append(toIndentedString(firmAgentPersonCertType)).append("\n");
      sb.append("    firmAgentPersonName: ").append(toIndentedString(firmAgentPersonName)).append("\n");
      sb.append("    firmLegalPersonCertExpiryDate: ").append(toIndentedString(firmLegalPersonCertExpiryDate)).append("\n");
      sb.append("    firmLegalPersonCertNo: ").append(toIndentedString(firmLegalPersonCertNo)).append("\n");
      sb.append("    firmLegalPersonCertType: ").append(toIndentedString(firmLegalPersonCertType)).append("\n");
      sb.append("    firmLegalPersonName: ").append(toIndentedString(firmLegalPersonName)).append("\n");
      sb.append("    firmLegalPersonPictures: ").append(toIndentedString(firmLegalPersonPictures)).append("\n");
      sb.append("    firmPictures: ").append(toIndentedString(firmPictures)).append("\n");
      sb.append("    firmType: ").append(toIndentedString(firmType)).append("\n");
      sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
      sb.append("    graduationTime: ").append(toIndentedString(graduationTime)).append("\n");
      sb.append("    identityCardAddress: ").append(toIndentedString(identityCardAddress)).append("\n");
      sb.append("    identityCardArea: ").append(toIndentedString(identityCardArea)).append("\n");
      sb.append("    identityCardCity: ").append(toIndentedString(identityCardCity)).append("\n");
      sb.append("    identityCardProvince: ").append(toIndentedString(identityCardProvince)).append("\n");
      sb.append("    instOrCorp: ").append(toIndentedString(instOrCorp)).append("\n");
      sb.append("    isAdult: ").append(toIndentedString(isAdult)).append("\n");
      sb.append("    isBalanceFrozen: ").append(toIndentedString(isBalanceFrozen)).append("\n");
      sb.append("    isBlocked: ").append(toIndentedString(isBlocked)).append("\n");
      sb.append("    isCertified: ").append(toIndentedString(isCertified)).append("\n");
      sb.append("    isStudentCertified: ").append(toIndentedString(isStudentCertified)).append("\n");
      sb.append("    licenseExpiryDate: ").append(toIndentedString(licenseExpiryDate)).append("\n");
      sb.append("    licenseNo: ").append(toIndentedString(licenseNo)).append("\n");
      sb.append("    memberGrade: ").append(toIndentedString(memberGrade)).append("\n");
      sb.append("    mobile: ").append(toIndentedString(mobile)).append("\n");
      sb.append("    nickName: ").append(toIndentedString(nickName)).append("\n");
      sb.append("    openId: ").append(toIndentedString(openId)).append("\n");
      sb.append("    organizationCode: ").append(toIndentedString(organizationCode)).append("\n");
      sb.append("    personBirthday: ").append(toIndentedString(personBirthday)).append("\n");
      sb.append("    personBirthdayWithoutYear: ").append(toIndentedString(personBirthdayWithoutYear)).append("\n");
      sb.append("    personCertExpiryDate: ").append(toIndentedString(personCertExpiryDate)).append("\n");
      sb.append("    personCertIssueDate: ").append(toIndentedString(personCertIssueDate)).append("\n");
      sb.append("    personPictures: ").append(toIndentedString(personPictures)).append("\n");
      sb.append("    phone: ").append(toIndentedString(phone)).append("\n");
      sb.append("    profession: ").append(toIndentedString(profession)).append("\n");
      sb.append("    province: ").append(toIndentedString(province)).append("\n");
      sb.append("    taobaoId: ").append(toIndentedString(taobaoId)).append("\n");
      sb.append("    userId: ").append(toIndentedString(userId)).append("\n");
      sb.append("    userName: ").append(toIndentedString(userName)).append("\n");
      sb.append("    userNation: ").append(toIndentedString(userNation)).append("\n");
      sb.append("    userStatus: ").append(toIndentedString(userStatus)).append("\n");
      sb.append("    userType: ").append(toIndentedString(userType)).append("\n");
      sb.append("    zip: ").append(toIndentedString(zip)).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("address");
      openapiFields.add("age");
      openapiFields.add("area");
      openapiFields.add("avatar");
      openapiFields.add("business_scope");
      openapiFields.add("cert_no");
      openapiFields.add("cert_type");
      openapiFields.add("city");
      openapiFields.add("college_name");
      openapiFields.add("country_code");
      openapiFields.add("degree");
      openapiFields.add("deliver_addresses");
      openapiFields.add("display_name");
      openapiFields.add("email");
      openapiFields.add("enrollment_time");
      openapiFields.add("ent_license_address");
      openapiFields.add("ent_license_area");
      openapiFields.add("ent_license_city");
      openapiFields.add("ent_license_province");
      openapiFields.add("firm_agent_person_cert_expiry_date");
      openapiFields.add("firm_agent_person_cert_no");
      openapiFields.add("firm_agent_person_cert_type");
      openapiFields.add("firm_agent_person_name");
      openapiFields.add("firm_legal_person_cert_expiry_date");
      openapiFields.add("firm_legal_person_cert_no");
      openapiFields.add("firm_legal_person_cert_type");
      openapiFields.add("firm_legal_person_name");
      openapiFields.add("firm_legal_person_pictures");
      openapiFields.add("firm_pictures");
      openapiFields.add("firm_type");
      openapiFields.add("gender");
      openapiFields.add("graduation_time");
      openapiFields.add("identity_card_address");
      openapiFields.add("identity_card_area");
      openapiFields.add("identity_card_city");
      openapiFields.add("identity_card_province");
      openapiFields.add("inst_or_corp");
      openapiFields.add("is_adult");
      openapiFields.add("is_balance_frozen");
      openapiFields.add("is_blocked");
      openapiFields.add("is_certified");
      openapiFields.add("is_student_certified");
      openapiFields.add("license_expiry_date");
      openapiFields.add("license_no");
      openapiFields.add("member_grade");
      openapiFields.add("mobile");
      openapiFields.add("nick_name");
      openapiFields.add("open_id");
      openapiFields.add("organization_code");
      openapiFields.add("person_birthday");
      openapiFields.add("person_birthday_without_year");
      openapiFields.add("person_cert_expiry_date");
      openapiFields.add("person_cert_issue_date");
      openapiFields.add("person_pictures");
      openapiFields.add("phone");
      openapiFields.add("profession");
      openapiFields.add("province");
      openapiFields.add("taobao_id");
      openapiFields.add("user_id");
      openapiFields.add("user_name");
      openapiFields.add("user_nation");
      openapiFields.add("user_status");
      openapiFields.add("user_type");
      openapiFields.add("zip");
  
      // 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 AlipayUserInfoShareResponseModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AlipayUserInfoShareResponseModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AlipayUserInfoShareResponseModel is not found in the empty JSON string", AlipayUserInfoShareResponseModel.openapiRequiredFields.toString()));
          }
        }
        if (jsonObj.get("address") != null && !jsonObj.get("address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("address").toString()));
        }
        if (jsonObj.get("age") != null && !jsonObj.get("age").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `age` to be a primitive type in the JSON string but got `%s`", jsonObj.get("age").toString()));
        }
        if (jsonObj.get("area") != null && !jsonObj.get("area").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `area` to be a primitive type in the JSON string but got `%s`", jsonObj.get("area").toString()));
        }
        if (jsonObj.get("avatar") != null && !jsonObj.get("avatar").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `avatar` to be a primitive type in the JSON string but got `%s`", jsonObj.get("avatar").toString()));
        }
        if (jsonObj.get("business_scope") != null && !jsonObj.get("business_scope").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `business_scope` to be a primitive type in the JSON string but got `%s`", jsonObj.get("business_scope").toString()));
        }
        if (jsonObj.get("cert_no") != null && !jsonObj.get("cert_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_no").toString()));
        }
        if (jsonObj.get("cert_type") != null && !jsonObj.get("cert_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_type").toString()));
        }
        if (jsonObj.get("city") != null && !jsonObj.get("city").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `city` to be a primitive type in the JSON string but got `%s`", jsonObj.get("city").toString()));
        }
        if (jsonObj.get("college_name") != null && !jsonObj.get("college_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `college_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("college_name").toString()));
        }
        if (jsonObj.get("country_code") != null && !jsonObj.get("country_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `country_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("country_code").toString()));
        }
        if (jsonObj.get("degree") != null && !jsonObj.get("degree").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `degree` to be a primitive type in the JSON string but got `%s`", jsonObj.get("degree").toString()));
        }
        JsonArray jsonArraydeliverAddresses = jsonObj.getAsJsonArray("deliver_addresses");
        if (jsonArraydeliverAddresses != null) {
          // ensure the json data is an array
          if (!jsonObj.get("deliver_addresses").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `deliver_addresses` to be an array in the JSON string but got `%s`", jsonObj.get("deliver_addresses").toString()));
          }
  
          // validate the optional field `deliver_addresses` (array)
          for (int i = 0; i < jsonArraydeliverAddresses.size(); i++) {
            AlipayUserDeliverAddress.validateJsonObject(jsonArraydeliverAddresses.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("display_name") != null && !jsonObj.get("display_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `display_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("display_name").toString()));
        }
        if (jsonObj.get("email") != null && !jsonObj.get("email").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `email` to be a primitive type in the JSON string but got `%s`", jsonObj.get("email").toString()));
        }
        if (jsonObj.get("enrollment_time") != null && !jsonObj.get("enrollment_time").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `enrollment_time` to be a primitive type in the JSON string but got `%s`", jsonObj.get("enrollment_time").toString()));
        }
        if (jsonObj.get("ent_license_address") != null && !jsonObj.get("ent_license_address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `ent_license_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ent_license_address").toString()));
        }
        if (jsonObj.get("ent_license_area") != null && !jsonObj.get("ent_license_area").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `ent_license_area` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ent_license_area").toString()));
        }
        if (jsonObj.get("ent_license_city") != null && !jsonObj.get("ent_license_city").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `ent_license_city` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ent_license_city").toString()));
        }
        if (jsonObj.get("ent_license_province") != null && !jsonObj.get("ent_license_province").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `ent_license_province` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ent_license_province").toString()));
        }
        if (jsonObj.get("firm_agent_person_cert_expiry_date") != null && !jsonObj.get("firm_agent_person_cert_expiry_date").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_agent_person_cert_expiry_date` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_agent_person_cert_expiry_date").toString()));
        }
        if (jsonObj.get("firm_agent_person_cert_no") != null && !jsonObj.get("firm_agent_person_cert_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_agent_person_cert_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_agent_person_cert_no").toString()));
        }
        if (jsonObj.get("firm_agent_person_cert_type") != null && !jsonObj.get("firm_agent_person_cert_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_agent_person_cert_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_agent_person_cert_type").toString()));
        }
        if (jsonObj.get("firm_agent_person_name") != null && !jsonObj.get("firm_agent_person_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_agent_person_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_agent_person_name").toString()));
        }
        if (jsonObj.get("firm_legal_person_cert_expiry_date") != null && !jsonObj.get("firm_legal_person_cert_expiry_date").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_legal_person_cert_expiry_date` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_legal_person_cert_expiry_date").toString()));
        }
        if (jsonObj.get("firm_legal_person_cert_no") != null && !jsonObj.get("firm_legal_person_cert_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_legal_person_cert_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_legal_person_cert_no").toString()));
        }
        if (jsonObj.get("firm_legal_person_cert_type") != null && !jsonObj.get("firm_legal_person_cert_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_legal_person_cert_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_legal_person_cert_type").toString()));
        }
        if (jsonObj.get("firm_legal_person_name") != null && !jsonObj.get("firm_legal_person_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_legal_person_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_legal_person_name").toString()));
        }
        JsonArray jsonArrayfirmLegalPersonPictures = jsonObj.getAsJsonArray("firm_legal_person_pictures");
        if (jsonArrayfirmLegalPersonPictures != null) {
          // ensure the json data is an array
          if (!jsonObj.get("firm_legal_person_pictures").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `firm_legal_person_pictures` to be an array in the JSON string but got `%s`", jsonObj.get("firm_legal_person_pictures").toString()));
          }
  
          // validate the optional field `firm_legal_person_pictures` (array)
          for (int i = 0; i < jsonArrayfirmLegalPersonPictures.size(); i++) {
            AlipayUserPicture.validateJsonObject(jsonArrayfirmLegalPersonPictures.get(i).getAsJsonObject());
          };
        }
        JsonArray jsonArrayfirmPictures = jsonObj.getAsJsonArray("firm_pictures");
        if (jsonArrayfirmPictures != null) {
          // ensure the json data is an array
          if (!jsonObj.get("firm_pictures").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `firm_pictures` to be an array in the JSON string but got `%s`", jsonObj.get("firm_pictures").toString()));
          }
  
          // validate the optional field `firm_pictures` (array)
          for (int i = 0; i < jsonArrayfirmPictures.size(); i++) {
            AlipayUserPicture.validateJsonObject(jsonArrayfirmPictures.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("firm_type") != null && !jsonObj.get("firm_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_type").toString()));
        }
        if (jsonObj.get("gender") != null && !jsonObj.get("gender").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `gender` to be a primitive type in the JSON string but got `%s`", jsonObj.get("gender").toString()));
        }
        if (jsonObj.get("graduation_time") != null && !jsonObj.get("graduation_time").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `graduation_time` to be a primitive type in the JSON string but got `%s`", jsonObj.get("graduation_time").toString()));
        }
        if (jsonObj.get("identity_card_address") != null && !jsonObj.get("identity_card_address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `identity_card_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("identity_card_address").toString()));
        }
        if (jsonObj.get("identity_card_area") != null && !jsonObj.get("identity_card_area").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `identity_card_area` to be a primitive type in the JSON string but got `%s`", jsonObj.get("identity_card_area").toString()));
        }
        if (jsonObj.get("identity_card_city") != null && !jsonObj.get("identity_card_city").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `identity_card_city` to be a primitive type in the JSON string but got `%s`", jsonObj.get("identity_card_city").toString()));
        }
        if (jsonObj.get("identity_card_province") != null && !jsonObj.get("identity_card_province").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `identity_card_province` to be a primitive type in the JSON string but got `%s`", jsonObj.get("identity_card_province").toString()));
        }
        if (jsonObj.get("inst_or_corp") != null && !jsonObj.get("inst_or_corp").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `inst_or_corp` to be a primitive type in the JSON string but got `%s`", jsonObj.get("inst_or_corp").toString()));
        }
        if (jsonObj.get("is_adult") != null && !jsonObj.get("is_adult").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_adult` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_adult").toString()));
        }
        if (jsonObj.get("is_balance_frozen") != null && !jsonObj.get("is_balance_frozen").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_balance_frozen` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_balance_frozen").toString()));
        }
        if (jsonObj.get("is_blocked") != null && !jsonObj.get("is_blocked").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_blocked` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_blocked").toString()));
        }
        if (jsonObj.get("is_certified") != null && !jsonObj.get("is_certified").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_certified` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_certified").toString()));
        }
        if (jsonObj.get("is_student_certified") != null && !jsonObj.get("is_student_certified").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_student_certified` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_student_certified").toString()));
        }
        if (jsonObj.get("license_expiry_date") != null && !jsonObj.get("license_expiry_date").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `license_expiry_date` to be a primitive type in the JSON string but got `%s`", jsonObj.get("license_expiry_date").toString()));
        }
        if (jsonObj.get("license_no") != null && !jsonObj.get("license_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `license_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("license_no").toString()));
        }
        if (jsonObj.get("member_grade") != null && !jsonObj.get("member_grade").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `member_grade` to be a primitive type in the JSON string but got `%s`", jsonObj.get("member_grade").toString()));
        }
        if (jsonObj.get("mobile") != null && !jsonObj.get("mobile").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mobile` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mobile").toString()));
        }
        if (jsonObj.get("nick_name") != null && !jsonObj.get("nick_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `nick_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("nick_name").toString()));
        }
        if (jsonObj.get("open_id") != null && !jsonObj.get("open_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `open_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("open_id").toString()));
        }
        if (jsonObj.get("organization_code") != null && !jsonObj.get("organization_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `organization_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("organization_code").toString()));
        }
        if (jsonObj.get("person_birthday") != null && !jsonObj.get("person_birthday").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `person_birthday` to be a primitive type in the JSON string but got `%s`", jsonObj.get("person_birthday").toString()));
        }
        if (jsonObj.get("person_birthday_without_year") != null && !jsonObj.get("person_birthday_without_year").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `person_birthday_without_year` to be a primitive type in the JSON string but got `%s`", jsonObj.get("person_birthday_without_year").toString()));
        }
        if (jsonObj.get("person_cert_expiry_date") != null && !jsonObj.get("person_cert_expiry_date").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `person_cert_expiry_date` to be a primitive type in the JSON string but got `%s`", jsonObj.get("person_cert_expiry_date").toString()));
        }
        if (jsonObj.get("person_cert_issue_date") != null && !jsonObj.get("person_cert_issue_date").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `person_cert_issue_date` to be a primitive type in the JSON string but got `%s`", jsonObj.get("person_cert_issue_date").toString()));
        }
        JsonArray jsonArraypersonPictures = jsonObj.getAsJsonArray("person_pictures");
        if (jsonArraypersonPictures != null) {
          // ensure the json data is an array
          if (!jsonObj.get("person_pictures").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `person_pictures` to be an array in the JSON string but got `%s`", jsonObj.get("person_pictures").toString()));
          }
  
          // validate the optional field `person_pictures` (array)
          for (int i = 0; i < jsonArraypersonPictures.size(); i++) {
            AlipayUserPicture.validateJsonObject(jsonArraypersonPictures.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("phone") != null && !jsonObj.get("phone").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `phone` to be a primitive type in the JSON string but got `%s`", jsonObj.get("phone").toString()));
        }
        if (jsonObj.get("profession") != null && !jsonObj.get("profession").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `profession` to be a primitive type in the JSON string but got `%s`", jsonObj.get("profession").toString()));
        }
        if (jsonObj.get("province") != null && !jsonObj.get("province").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `province` to be a primitive type in the JSON string but got `%s`", jsonObj.get("province").toString()));
        }
        if (jsonObj.get("taobao_id") != null && !jsonObj.get("taobao_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `taobao_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("taobao_id").toString()));
        }
        if (jsonObj.get("user_id") != null && !jsonObj.get("user_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_id").toString()));
        }
        if (jsonObj.get("user_name") != null && !jsonObj.get("user_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_name").toString()));
        }
        if (jsonObj.get("user_nation") != null && !jsonObj.get("user_nation").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_nation` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_nation").toString()));
        }
        if (jsonObj.get("user_status") != null && !jsonObj.get("user_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_status").toString()));
        }
        if (jsonObj.get("user_type") != null && !jsonObj.get("user_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_type").toString()));
        }
        if (jsonObj.get("zip") != null && !jsonObj.get("zip").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `zip` to be a primitive type in the JSON string but got `%s`", jsonObj.get("zip").toString()));
        }
    }
  
    public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
      @SuppressWarnings("unchecked")
      @Override
      public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
         if (!AlipayUserInfoShareResponseModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AlipayUserInfoShareResponseModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AlipayUserInfoShareResponseModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AlipayUserInfoShareResponseModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AlipayUserInfoShareResponseModel>() {
             @Override
             public void write(JsonWriter out, AlipayUserInfoShareResponseModel 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 AlipayUserInfoShareResponseModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AlipayUserInfoShareResponseModel 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 { // non-primitive type
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
                   }
                 }
               }
               return instance;
             }
  
         }.nullSafe();
      }
    }
  
   /**
    * Create an instance of AlipayUserInfoShareResponseModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AlipayUserInfoShareResponseModel
    * @throws IOException if the JSON string is invalid with respect to AlipayUserInfoShareResponseModel
    */
    public static AlipayUserInfoShareResponseModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AlipayUserInfoShareResponseModel.class);
    }
  
   /**
    * Convert an instance of AlipayUserInfoShareResponseModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  