So I've been doing some prototyping for facial rig structure, and one of the the key changes is that certain nodes can exist between input and output interface nodes. If you don't know what I mean by that take a look at "Cult of Rig".
I need nodes between them in order to remap driven behavior (like having the inner brow control pull the mid brow control at a certain rate, or change how a corrective blendShape interpolates). I'm using animCurves for this because they can have constant or linear tangents at the end.
I also need nodes between them to add together those driver values (for example the mid brow control is driven by the inner control and the main brow control). Ideally I would have an array input and then add up the inputs inside of the component, but you can't connect array attributes to array attributes (only compound to compound). So plusMinusAverage nodes are also allowed to be between input output nodes.
And there's one more type of node that I want to be able to use between outputs and inputs, a combo node. For combo blendShapes you would have two driver values multiplied together (or you might take the min). There are three nodes that can do this: floathMath, multiplyDivide, and multDoubleLinear, but all of these can only handle two drivers. That's fine for most combos but you may have a combo with more drivers (like mouthCorner out, mouthCorner up, and jaw down). You could use multiple nodes to handle all the drivers but it would be much cleaner to use a single node that can handle all the drivers at once.
So I created a custom node that works like the floathMath node but handles an array of inputs. I implimented all of the operations even though I only think that multiply, min, and max would be useful (though there may be some fringe case where divide or power would be useful).
Not a very complicated DG node but it'll help me out a lot and maybe someone will find it helpful as an example.