Arrays are 'deep' compared/hashCoded, which means that arrays that contain themselves will result in StackOverflowErrors. However,
this behaviour is no different from e.g. ArrayList.
You may safely presume that the hashCode implementation used will not change between versions of lombok, however this guarantee is not set in stone;
if there's a significant performance improvement to be gained from using an alternate hash algorithm, that will be substituted in a future version.
For the purposes of equality, 2 NaN (not a number) values for floats and doubles are considered equal, eventhough 'NaN == NaN' would
return false. This is analogous to java.lang.Double's equals method, and is in fact required to ensure that comparing an object
to an exact copy of itself returns true for equality.
If there is any method named either hashCode or equals, regardless of parameters or return type,
that method will not be generated, and a warning is emitted instead. hashCode and equals need to be in sync with
each other, which lombok cannot guarantee if it is only generating one of the two methods, hence you always get a warning if one or both
of the methods already exist.
Attempting to exclude fields that don't exist or would have been excluded anyway (because they are static or transient) results in warnings on the named fields.
You therefore don't have to worry about typos.
Having both exclude and of generates a warning; the exclude parameter will be ignored in that case.
By default, any variables that start with a $ symbol are excluded automatically. You can only include them by using the 'of' parameter.