Each inference step stores independently the input and output of each node in StepData. That means the output of node i is stored twice, once as the output of node i and once as the input of node i+1.
Goal would be to remove that redundancy and just store a pointer or an easy way to access the relevant data.