> No, the DIP doesn't handle several levels of indirection.
What about:
struct Bar { int a; int b }
auto rcs = RefCountedTree!(string,Bar)();
fcs["bar"].a = 1337; // log n
fcs["bar"].b = 1338; // log n
? I need to pay log n twice to assign two members