If I understood well, extension and leaf nodes should be used when there are shared nibbles, and branch nodes when there are differences.
Which type of node should be used when storing a different nibble and a shared one at the same point?
For instance, what would be the type of node used in the root for these data:
'ac4f' : 'data1', //shared nibbles 'ac'
'ac03' : 'data2', //shared nibbles 'ac'
'5e5f' : 'data3' //different nibble '5'