Do `@propagate_inbounds` stack together?

The documentation says that @propagate_inbounds add additional layer of inlining for eliding @boundscheck blocks. That means, that if you have more than two levels of inlining, eliding does not work.

If the function at each level of inlining is decorated with @propagate_inbounds, does it allow to extend the maximum level of inlining for eliding @boundscheck blocks indefinitely? Or, paraphrasing it, do @propagate_inbounds stack together?

The reason I am asking is the following. Besides the default style of indexing to my custom structures, I would like to add additional style of indexing. To keep it simple, I want first to transform the index to default style and then to call the existing getindex implementation which actually performs the boundschecking. But the transformation adds additional layers of inlining to the boundschecking.

Also, another question.
If I use @propagate_inbounds macro, do I need to use @inline macro for the function definition, or the former includes the latter under the hood?

Or, paraphrasing it, do @propagate_inbounds stack together?

Yes.

If I use @propagate_inbounds macro, do I need to use @inline macro for the function definition

No.