hollow/src/main/java/com/netflix/hollow/core/memory/encoding/FixedLengthMultipleOccurrenceElementArray.java
public List<Long> getElements(long nodeIndex) {
        long bucketStart = nodeIndex * maxElementsPerNode * bitsPerElement;
        List<Long> ret = new ArrayList<>();
        if (nodesWithOrdinalZero.getElementValue(nodeIndex, 1, 1) != NO_ELEMENT) {
            // 0 indicates an "empty" element, so we fetch ordinal zeros from nodesWithOrdinalZero
            ret.add(NO_ELEMENT);
        }
        for (int offset = 0; offset < maxElementsPerNode; offset++) {
            long element = storage.getElementValue(bucketStart + offset * bitsPerElement,
                    bitsPerElement, elementMask);
            if (element == NO_ELEMENT) {
                break; // we have exhausted the elements at this index
            }
            ret.add(element);
        }
        return ret;
    }
public List<Long> getElements(long nodeIndex) {
        long bucketStart = nodeIndex * maxElementsPerNode * bitsPerElement;
        List<Long> ret = new ArrayList<>();
        if (nodesWithOrdinalZero.getElementValue(nodeIndex, 1, 1) != NO_ELEMENT) {
            // 0 indicates an "empty" element, so we fetch ordinal zeros from nodesWithOrdinalZero
            ret.add(NO_ELEMENT);
        }
        for (int offset = 0; offset < maxElementsPerNode; offset++) {
            long element = storage.getElementValue(bucketStart + offset * bitsPerElement,
                    bitsPerElement, elementMask);
            if (element == NO_ELEMENT) {
                break; // we have exhausted the elements at this index
            }
            ret.add(element);
        }
        return ret;
    }
public List < Long > getElements ( long nodeIndex ) { long bucketStart = nodeIndex * maxElementsPerNode * bitsPerElement ; List < Long > ret = new ArrayList <> ( ) ; if ( nodesWithOrdinalZero . getElementValue ( nodeIndex , 1 , 1 ) != NO_ELEMENT ) { // 0 indicates an "empty" element, so we fetch ordinal zeros from nodesWithOrdinalZero ret . add ( NO_ELEMENT ) ; } for ( int offset = 0 ; offset < maxElementsPerNode ; offset ++ ) { long element = storage . getElementValue ( bucketStart + offset * bitsPerElement , bitsPerElement , elementMask ) ; if ( element == NO_ELEMENT ) { break ; // we have exhausted the elements at this index } ret . add ( element ) ; } return ret ; }
Return a list of elements at the specified node index. The returned list may contain
duplicates.
This method not thread-safe - the caller must ensure that no one calls {@link #addElement}
concurrently with this method, but calling this method concurrently with itself is safe.

@param nodeIndex the node index
@return a list of element at the node index
Return a list of elements at the specified node index . The returned list may contain duplicates . This method not thread - safe - the caller must ensure that no one calls { @link #addElement } concurrently with this method but calling this method concurrently with itself is safe .