Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
179 / 179
100.00% covered (success)
100.00%
87 / 87
CRAP
100.00% covered (success)
100.00%
1 / 1
RawDeviceAttributes
100.00% covered (success)
100.00%
179 / 179
100.00% covered (success)
100.00%
87 / 87
107
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
33 / 33
100.00% covered (success)
100.00%
1 / 1
1
 __toString
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 openAPITypes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 openAPIFormats
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isNullable
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isNullableSetToNull
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 attributeMap
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setters
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getters
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getModelName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 listInvalidProperties
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
11
 valid
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getFontPreferences
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFontPreferences
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getEmoji
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setEmoji
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getFonts
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFonts
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getDeviceMemory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeviceMemory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 getTimezone
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTimezone
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getCanvas
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setCanvas
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLanguages
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLanguages
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getWebglExtensions
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setWebglExtensions
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getWebglBasics
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setWebglBasics
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getScreenResolution
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setScreenResolution
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 getTouchSupport
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTouchSupport
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getOscpu
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOscpu
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getArchitecture
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setArchitecture
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getCookiesEnabled
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setCookiesEnabled
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getHardwareConcurrency
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setHardwareConcurrency
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getDateTimeLocale
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDateTimeLocale
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getVendor
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVendor
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getColorDepth
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setColorDepth
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getPlatform
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setPlatform
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getSessionStorage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSessionStorage
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLocalStorage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLocalStorage
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getAudio
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setAudio
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getPlugins
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setPlugins
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getIndexedDb
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIndexedDb
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getMath
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setMath
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getDeviceModel
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeviceModel
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getDeviceManufacturer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeviceManufacturer
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getFontHash
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFontHash
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getTimezoneOffset
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTimezoneOffset
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getBatteryLevel
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBatteryLevel
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 getBatteryCharging
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBatteryCharging
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getBatteryLowPowerMode
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBatteryLowPowerMode
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getKeyboardLayoutHash
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setKeyboardLayoutHash
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 offsetExists
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetGet
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetSet
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 offsetUnset
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 jsonSerialize
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toHeaderValue
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 openAPINullables
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOpenAPINullablesSetToNull
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOpenAPINullablesSetToNull
n/a
0 / 0
n/a
0 / 0
1
 setIfExists
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2
3/**
4 * RawDeviceAttributes.
5 *
6 * @category Class
7 *
8 * @author   Fingerprint
9 *
10 * @see      https://fingerprint.com
11 */
12
13/**
14 * Server API.
15 *
16 * Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts.
17 *
18 * The version of the OpenAPI document: 4
19 * Contact: support@fingerprint.com
20 * Generated by: https://openapi-generator.tech
21 * Generator version: 7.23.0
22 */
23
24/**
25 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
26 * https://openapi-generator.tech
27 * Do not edit the class manually.
28 */
29
30namespace Fingerprint\ServerSdk\Model;
31
32use Fingerprint\ServerSdk\ObjectSerializer;
33
34/**
35 * A curated subset of raw browser/device attributes that the API surface exposes. Each property contains a value or object with the data for the collected signal.
36 *
37 * @category Class
38 *
39 * @description A curated subset of raw browser/device attributes that the API surface exposes. Each property contains a value or object with the data for the collected signal.
40 *
41 * @author   Fingerprint
42 *
43 * @see      https://fingerprint.com
44 *
45 * @implements \ArrayAccess<string, mixed>
46 *
47 * @noinspection GrazieInspection
48 * @noinspection RedundantSuppression
49 */
50class RawDeviceAttributes implements ModelInterface, \ArrayAccess, \JsonSerializable
51{
52    public const DISCRIMINATOR = null;
53
54    /**
55     * The original name of the model.
56     *
57     */
58    protected static string $openAPIModelName = 'RawDeviceAttributes';
59
60    /**
61     * Array of property to type mappings. Used for (de)serialization.
62     *
63     * @var string[]
64     */
65    protected static array $openAPITypes = [
66        'font_preferences' => '\Fingerprint\ServerSdk\Model\FontPreferences',
67        'emoji' => '\Fingerprint\ServerSdk\Model\Emoji',
68        'fonts' => 'string[]',
69        'device_memory' => 'int',
70        'timezone' => 'string',
71        'canvas' => '\Fingerprint\ServerSdk\Model\Canvas',
72        'languages' => 'string[][]',
73        'webgl_extensions' => '\Fingerprint\ServerSdk\Model\WebGlExtensions',
74        'webgl_basics' => '\Fingerprint\ServerSdk\Model\WebGlBasics',
75        'screen_resolution' => 'int[]',
76        'touch_support' => '\Fingerprint\ServerSdk\Model\TouchSupport',
77        'oscpu' => 'string',
78        'architecture' => 'int',
79        'cookies_enabled' => 'bool',
80        'hardware_concurrency' => 'int',
81        'date_time_locale' => 'string',
82        'vendor' => 'string',
83        'color_depth' => 'int',
84        'platform' => 'string',
85        'session_storage' => 'bool',
86        'local_storage' => 'bool',
87        'audio' => 'float',
88        'plugins' => '\Fingerprint\ServerSdk\Model\PluginsInner[]',
89        'indexed_db' => 'bool',
90        'math' => 'string',
91        'device_model' => 'string',
92        'device_manufacturer' => 'string',
93        'font_hash' => 'string',
94        'timezone_offset' => 'string',
95        'battery_level' => 'int',
96        'battery_charging' => 'bool',
97        'battery_low_power_mode' => 'bool',
98        'keyboard_layout_hash' => 'string',
99    ];
100
101    /**
102     * Array of property to format mappings. Used for (de)serialization.
103     *
104     * @var string[]
105     *
106     * @phpstan-var array<string, string|null>
107     *
108     * @psalm-var array<string, string|null>
109     */
110    protected static array $openAPIFormats = [
111        'font_preferences' => null,
112        'emoji' => null,
113        'fonts' => null,
114        'device_memory' => 'int32',
115        'timezone' => null,
116        'canvas' => null,
117        'languages' => null,
118        'webgl_extensions' => null,
119        'webgl_basics' => null,
120        'screen_resolution' => 'int32',
121        'touch_support' => null,
122        'oscpu' => null,
123        'architecture' => 'int32',
124        'cookies_enabled' => null,
125        'hardware_concurrency' => 'int32',
126        'date_time_locale' => null,
127        'vendor' => null,
128        'color_depth' => 'int32',
129        'platform' => null,
130        'session_storage' => null,
131        'local_storage' => null,
132        'audio' => 'double',
133        'plugins' => null,
134        'indexed_db' => null,
135        'math' => null,
136        'device_model' => null,
137        'device_manufacturer' => null,
138        'font_hash' => null,
139        'timezone_offset' => null,
140        'battery_level' => 'int32',
141        'battery_charging' => null,
142        'battery_low_power_mode' => null,
143        'keyboard_layout_hash' => null,
144    ];
145
146    /**
147     * Array of nullable properties. Used for (de)serialization.
148     *
149     * @var bool[]
150     */
151    protected static array $openAPINullables = [
152        'font_preferences' => false,
153        'emoji' => false,
154        'fonts' => false,
155        'device_memory' => false,
156        'timezone' => false,
157        'canvas' => false,
158        'languages' => false,
159        'webgl_extensions' => false,
160        'webgl_basics' => false,
161        'screen_resolution' => false,
162        'touch_support' => false,
163        'oscpu' => false,
164        'architecture' => false,
165        'cookies_enabled' => false,
166        'hardware_concurrency' => false,
167        'date_time_locale' => false,
168        'vendor' => false,
169        'color_depth' => false,
170        'platform' => false,
171        'session_storage' => false,
172        'local_storage' => false,
173        'audio' => false,
174        'plugins' => false,
175        'indexed_db' => false,
176        'math' => false,
177        'device_model' => false,
178        'device_manufacturer' => false,
179        'font_hash' => false,
180        'timezone_offset' => false,
181        'battery_level' => false,
182        'battery_charging' => false,
183        'battery_low_power_mode' => false,
184        'keyboard_layout_hash' => false,
185    ];
186
187    /**
188     * If a nullable field gets set to null, insert it here.
189     *
190     * @var bool[]
191     */
192    protected array $openAPINullablesSetToNull = [];
193
194    /**
195     * Array of attributes where the key is the local name,
196     * and the value is the original name.
197     *
198     * @var string[]
199     */
200    protected static array $attributeMap = [
201        'font_preferences' => 'font_preferences',
202        'emoji' => 'emoji',
203        'fonts' => 'fonts',
204        'device_memory' => 'device_memory',
205        'timezone' => 'timezone',
206        'canvas' => 'canvas',
207        'languages' => 'languages',
208        'webgl_extensions' => 'webgl_extensions',
209        'webgl_basics' => 'webgl_basics',
210        'screen_resolution' => 'screen_resolution',
211        'touch_support' => 'touch_support',
212        'oscpu' => 'oscpu',
213        'architecture' => 'architecture',
214        'cookies_enabled' => 'cookies_enabled',
215        'hardware_concurrency' => 'hardware_concurrency',
216        'date_time_locale' => 'date_time_locale',
217        'vendor' => 'vendor',
218        'color_depth' => 'color_depth',
219        'platform' => 'platform',
220        'session_storage' => 'session_storage',
221        'local_storage' => 'local_storage',
222        'audio' => 'audio',
223        'plugins' => 'plugins',
224        'indexed_db' => 'indexed_db',
225        'math' => 'math',
226        'device_model' => 'device_model',
227        'device_manufacturer' => 'device_manufacturer',
228        'font_hash' => 'font_hash',
229        'timezone_offset' => 'timezone_offset',
230        'battery_level' => 'battery_level',
231        'battery_charging' => 'battery_charging',
232        'battery_low_power_mode' => 'battery_low_power_mode',
233        'keyboard_layout_hash' => 'keyboard_layout_hash',
234    ];
235
236    /**
237     * Array of attributes to setter functions (for deserialization of responses).
238     *
239     * @var string[]
240     */
241    protected static array $setters = [
242        'font_preferences' => 'setFontPreferences',
243        'emoji' => 'setEmoji',
244        'fonts' => 'setFonts',
245        'device_memory' => 'setDeviceMemory',
246        'timezone' => 'setTimezone',
247        'canvas' => 'setCanvas',
248        'languages' => 'setLanguages',
249        'webgl_extensions' => 'setWebglExtensions',
250        'webgl_basics' => 'setWebglBasics',
251        'screen_resolution' => 'setScreenResolution',
252        'touch_support' => 'setTouchSupport',
253        'oscpu' => 'setOscpu',
254        'architecture' => 'setArchitecture',
255        'cookies_enabled' => 'setCookiesEnabled',
256        'hardware_concurrency' => 'setHardwareConcurrency',
257        'date_time_locale' => 'setDateTimeLocale',
258        'vendor' => 'setVendor',
259        'color_depth' => 'setColorDepth',
260        'platform' => 'setPlatform',
261        'session_storage' => 'setSessionStorage',
262        'local_storage' => 'setLocalStorage',
263        'audio' => 'setAudio',
264        'plugins' => 'setPlugins',
265        'indexed_db' => 'setIndexedDb',
266        'math' => 'setMath',
267        'device_model' => 'setDeviceModel',
268        'device_manufacturer' => 'setDeviceManufacturer',
269        'font_hash' => 'setFontHash',
270        'timezone_offset' => 'setTimezoneOffset',
271        'battery_level' => 'setBatteryLevel',
272        'battery_charging' => 'setBatteryCharging',
273        'battery_low_power_mode' => 'setBatteryLowPowerMode',
274        'keyboard_layout_hash' => 'setKeyboardLayoutHash',
275    ];
276
277    /**
278     * Array of attributes to getter functions (for serialization of requests).
279     *
280     * @var string[]
281     */
282    protected static array $getters = [
283        'font_preferences' => 'getFontPreferences',
284        'emoji' => 'getEmoji',
285        'fonts' => 'getFonts',
286        'device_memory' => 'getDeviceMemory',
287        'timezone' => 'getTimezone',
288        'canvas' => 'getCanvas',
289        'languages' => 'getLanguages',
290        'webgl_extensions' => 'getWebglExtensions',
291        'webgl_basics' => 'getWebglBasics',
292        'screen_resolution' => 'getScreenResolution',
293        'touch_support' => 'getTouchSupport',
294        'oscpu' => 'getOscpu',
295        'architecture' => 'getArchitecture',
296        'cookies_enabled' => 'getCookiesEnabled',
297        'hardware_concurrency' => 'getHardwareConcurrency',
298        'date_time_locale' => 'getDateTimeLocale',
299        'vendor' => 'getVendor',
300        'color_depth' => 'getColorDepth',
301        'platform' => 'getPlatform',
302        'session_storage' => 'getSessionStorage',
303        'local_storage' => 'getLocalStorage',
304        'audio' => 'getAudio',
305        'plugins' => 'getPlugins',
306        'indexed_db' => 'getIndexedDb',
307        'math' => 'getMath',
308        'device_model' => 'getDeviceModel',
309        'device_manufacturer' => 'getDeviceManufacturer',
310        'font_hash' => 'getFontHash',
311        'timezone_offset' => 'getTimezoneOffset',
312        'battery_level' => 'getBatteryLevel',
313        'battery_charging' => 'getBatteryCharging',
314        'battery_low_power_mode' => 'getBatteryLowPowerMode',
315        'keyboard_layout_hash' => 'getKeyboardLayoutHash',
316    ];
317
318    /**
319     * Associative array for storing property values.
320     */
321    protected array $container = [];
322
323    /**
324     * Constructor.
325     *
326     * @param array|null $data Associated array of property values
327     *                         initializing the model
328     *
329     * @noinspection DuplicatedCode
330     */
331    public function __construct(?array $data = null)
332    {
333        $this->setIfExists('font_preferences', $data ?? [], null);
334        $this->setIfExists('emoji', $data ?? [], null);
335        $this->setIfExists('fonts', $data ?? [], null);
336        $this->setIfExists('device_memory', $data ?? [], null);
337        $this->setIfExists('timezone', $data ?? [], null);
338        $this->setIfExists('canvas', $data ?? [], null);
339        $this->setIfExists('languages', $data ?? [], null);
340        $this->setIfExists('webgl_extensions', $data ?? [], null);
341        $this->setIfExists('webgl_basics', $data ?? [], null);
342        $this->setIfExists('screen_resolution', $data ?? [], null);
343        $this->setIfExists('touch_support', $data ?? [], null);
344        $this->setIfExists('oscpu', $data ?? [], null);
345        $this->setIfExists('architecture', $data ?? [], null);
346        $this->setIfExists('cookies_enabled', $data ?? [], null);
347        $this->setIfExists('hardware_concurrency', $data ?? [], null);
348        $this->setIfExists('date_time_locale', $data ?? [], null);
349        $this->setIfExists('vendor', $data ?? [], null);
350        $this->setIfExists('color_depth', $data ?? [], null);
351        $this->setIfExists('platform', $data ?? [], null);
352        $this->setIfExists('session_storage', $data ?? [], null);
353        $this->setIfExists('local_storage', $data ?? [], null);
354        $this->setIfExists('audio', $data ?? [], null);
355        $this->setIfExists('plugins', $data ?? [], null);
356        $this->setIfExists('indexed_db', $data ?? [], null);
357        $this->setIfExists('math', $data ?? [], null);
358        $this->setIfExists('device_model', $data ?? [], null);
359        $this->setIfExists('device_manufacturer', $data ?? [], null);
360        $this->setIfExists('font_hash', $data ?? [], null);
361        $this->setIfExists('timezone_offset', $data ?? [], null);
362        $this->setIfExists('battery_level', $data ?? [], null);
363        $this->setIfExists('battery_charging', $data ?? [], null);
364        $this->setIfExists('battery_low_power_mode', $data ?? [], null);
365        $this->setIfExists('keyboard_layout_hash', $data ?? [], null);
366    }
367
368    /**
369     * Gets the string presentation of the object.
370     *
371     */
372    public function __toString(): string
373    {
374        return json_encode(
375            ObjectSerializer::sanitizeForSerialization($this),
376            JSON_PRETTY_PRINT
377        );
378    }
379
380    /**
381     * Array of property to type mappings. Used for (de)serialization.
382     *
383     */
384    public static function openAPITypes(): array
385    {
386        return self::$openAPITypes;
387    }
388
389    /**
390     * Array of property to format mappings. Used for (de)serialization.
391     */
392    public static function openAPIFormats(): array
393    {
394        return self::$openAPIFormats;
395    }
396
397    /**
398     * Checks if a property is nullable.
399     *
400     */
401    public static function isNullable(string $property): bool
402    {
403        return self::openAPINullables()[$property] ?? false;
404    }
405
406    /**
407     * Checks if a nullable property is set to null.
408     *
409     */
410    public function isNullableSetToNull(string $property): bool
411    {
412        return in_array($property, $this->getOpenAPINullablesSetToNull(), true);
413    }
414
415    /**
416     * Array of attributes where the key is the local name,
417     * and the value is the original name.
418     *
419     */
420    public static function attributeMap(): array
421    {
422        return self::$attributeMap;
423    }
424
425    /**
426     * Array of attributes to setter functions (for deserialization of responses).
427     *
428     */
429    public static function setters(): array
430    {
431        return self::$setters;
432    }
433
434    /**
435     * Array of attributes to getter functions (for serialization of requests).
436     *
437     */
438    public static function getters(): array
439    {
440        return self::$getters;
441    }
442
443    /**
444     * The original name of the model.
445     *
446     */
447    public function getModelName(): string
448    {
449        return self::$openAPIModelName;
450    }
451
452    /**
453     * Show all the invalid properties with reasons.
454     *
455     * @return array invalid properties with reasons
456     */
457    public function listInvalidProperties(): array
458    {
459        $invalidProperties = [];
460
461        if (!is_null($this->container['device_memory']) && ($this->container['device_memory'] < 0)) {
462            $invalidProperties[] = "invalid value for 'device_memory', must be bigger than or equal to 0.";
463        }
464
465        if (!is_null($this->container['screen_resolution']) && (count($this->container['screen_resolution']) > 2)) {
466            $invalidProperties[] = "invalid value for 'screen_resolution', number of items must be less than or equal to 2.";
467        }
468
469        if (!is_null($this->container['screen_resolution']) && (count($this->container['screen_resolution']) < 2)) {
470            $invalidProperties[] = "invalid value for 'screen_resolution', number of items must be greater than or equal to 2.";
471        }
472
473        if (!is_null($this->container['battery_level']) && ($this->container['battery_level'] > 100)) {
474            $invalidProperties[] = "invalid value for 'battery_level', must be smaller than or equal to 100.";
475        }
476
477        if (!is_null($this->container['battery_level']) && ($this->container['battery_level'] < 0)) {
478            $invalidProperties[] = "invalid value for 'battery_level', must be bigger than or equal to 0.";
479        }
480
481        return $invalidProperties;
482    }
483
484    /**
485     * Validate all the properties in the model
486     * return true if all passed.
487     *
488     * @return bool True if all properties are valid
489     */
490    public function valid(): bool
491    {
492        return 0 === count($this->listInvalidProperties());
493    }
494
495    /**
496     * Gets font_preferences.
497     *
498     */
499    public function getFontPreferences(): ?FontPreferences
500    {
501        return $this->container['font_preferences'];
502    }
503
504    /**
505     * Sets font_preferences.
506     *
507     * @param FontPreferences $font_preferences font_preferences
508     *
509     */
510    public function setFontPreferences(FontPreferences $font_preferences): self
511    {
512        $this->container['font_preferences'] = $font_preferences;
513
514        return $this;
515    }
516
517    /**
518     * Gets emoji.
519     *
520     */
521    public function getEmoji(): ?Emoji
522    {
523        return $this->container['emoji'];
524    }
525
526    /**
527     * Sets emoji.
528     *
529     * @param Emoji $emoji emoji
530     *
531     */
532    public function setEmoji(Emoji $emoji): self
533    {
534        $this->container['emoji'] = $emoji;
535
536        return $this;
537    }
538
539    /**
540     * Gets fonts.
541     *
542     * @return string[]|null
543     */
544    public function getFonts(): ?array
545    {
546        return $this->container['fonts'];
547    }
548
549    /**
550     * Sets fonts.
551     *
552     * @param string[] $fonts list of fonts detected on the device
553     *
554     */
555    public function setFonts(array $fonts): self
556    {
557        $this->container['fonts'] = $fonts;
558
559        return $this;
560    }
561
562    /**
563     * Gets device_memory.
564     *
565     */
566    public function getDeviceMemory(): ?int
567    {
568        return $this->container['device_memory'];
569    }
570
571    /**
572     * Sets device_memory.
573     *
574     * @param int $device_memory Rounded amount of RAM in gigabytes. Available for browsers, Android, and iOS devices.
575     *
576     */
577    public function setDeviceMemory(int $device_memory): self
578    {
579        if ($device_memory < 0) {
580            throw new \InvalidArgumentException('invalid value for $device_memory when calling RawDeviceAttributes., must be bigger than or equal to 0.');
581        }
582
583        $this->container['device_memory'] = $device_memory;
584
585        return $this;
586    }
587
588    /**
589     * Gets timezone.
590     *
591     */
592    public function getTimezone(): ?string
593    {
594        return $this->container['timezone'];
595    }
596
597    /**
598     * Sets timezone.
599     *
600     * @param string $timezone timezone identifier detected on the client
601     *
602     */
603    public function setTimezone(string $timezone): self
604    {
605        $this->container['timezone'] = $timezone;
606
607        return $this;
608    }
609
610    /**
611     * Gets canvas.
612     *
613     */
614    public function getCanvas(): ?Canvas
615    {
616        return $this->container['canvas'];
617    }
618
619    /**
620     * Sets canvas.
621     *
622     * @param Canvas $canvas canvas
623     *
624     */
625    public function setCanvas(Canvas $canvas): self
626    {
627        $this->container['canvas'] = $canvas;
628
629        return $this;
630    }
631
632    /**
633     * Gets languages.
634     *
635     * @return string[][]|null
636     */
637    public function getLanguages(): ?array
638    {
639        return $this->container['languages'];
640    }
641
642    /**
643     * Sets languages.
644     *
645     * @param string[][] $languages Navigator languages reported by the agent including fallbacks. Each inner array represents ordered language preferences reported by different APIs. Available for browsers, iOS, and Android devices.
646     *
647     */
648    public function setLanguages(array $languages): self
649    {
650        $this->container['languages'] = $languages;
651
652        return $this;
653    }
654
655    /**
656     * Gets webgl_extensions.
657     *
658     */
659    public function getWebglExtensions(): ?WebGlExtensions
660    {
661        return $this->container['webgl_extensions'];
662    }
663
664    /**
665     * Sets webgl_extensions.
666     *
667     * @param WebGlExtensions $webgl_extensions webgl_extensions
668     *
669     */
670    public function setWebglExtensions(WebGlExtensions $webgl_extensions): self
671    {
672        $this->container['webgl_extensions'] = $webgl_extensions;
673
674        return $this;
675    }
676
677    /**
678     * Gets webgl_basics.
679     *
680     */
681    public function getWebglBasics(): ?WebGlBasics
682    {
683        return $this->container['webgl_basics'];
684    }
685
686    /**
687     * Sets webgl_basics.
688     *
689     * @param WebGlBasics $webgl_basics webgl_basics
690     *
691     */
692    public function setWebglBasics(WebGlBasics $webgl_basics): self
693    {
694        $this->container['webgl_basics'] = $webgl_basics;
695
696        return $this;
697    }
698
699    /**
700     * Gets screen_resolution.
701     *
702     * @return int[]|null
703     */
704    public function getScreenResolution(): ?array
705    {
706        return $this->container['screen_resolution'];
707    }
708
709    /**
710     * Sets screen_resolution.
711     *
712     * @param int[] $screen_resolution Current screen resolution. Available for both browsers and iOS devices
713     *
714     */
715    public function setScreenResolution(array $screen_resolution): self
716    {
717        if (count($screen_resolution) > 2) {
718            throw new \InvalidArgumentException('invalid value for $screen_resolution when calling RawDeviceAttributes., number of items must be less than or equal to 2.');
719        }
720        if (count($screen_resolution) < 2) {
721            throw new \InvalidArgumentException('invalid length for $screen_resolution when calling RawDeviceAttributes., number of items must be greater than or equal to 2.');
722        }
723        $this->container['screen_resolution'] = $screen_resolution;
724
725        return $this;
726    }
727
728    /**
729     * Gets touch_support.
730     *
731     */
732    public function getTouchSupport(): ?TouchSupport
733    {
734        return $this->container['touch_support'];
735    }
736
737    /**
738     * Sets touch_support.
739     *
740     * @param TouchSupport $touch_support touch_support
741     *
742     */
743    public function setTouchSupport(TouchSupport $touch_support): self
744    {
745        $this->container['touch_support'] = $touch_support;
746
747        return $this;
748    }
749
750    /**
751     * Gets oscpu.
752     *
753     */
754    public function getOscpu(): ?string
755    {
756        return $this->container['oscpu'];
757    }
758
759    /**
760     * Sets oscpu.
761     *
762     * @param string $oscpu navigator `oscpu` string
763     *
764     */
765    public function setOscpu(string $oscpu): self
766    {
767        $this->container['oscpu'] = $oscpu;
768
769        return $this;
770    }
771
772    /**
773     * Gets architecture.
774     *
775     */
776    public function getArchitecture(): ?int
777    {
778        return $this->container['architecture'];
779    }
780
781    /**
782     * Sets architecture.
783     *
784     * @param int $architecture integer representing the CPU architecture exposed by the browser
785     *
786     */
787    public function setArchitecture(int $architecture): self
788    {
789        $this->container['architecture'] = $architecture;
790
791        return $this;
792    }
793
794    /**
795     * Gets cookies_enabled.
796     *
797     */
798    public function getCookiesEnabled(): ?bool
799    {
800        return $this->container['cookies_enabled'];
801    }
802
803    /**
804     * Sets cookies_enabled.
805     *
806     * @param bool $cookies_enabled whether the cookies are enabled in the browser
807     *
808     */
809    public function setCookiesEnabled(bool $cookies_enabled): self
810    {
811        $this->container['cookies_enabled'] = $cookies_enabled;
812
813        return $this;
814    }
815
816    /**
817     * Gets hardware_concurrency.
818     *
819     */
820    public function getHardwareConcurrency(): ?int
821    {
822        return $this->container['hardware_concurrency'];
823    }
824
825    /**
826     * Sets hardware_concurrency.
827     *
828     * @param int $hardware_concurrency number of logical CPU cores reported by the browser
829     *
830     */
831    public function setHardwareConcurrency(int $hardware_concurrency): self
832    {
833        $this->container['hardware_concurrency'] = $hardware_concurrency;
834
835        return $this;
836    }
837
838    /**
839     * Gets date_time_locale.
840     *
841     */
842    public function getDateTimeLocale(): ?string
843    {
844        return $this->container['date_time_locale'];
845    }
846
847    /**
848     * Sets date_time_locale.
849     *
850     * @param string $date_time_locale Locale derived from the Intl.DateTimeFormat API. Negative values indicate known error states. The negative statuses can be: - \"-1\": A permanent status for browsers that don't support Intl API. - \"-2\": A permanent status for browsers that don't supportDateTimeFormat constructor. - \"-3\": A permanent status for browsers in which DateTimeFormat locale is undefined or null.
851     *
852     */
853    public function setDateTimeLocale(string $date_time_locale): self
854    {
855        $this->container['date_time_locale'] = $date_time_locale;
856
857        return $this;
858    }
859
860    /**
861     * Gets vendor.
862     *
863     */
864    public function getVendor(): ?string
865    {
866        return $this->container['vendor'];
867    }
868
869    /**
870     * Sets vendor.
871     *
872     * @param string $vendor navigator vendor string
873     *
874     */
875    public function setVendor(string $vendor): self
876    {
877        $this->container['vendor'] = $vendor;
878
879        return $this;
880    }
881
882    /**
883     * Gets color_depth.
884     *
885     */
886    public function getColorDepth(): ?int
887    {
888        return $this->container['color_depth'];
889    }
890
891    /**
892     * Sets color_depth.
893     *
894     * @param int $color_depth screen color depth in bits
895     *
896     */
897    public function setColorDepth(int $color_depth): self
898    {
899        $this->container['color_depth'] = $color_depth;
900
901        return $this;
902    }
903
904    /**
905     * Gets platform.
906     *
907     */
908    public function getPlatform(): ?string
909    {
910        return $this->container['platform'];
911    }
912
913    /**
914     * Sets platform.
915     *
916     * @param string $platform navigator platform string
917     *
918     */
919    public function setPlatform(string $platform): self
920    {
921        $this->container['platform'] = $platform;
922
923        return $this;
924    }
925
926    /**
927     * Gets session_storage.
928     *
929     */
930    public function getSessionStorage(): ?bool
931    {
932        return $this->container['session_storage'];
933    }
934
935    /**
936     * Sets session_storage.
937     *
938     * @param bool $session_storage whether sessionStorage is available
939     *
940     */
941    public function setSessionStorage(bool $session_storage): self
942    {
943        $this->container['session_storage'] = $session_storage;
944
945        return $this;
946    }
947
948    /**
949     * Gets local_storage.
950     *
951     */
952    public function getLocalStorage(): ?bool
953    {
954        return $this->container['local_storage'];
955    }
956
957    /**
958     * Sets local_storage.
959     *
960     * @param bool $local_storage whether localStorage is available
961     *
962     */
963    public function setLocalStorage(bool $local_storage): self
964    {
965        $this->container['local_storage'] = $local_storage;
966
967        return $this;
968    }
969
970    /**
971     * Gets audio.
972     *
973     */
974    public function getAudio(): ?float
975    {
976        return $this->container['audio'];
977    }
978
979    /**
980     * Sets audio.
981     *
982     * @param float $audio AudioContext fingerprint or negative status when unavailable. The negative statuses can be: - -1: A permanent status for those browsers which are known to always suspend audio context - -2: A permanent status for browsers that don't support the signal - -3: A temporary status that means that an unexpected timeout has happened
983     *
984     */
985    public function setAudio(float $audio): self
986    {
987        $this->container['audio'] = $audio;
988
989        return $this;
990    }
991
992    /**
993     * Gets plugins.
994     *
995     * @return PluginsInner[]|null
996     */
997    public function getPlugins(): ?array
998    {
999        return $this->container['plugins'];
1000    }
1001
1002    /**
1003     * Sets plugins.
1004     *
1005     * @param PluginsInner[] $plugins Browser plugins reported by `navigator.plugins`.
1006     *
1007     */
1008    public function setPlugins(array $plugins): self
1009    {
1010        $this->container['plugins'] = $plugins;
1011
1012        return $this;
1013    }
1014
1015    /**
1016     * Gets indexed_db.
1017     *
1018     */
1019    public function getIndexedDb(): ?bool
1020    {
1021        return $this->container['indexed_db'];
1022    }
1023
1024    /**
1025     * Sets indexed_db.
1026     *
1027     * @param bool $indexed_db whether IndexedDB is available
1028     *
1029     */
1030    public function setIndexedDb(bool $indexed_db): self
1031    {
1032        $this->container['indexed_db'] = $indexed_db;
1033
1034        return $this;
1035    }
1036
1037    /**
1038     * Gets math.
1039     *
1040     */
1041    public function getMath(): ?string
1042    {
1043        return $this->container['math'];
1044    }
1045
1046    /**
1047     * Sets math.
1048     *
1049     * @param string $math hash of Math APIs used for entropy collection
1050     *
1051     */
1052    public function setMath(string $math): self
1053    {
1054        $this->container['math'] = $math;
1055
1056        return $this;
1057    }
1058
1059    /**
1060     * Gets device_model.
1061     *
1062     */
1063    public function getDeviceModel(): ?string
1064    {
1065        return $this->container['device_model'];
1066    }
1067
1068    /**
1069     * Sets device_model.
1070     *
1071     * @param string $device_model Device model string. Available only for Android and iOS devices.
1072     *
1073     */
1074    public function setDeviceModel(string $device_model): self
1075    {
1076        $this->container['device_model'] = $device_model;
1077
1078        return $this;
1079    }
1080
1081    /**
1082     * Gets device_manufacturer.
1083     *
1084     */
1085    public function getDeviceManufacturer(): ?string
1086    {
1087        return $this->container['device_manufacturer'];
1088    }
1089
1090    /**
1091     * Sets device_manufacturer.
1092     *
1093     * @param string $device_manufacturer Device manufacturer string. Available only for Android and iOS devices.
1094     *
1095     */
1096    public function setDeviceManufacturer(string $device_manufacturer): self
1097    {
1098        $this->container['device_manufacturer'] = $device_manufacturer;
1099
1100        return $this;
1101    }
1102
1103    /**
1104     * Gets font_hash.
1105     *
1106     */
1107    public function getFontHash(): ?string
1108    {
1109        return $this->container['font_hash'];
1110    }
1111
1112    /**
1113     * Sets font_hash.
1114     *
1115     * @param string $font_hash unique identifier for the user’s installed fonts
1116     *
1117     */
1118    public function setFontHash(string $font_hash): self
1119    {
1120        $this->container['font_hash'] = $font_hash;
1121
1122        return $this;
1123    }
1124
1125    /**
1126     * Gets timezone_offset.
1127     *
1128     */
1129    public function getTimezoneOffset(): ?string
1130    {
1131        return $this->container['timezone_offset'];
1132    }
1133
1134    /**
1135     * Sets timezone_offset.
1136     *
1137     * @param string $timezone_offset UTC offset in \"±HH:MM\" format derived from the detected IANA timezone
1138     *
1139     */
1140    public function setTimezoneOffset(string $timezone_offset): self
1141    {
1142        $this->container['timezone_offset'] = $timezone_offset;
1143
1144        return $this;
1145    }
1146
1147    /**
1148     * Gets battery_level.
1149     *
1150     */
1151    public function getBatteryLevel(): ?int
1152    {
1153        return $this->container['battery_level'];
1154    }
1155
1156    /**
1157     * Sets battery_level.
1158     *
1159     * @param int $battery_level Battery charge level as a percentage (0-100). Available for Android, iOS, and web devices. On web, only available in Chromium-based browsers.
1160     *
1161     */
1162    public function setBatteryLevel(int $battery_level): self
1163    {
1164        if ($battery_level > 100) {
1165            throw new \InvalidArgumentException('invalid value for $battery_level when calling RawDeviceAttributes., must be smaller than or equal to 100.');
1166        }
1167        if ($battery_level < 0) {
1168            throw new \InvalidArgumentException('invalid value for $battery_level when calling RawDeviceAttributes., must be bigger than or equal to 0.');
1169        }
1170
1171        $this->container['battery_level'] = $battery_level;
1172
1173        return $this;
1174    }
1175
1176    /**
1177     * Gets battery_charging.
1178     *
1179     */
1180    public function getBatteryCharging(): ?bool
1181    {
1182        return $this->container['battery_charging'];
1183    }
1184
1185    /**
1186     * Sets battery_charging.
1187     *
1188     * @param bool $battery_charging When `true`, the device is currently charging. Available only for web devices on Chromium-based browsers.
1189     *
1190     */
1191    public function setBatteryCharging(bool $battery_charging): self
1192    {
1193        $this->container['battery_charging'] = $battery_charging;
1194
1195        return $this;
1196    }
1197
1198    /**
1199     * Gets battery_low_power_mode.
1200     *
1201     */
1202    public function getBatteryLowPowerMode(): ?bool
1203    {
1204        return $this->container['battery_low_power_mode'];
1205    }
1206
1207    /**
1208     * Sets battery_low_power_mode.
1209     *
1210     * @param bool $battery_low_power_mode Whether the device's low power mode is enabled. Available only for Android and iOS devices.
1211     *
1212     */
1213    public function setBatteryLowPowerMode(bool $battery_low_power_mode): self
1214    {
1215        $this->container['battery_low_power_mode'] = $battery_low_power_mode;
1216
1217        return $this;
1218    }
1219
1220    /**
1221     * Gets keyboard_layout_hash.
1222     *
1223     */
1224    public function getKeyboardLayoutHash(): ?string
1225    {
1226        return $this->container['keyboard_layout_hash'];
1227    }
1228
1229    /**
1230     * Sets keyboard_layout_hash.
1231     *
1232     * @param string $keyboard_layout_hash unique identifier for the user's keyboard layout
1233     *
1234     */
1235    public function setKeyboardLayoutHash(string $keyboard_layout_hash): self
1236    {
1237        $this->container['keyboard_layout_hash'] = $keyboard_layout_hash;
1238
1239        return $this;
1240    }
1241
1242    /**
1243     * Returns true if offset exists. False otherwise.
1244     *
1245     * @param int|string $offset Offset
1246     *
1247     */
1248    public function offsetExists(mixed $offset): bool
1249    {
1250        return isset($this->container[$offset]);
1251    }
1252
1253    /**
1254     * Gets offset.
1255     *
1256     * @param int|string $offset Offset
1257     *
1258     * @return mixed|null
1259     */
1260    #[\ReturnTypeWillChange]
1261    public function offsetGet(mixed $offset): mixed
1262    {
1263        return $this->container[$offset] ?? null;
1264    }
1265
1266    /**
1267     * Sets value based on offset.
1268     *
1269     * @param int|null $offset Offset
1270     * @param mixed    $value  Value to be set
1271     *
1272     */
1273    public function offsetSet(mixed $offset, mixed $value): void
1274    {
1275        if (is_null($offset)) {
1276            $this->container[] = $value;
1277        } else {
1278            $this->container[$offset] = $value;
1279        }
1280    }
1281
1282    /**
1283     * Unsets offset.
1284     *
1285     * @param int|string $offset Offset
1286     *
1287     */
1288    public function offsetUnset(mixed $offset): void
1289    {
1290        unset($this->container[$offset]);
1291    }
1292
1293    /**
1294     * Serializes the object to a value that can be serialized natively by json_encode().
1295     *
1296     * @see https://www.php.net/manual/en/jsonserializable.jsonserialize.php
1297     *
1298     * @return mixed returns data which can be serialized by json_encode(), which is a value
1299     *               of any type other than a resource
1300     */
1301    #[\ReturnTypeWillChange]
1302    public function jsonSerialize(): mixed
1303    {
1304        return ObjectSerializer::sanitizeForSerialization($this);
1305    }
1306
1307    /**
1308     * Gets a header-safe presentation of the object.
1309     *
1310     */
1311    public function toHeaderValue(): string
1312    {
1313        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
1314    }
1315
1316    /**
1317     * Array of nullable properties.
1318     */
1319    protected static function openAPINullables(): array
1320    {
1321        return self::$openAPINullables;
1322    }
1323
1324    /**
1325     * Array of nullable field names deliberately set to null.
1326     *
1327     * @return bool[]
1328     */
1329    private function getOpenAPINullablesSetToNull(): array
1330    {
1331        return $this->openAPINullablesSetToNull;
1332    }
1333
1334    /**
1335     * Setter - Array of nullable field names deliberately set to null.
1336     *
1337     * @param bool[] $openAPINullablesSetToNull
1338     *
1339     * @codeCoverageIgnore
1340     */
1341    private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void
1342    {
1343        $this->openAPINullablesSetToNull = $openAPINullablesSetToNull;
1344    }
1345
1346    /**
1347     * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName
1348     * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the
1349     * $this->openAPINullablesSetToNull array.
1350     *
1351     * @noinspection PhpSameParameterValueInspection
1352     */
1353    private function setIfExists(string $variableName, array $fields, mixed $defaultValue): void
1354    {
1355        if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) {
1356            $this->openAPINullablesSetToNull[] = $variableName; // @codeCoverageIgnore
1357        }
1358
1359        $this->container[$variableName] = $fields[$variableName] ?? $defaultValue;
1360    }
1361}