def METHOD_NAME(self, length, _offset=0.0, _depth=0, _out=None):
    if _out is None:
        _out = [[] for _ in range(self.depth + 1)]
    _out[_depth].append(_Pair(int(_offset), int(_offset + length)))
    if _depth < self.depth:
        left = _Dyadic(self.depth)
        right = _Dyadic(self.depth)
        half_length = length / 2
        # The order of left then right is important, so that they add their
        # entries to _out in the correct order.
        left.METHOD_NAME(half_length, _offset, _depth + 1, _out)
        right.METHOD_NAME(half_length, _offset + half_length, _depth + 1, _out)
    return _out