BlockManager and ShuffleManager = can getLocalBytes be ever used for shuffle blocks?
While trying to understand the relationship of BlockManager and ShuffleManager I found that ShuffleManager is used for shuffle block data  (and that makes sense).
What I found quite surprising is that BlockManager can call getLocalBytes for non-shuffle blocks that in turn does...fetching shuffle blocks (!) .
That begs the question, who could want this? In other words, what other components would want to call BlockManager.getLocalBytes for shuffle blocks? The only caller is TorrentBroadcast which is not for shuffle blocks, is it?
In other words, getLocalBytes should NOT be bothering itself with fetching local shuffle blocks as that's a responsibility of someone else, i.e. ShuffleManager.
Is this correct?
I'd appreciate any help you can provide so I can understand the Spark core better. Thanks!