Okay, I understand. Two things here:
1. You would not need to modify Project itself as well. It stores the recId in RelCacheTable entry and you can easily find it from there.
2. What I think is the reason is, it's the DESIGN itself. If you look carefully, BlockAccess calls BPlusTree, but BPlusTree does not call BlockAccess, solely because that's how the object-oriented design is laid out. Also note that, it is completely possible for you to do so, I have tested the same, but we don't because that's how the design is laid out. Higher level modules will call lower level modules, but not vice-versa.
Hope this helps.