Obtains a Node instance. If there are currently free nodes, one of these is used, otherwise a new Node instance is created.
Creates a new node. May be overridden by a subclass to use a different allocation method.
Adds node to the list of free nodes.
Resets the maintained list of free nodes so that the pool becomes empty.
Default node pool implementation