if (propertyNames.length != previousState.length
&& previousState.length != currentState.length)
(1 != 2) && (2 != 3) -> true ok
(1 != 1) && (1 != 2) -> false !!! WRONG should be true
(1 != 2) && (2 != 2) -> false !!! WRONG should be true
(1 != 1) && (1 != 1) -> false ok
should be
if (propertyNames.length != previousState.length
|| previousState.length != currentState.length)
(1 != 2) || (2 != 3) -> true ok
(1 != 1) || (1 != 2) -> true ok
(1 != 2) || (2 != 2) -> true ok
(1 != 1) || (1 != 1) -> false ok |