@Override
            public boolean next() {
                if (mapLocationIterator.hasNext()) {
                    final BytesToBytesMap.Location loc = mapLocationIterator.next();
                    final MemoryLocation keyAddress = loc.getKeyAddress();
                    final MemoryLocation valueAddress = loc.getValueAddress();
                    key.pointTo(
                            keyAddress.getBaseObject(),
                            keyAddress.getBaseOffset(),
                            loc.getKeyLength()
                    );
                    value.pointTo(
                            valueAddress.getBaseObject(),
                            valueAddress.getBaseOffset(),
                            loc.getValueLength()
                    );
                    return true;
                } else {
                    return false;
                }
            }
Returns an iterator over the keys and values in this map. This uses destructive iterator of
BytesToBytesMap. So it is illegal to call any other method on this map after `iterator()` has
been called.

For efficiency, each call returns the same object.
indexr-query-opt/src/main/java/org/apache/spark/sql/execution/UnsafeFixedWidthAggregationMap.java