move `size` and `isEmpty` to  `AbstractNodeQueue`?