Hi,
The plan nodes were a way to express an execution plan in Java and C++. Some of them had stuff in common so rather than have redundant fields we had inlined nodes. The "outer" node determines what executor is instantiated in the EE, but part of the configuration may come from one of the inlined nodes. NestLoopIndexExecutor for instance has to scan an index so it has an index scan node to carry all the associated config for an index scan.
It ends up being clear as mud anyways. Straight JSON probably would have been better.
Ariel